Subject: asm.h PANIC & PRINTF vs. "noreorder"
To: None <firstname.lastname@example.org>
From: Chris G. Demetriou <email@example.com>
Date: 07/26/2000 17:42:20
most of the mips locore code appears to be assembled with "noreorder"
set. the PRINTF and PANIC macros, however, don't include nops after
their jal instructions.
I discovered this problem by hitting the old implementation of the
mips3 outofworld code. (it was executing the first instruction of
mips3_SetPID, a dmtc0, which had ... undesirable effects. The new
implementation is Different and better, so it's not an issue there any
I couldn't find any uses of PRINTF in the generic mips code, but every
single use of PANIC in the generic mips code (currently in locore.S
and locore_mips1.S, formerly in locore_mips3.S) is incorrect
w.r.t. "doing something weird in the delay slot." (some are Special,
e.g. the cpu_switch panic: the sw to 0 will still be executed!!! 8-)
My personal inclination is to put a nop after the jal in each of PANIC