[Top] [All Lists]

Re: interrupts

To: Thomas Riemer <>
Subject: Re: interrupts
Date: Mon, 28 Dec 1998 08:43:14 +0100
In-reply-to: <>; from Thomas Riemer on Sat, Dec 26, 1998 at 02:01:17AM -0500
References: <> <>
On Sat, Dec 26, 1998 at 02:01:17AM -0500, Thomas Riemer wrote:

> Apparently it breaks at epc: 8004f708 looking this up in
> I find its in the function do_ade in arch/mips/kernel/unaligned.c
> What does is the function do_ade supposed to do?

It's supposed to be a machine specific address error handler.  Since it is
machine specific a general definition for what it is supposed to do cannot
be given.  But here are examples:

 - On many machines a IBE / DBE is never being signaled by the chipset.  Or
   at least the documentation says so ...  So if we ever get this exception
   all that can be done is printing a register dump and die.
 - On other machines the board signals a IBE / DBE when the address on the
   SysAD bus is bad, that is it does not corrospond to any hardware in the
   system.  This can for example be used in probing for hardware.  Staying
   with our example of the Indy we can for example use it to probe if a
   graphics card exists in the system or not.  If not we get signalled a
   DBE error.
 - On the Mips Magnum 4000 there is security circuitry in the NVRAM which
   may disable reading / writing to parts of the NVRAM.  An attempt to use
   the NVRAM will result in a bus error.

As for you case where you found do_ade was called by the unaligned exception
handlers this clearly looks like a bug.  I'd try to find where in the code
the unaligned exception was thrown that caused the unaligned.c code to be
entered.  c0_epc / $ra should point you to some place which juggles with
invalid addresses.


<Prev in Thread] Current Thread [Next in Thread>