%g6,%g7 are reserved to the "system". Use %g2,%g3 instead. Use new
authordrepper <drepper>
Sun, 24 Aug 1997 10:46:06 +0000 (10:46 +0000)
committerdrepper <drepper>
Sun, 24 Aug 1997 10:46:06 +0000 (10:46 +0000)
local label macro.

sysdeps/sparc/sparc32/__longjmp.S

index 36e1c17..651ede4 100644 (file)
 #include <bits/setjmp.h>
 #define ENV(reg) [%g1 + (reg * 4)]
 
-ENTRY (__longjmp)
+ENTRY(__longjmp)
        /* Store our arguments in global registers so we can still
           use them while unwinding frames and their register windows.  */
        mov %o0, %g1            /* ENV in %g1 */
-       orcc %o1, %g0, %g6      /* VAL in %g6 */
+       orcc %o1, %g0, %g2      /* VAL in %g2 */
        be,a 0f                 /* Branch if zero; else skip delay slot.  */
-        mov 1, %g6             /* Delay slot only hit if zero: VAL = 1.  */
+        mov 1, %g2             /* Delay slot only hit if zero: VAL = 1.  */
 0:
-
-       /* Cache target FP in register %g7.  */
-       ld ENV (JB_FP), %g7
+       /* Cache target FP in register %g3.  */
+       ld ENV(JB_FP), %g3
 
        /* Now we will loop, unwinding the register windows up the stack
-          until the restored %fp value matches the target value in %g7.  */
+          until the restored %fp value matches the target value in %g3.  */
 
-loop:  cmp %fp, %g7            /* Have we reached the target frame? */
-       bl,a loop               /* Loop while current fp is below target.  */
+LOC(loop):
+       cmp %fp, %g3            /* Have we reached the target frame? */
+       bl,a LOC(loop)          /* Loop while current fp is below target.  */
         restore                /* Unwind register window in delay slot.  */
-       be,a found              /* Better have hit it exactly.  */
-        ld ENV (JB_SP), %o0    /* Delay slot: extract target SP.  */
+       be,a LOC(found)         /* Better have hit it exactly.  */
+        ld ENV(JB_SP), %o0     /* Delay slot: extract target SP.  */
 
-bogus: /* Get here only if the jmp_buf or stack is clobbered.  */
-       call C_SYMBOL_NAME (abort)
-       nop
+LOC(bogus):
+       /* Get here only if the jmp_buf or stack is clobbered.  */
+       call C_SYMBOL_NAME(abort)
+        nop
        unimp 0
 
-found: /* We have unwound register windows so %fp matches the target.  */
+LOC(found):
+       /* We have unwound register windows so %fp matches the target.  */
        cmp %o0, %sp            /* Check jmp_buf SP vs register window.  */
-       bge,a sp_ok             /* Saved must not be deeper than register.  */
+       bge,a LOC(sp_ok)        /* Saved must not be deeper than register.  */
         mov %o0, %sp           /* OK, install new SP.  */
-       b,a bogus               /* Bogus, we lose.  */
+       b,a LOC(bogus)          /* Bogus, we lose.  */
 
-sp_ok: ld ENV (JB_PC), %o0     /* Extract target return PC.  */
+LOC(sp_ok):
+       ld ENV(JB_PC), %o0      /* Extract target return PC.  */
        jmp %o0 + 8             /* Return there.  */
-        mov %g6, %o0           /* Delay slot: set return value.  */
+        mov %g2, %o0           /* Delay slot: set return value.  */
+
+END(__longjmp)