diff --git a/libgloss/ChangeLog b/libgloss/ChangeLog index 7c03dfeea..754992a34 100644 --- a/libgloss/ChangeLog +++ b/libgloss/ChangeLog @@ -1,14 +1,20 @@ -2002-01-08 Richard Sandiford + + * mips/cfe.c (hardware_hazard_hook): Move... + * mips/cfe_prestart.S (hardware_hazard_hook): To here, + and translate into assembly. + +2003-01-08 Richard Sandiford +2003-01-07 Chris Demetriou * crt0.S: Check for definition of __mips64 rather than checking (__mips < 3). diff --git a/libgloss/mips/cfe.c b/libgloss/mips/cfe.c index 6efd57d1f..f5e1e54be 100644 --- a/libgloss/mips/cfe.c +++ b/libgloss/mips/cfe.c @@ -96,23 +96,6 @@ hardware_init_hook(void) cfe_conshandle = cfe_getstdhandle(CFE_STDHANDLE_CONSOLE); } -/* Avoid worst-case execution hazards. This is targetted at the SB-1 - pipe, and is much worse than it needs to be (not even counting - the subroutine call and return). */ -void -hardware_hazard_hook(void) -{ - __asm__ __volatile__ (" .set push \n" - " .set mips32 \n" - " .set noreorder \n" - " ssnop \n" - " ssnop \n" - " ssnop \n" - " bnel $0, $0, .+4 \n" - " ssnop \n" - " .set pop \n"); -} - /* Exit back to monitor, with the given status code. */ void hardware_exit_hook (int status) diff --git a/libgloss/mips/cfe_prestart.S b/libgloss/mips/cfe_prestart.S index 4a1db5392..8548c1e47 100644 --- a/libgloss/mips/cfe_prestart.S +++ b/libgloss/mips/cfe_prestart.S @@ -64,3 +64,23 @@ _prestart: jr v0 nop .end _prestart + + +/* Avoid worst-case execution hazards. This is targetted at the SB-1 + pipe, and is much worse than it needs to be (not even counting + the subroutine call and return). */ + .globl hardware_hazard_hook + .ent hardware_hazard_hook +hardware_hazard_hook: + .set push + .set mips32 + .set noreorder + ssnop + ssnop + ssnop + bnel $0, $0, .+4 + ssnop + j ra + nop + .set pop + .end hardware_hazard_hook