On Sat, Dec 26, 1998 at 02:01:17AM -0500, Thomas Riemer wrote:
> Apparently it breaks at epc: 8004f708 looking this up in System.map
> 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
- 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