From owner-freebsd-current Mon Apr 1 19:47:21 1996 Return-Path: owner-current Received: (from root@localhost) by freefall.freebsd.org (8.7.3/8.7.3) id TAA00110 for current-outgoing; Mon, 1 Apr 1996 19:47:21 -0800 (PST) Received: from ref.tfs.com (ref.tfs.com [140.145.254.251]) by freefall.freebsd.org (8.7.3/8.7.3) with ESMTP id TAA29962 for ; Mon, 1 Apr 1996 19:47:13 -0800 (PST) Received: (from julian@localhost) by ref.tfs.com (8.7.3/8.6.9) id MAA04976; Mon, 1 Apr 1996 12:01:45 -0800 (PST) Message-Id: <199604012001.MAA04976@ref.tfs.com> Subject: Re: ed_start() bug...more information To: scrappy@ki.net (Marc G. Fournier) Date: Mon, 1 Apr 1996 12:01:45 -0800 (PST) From: "JULIAN Elischer" Cc: current@freebsd.org In-Reply-To: from "Marc G. Fournier" at Apr 1, 96 01:43:28 pm X-Mailer: ELM [version 2.4 PL25 ME8b] MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Sender: owner-current@freebsd.org X-Loop: FreeBSD.org Precedence: bulk Ok, I can't see a reason for the trap.. [...] > #17 0xf01a483f in trap (frame={tf_es = -267190256, tf_ds = -266534896, > tf_edi = -267583428, tf_esi = -266477172, tf_ebp = -266560020, > tf_isp = -266560076, tf_ebx = 656, tf_edx = 662, tf_ecx = 662, > tf_eax = -267583488, tf_trapno = 12, tf_err = -266665984, > tf_eip = -266652479, tf_cs = -267583480, tf_eflags = 66134, > tf_esp = -1073610752, tf_ss = -258322176}) at ../../i386/i386/trap.c:319 > #18 0xf019d1b1 in calltrap () > #19 0xf01387d5 in ether_output (ifp=0xf01de18c, m0=0xf09a5100, dst=0xf09c5d70, > rt0=0xf099ab00) at ../../net/if_ethersubr.c:307 > #20 0xf0141ee1 in ip_output (m0=0xf09a5100, opt=0x0, ro=0xf09b5d2c, flags=0, [...] > (kgdb) frame frame->tf_ebp frame->tf_eip > #0 ed_start (ifp=0xf01de18c) at ../../i386/isa/if_ed.c:1744 > 1744 outb(sc->nic_addr + ED_P0_CR, sc->cr_proto | ED_CR_TXP | ED_CR_STA); > (kgdb) list > 1739 outb(sc->nic_addr + ED_P0_TBCR1, len >> 8); > 1740 > 1741 /* > 1742 * Set page 0, Remote DMA complete, Transmit Packet, and *Start* > 1743 */ > 1744 outb(sc->nic_addr + ED_P0_CR, sc->cr_proto | ED_CR_TXP | ED_CR_STA); eh? sc seems ok, so what else could be needed? maybe the optimisation is catching us... maybe we're actually on the next line or somewhere else nearby.. remember that -O and -g together give a result that is ok MOSTof the time, but CAN be 'only approximate' some times.... if you can compile if_ed.c without the -O it might be worth it... > 1745 sc->xmit_busy = 1; > 1746 > 1747 /* > 1748 * Point to next transmit buffer slot and wrap if necessary. > (kgdb) print sc > $1 = (struct ed_softc *) 0xf0905000 > (kgdb) print sc->nic_addr > $2 = 61575 looks fine to me.... julian