[PATCH 1/1] Use register g1 instead of g6 in sparc/setjmp.S
Daniel Cederman
cederman@gaisler.com
Thu May 15 08:45:00 GMT 2014
The SPARC ABI reserves the use of register g6 to the operating system. RTEMS is of late using g6 to keep track of per CPU data. This conflicts with its use in longjmp. Register g1 (or one of the out registers) is more suited for the temporary storage of data in longjmp.
Best regards,
Daniel
2014-05-15 Daniel Cederman <cederman@gaisler.com>
* libc/machine/sparc/setjmp.S (longjmp): Use register g1 instead of g6.
---
newlib/libc/machine/sparc/setjmp.S | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/newlib/libc/machine/sparc/setjmp.S b/newlib/libc/machine/sparc/setjmp.S
index bd879c4..9cc8469 100644
--- a/newlib/libc/machine/sparc/setjmp.S
+++ b/newlib/libc/machine/sparc/setjmp.S
@@ -124,9 +124,9 @@ ENTRY(_setjmp)
ENTRY(longjmp)
ENTRY(_longjmp)
ta 0x03 /* flush registers */
- addcc %o1, %g0, %g6 ! compute v ? v : 1 in a global register
+ addcc %o1, %g0, %g1 ! compute v ? v : 1 in a global register
be,a 0f
- mov 1, %g6
+ mov 1, %g1
0:
ld [%o0], %sp /* caller's stack pointer */
@@ -143,6 +143,6 @@ ENTRY(_longjmp)
ld [%o0+8], %fp /* caller's frame pointer */
ld [%o0+12], %o7
- jmp %o7 + 8 ! success, return %g6
- mov %g6, %o0
+ jmp %o7 + 8 ! success, return %g1
+ mov %g1, %o0
--
1.7.9.5
More information about the Newlib
mailing list