linux-mips-fnet
[Top] [All Lists]

arch/mips/kernel/unaligned.c

To: linux-mips@fnet.fr
Subject: arch/mips/kernel/unaligned.c
From: Thomas Riemer <triemer@apt4g.a3nyc.com>
Date: Sun, 27 Dec 1998 17:38:45 -0500 (EST)
arch/mips/kernel/unaligned.c has a snippet of code in
emulate_load_storen_insn:

>case sw_op:
>       check_axs(pc,addr,4)
>       value=regs->regs[insn.i_format.rt];
>       __asm__ (

The bug I've been tracking for several days now is a stumper.
The line "value=regs->regs[insn.i_format.rt]"  generates a call to
do_page_fault in arch/mips/kernel/mm.c

So here are some things that I've found out about this code:
(confirmed with console prints)
1. regs is not null
2. regs->regs is not null.
3. insn.i_format.rt seems to be 5 every time.
4. I can print out regs->regs[insn.i_format.rt] = its value is "0x000d"
5. Yet, the very next __asm__ code never gets hit.
6. value is an unsigned long.
7. emulate_load_store_insn is called by do_ade (emulate_load_store_insn
   is an inline function - and so I'm assuming that it gets stuffed
   into the address space of do_ade (i.e. epc value will map
   to System.map function do_ade)

This code isn't behaving the way that I would expect it to behave.
And I can't come up with anything that would explain the behavior.
This is what is causing my sii driver to crash the machine.

Any ideas?

-Tom Riemer
-----------------------------------------------------------------------
Given enough eyeballs all bugs seem shallow.

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