|
@@ -48,12 +48,23 @@ mcount:
|
|
sub %g3, STACK_BIAS, %g3
|
|
sub %g3, STACK_BIAS, %g3
|
|
cmp %sp, %g3
|
|
cmp %sp, %g3
|
|
bg,pt %xcc, 1f
|
|
bg,pt %xcc, 1f
|
|
- sethi %hi(panicstring), %g3
|
|
|
|
|
|
+ nop
|
|
|
|
+ /* If we are already on ovstack, don't hop onto it
|
|
|
|
+ * again, we are already trying to output the stack overflow
|
|
|
|
+ * message.
|
|
|
|
+ */
|
|
sethi %hi(ovstack), %g7 ! cant move to panic stack fast enough
|
|
sethi %hi(ovstack), %g7 ! cant move to panic stack fast enough
|
|
or %g7, %lo(ovstack), %g7
|
|
or %g7, %lo(ovstack), %g7
|
|
- add %g7, OVSTACKSIZE, %g7
|
|
|
|
|
|
+ add %g7, OVSTACKSIZE, %g3
|
|
|
|
+ sub %g3, STACK_BIAS + 192, %g3
|
|
sub %g7, STACK_BIAS, %g7
|
|
sub %g7, STACK_BIAS, %g7
|
|
- mov %g7, %sp
|
|
|
|
|
|
+ cmp %sp, %g7
|
|
|
|
+ blu,pn %xcc, 2f
|
|
|
|
+ cmp %sp, %g3
|
|
|
|
+ bleu,pn %xcc, 1f
|
|
|
|
+ nop
|
|
|
|
+2: mov %g3, %sp
|
|
|
|
+ sethi %hi(panicstring), %g3
|
|
call prom_printf
|
|
call prom_printf
|
|
or %g3, %lo(panicstring), %o0
|
|
or %g3, %lo(panicstring), %o0
|
|
call prom_halt
|
|
call prom_halt
|