On Mon, Aug 19, 2002 at 02:57:14PM +0200, Maciej W. Rozycki wrote: > > Really odd because the register only lost the upper 16 bits; the lower 16 > > bits still have their expected value. > > It is a typical symptom of a register being corrupted between a "lui" and > an "addiu" -- an exception must have done it in the immediately preceding > code. You might be able to track a reason down by carefully studying > possible exception paths at the place of the problem. Unfortunately you > don't have much of the state preserved at this stage -- you only know > which register was corrupted. Little exception potencial in this case as the interrupts got disabled and the addresses used were rsp. should all be in KSEG0. > Another possible approach is to add some code that compares the values of > the register upon an exception entry and exit and wait for it to trigger > -- for a single register it shouldn't be too tough and you have still much > of the state available before an "rfe" or "eret". Don't try to think too deterministic - Jun was working on first silicon, so not necessarily on a deterministic platform as we'd like. Fortunately as you may have seen in the kernel code there's already newer silicon so I'd simply file this one to /dev/null for now. Ralf