Subject: asm.h PANIC & PRINTF vs. "noreorder"
To: None <port-mips@netbsd.org>
From: Chris G. Demetriou <cgd@sibyte.com>
List: port-mips
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
longer.)

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
and PRINTF.

any objections?


chris