Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/newlib
diff options
context:
space:
mode:
authorJeff Johnston <jjohnstn@redhat.com>2014-03-22 00:28:57 +0400
committerJeff Johnston <jjohnstn@redhat.com>2014-03-22 00:28:57 +0400
commitc18decccef958c6e37acc341391a6712d4570ade (patch)
treeadeda58e0082abcbb61f72daa35654ab6702202d /newlib
parent488d885bf3647634a94f9f95c6bcf3321073b2ac (diff)
2014-03-21 Sabrina Ni <sabrinanitw@gmail.com>
* libc/machine/nds32/setjmp.S: Keep jmp_buff sync with GDB.
Diffstat (limited to 'newlib')
-rw-r--r--newlib/ChangeLog4
-rw-r--r--newlib/libc/machine/nds32/setjmp.S24
2 files changed, 17 insertions, 11 deletions
diff --git a/newlib/ChangeLog b/newlib/ChangeLog
index 413a30786..e884ad0ea 100644
--- a/newlib/ChangeLog
+++ b/newlib/ChangeLog
@@ -1,5 +1,9 @@
2014-03-21 Sabrina Ni <sabrinanitw@gmail.com>
+ * libc/machine/nds32/setjmp.S: Keep jmp_buff sync with GDB.
+
+2014-03-21 Sabrina Ni <sabrinanitw@gmail.com>
+
* libc/machine/nds32/setjmp.S: Optimize.
2014-03-07 Corinna Vinschen <vinschen@redhat.com>
diff --git a/newlib/libc/machine/nds32/setjmp.S b/newlib/libc/machine/nds32/setjmp.S
index 906efab8f..e5d8531bc 100644
--- a/newlib/libc/machine/nds32/setjmp.S
+++ b/newlib/libc/machine/nds32/setjmp.S
@@ -40,7 +40,9 @@ The usage of thirty-two 32-bit General Purpose Registers (GPR):
reserved for assembler : $r15
reserved for other use : $r24, $r25, $r26, $r27
-Save all callee-save registers and $fp, $gp, $lp and $sp.
+Save all callee-save registers and $fp, $gp, $lp and $sp is enough in theory.
+For debugging issue, the layout of jum_buf in here should be in sync with GDB.
+The $r16 ~ $r19 are used to store D0/D1, keep them for backward-compatible.
*/
/* int setjmp(jmp_buf env); */
@@ -50,13 +52,12 @@ Save all callee-save registers and $fp, $gp, $lp and $sp.
.type setjmp, @function
setjmp:
#ifdef __NDS32_REDUCED_REGS__
- /* This case, save 10 words. */
- smw.bim $r6, [$r0], $r10, 0x0
- smw.bim $r31, [$r0], $r31, 0xf
+ smw.bim $r6, [$r0], $r10, #0b0000
+ addi $r0, $r0, #32 /* Leave room to keep jum_buf all the same. */
+ smw.bim $r31, [$r0], $r31, #0b1111
#else
- /* This case, save 17 words. */
- smw.bim $r6, [$r0], $r14, 0x0
- smw.bim $r16, [$r0], $r19, 0xf
+ smw.bim $r6, [$r0], $r14, #0b0000
+ smw.bim $r16, [$r0], $r19, #0b1111
#endif
/* Set return value to zero. */
@@ -72,11 +73,12 @@ setjmp:
.type longjmp, @function
longjmp:
#ifdef __NDS32_REDUCED_REGS__
- lmw.bim $r6, [$r0], $r10, 0x0
- lmw.bim $r31, [$r0], $r31, 0xf
+ lmw.bim $r6, [$r0], $r10, #0b0000
+ addi $r0, $r0, #32
+ lmw.bim $r31, [$r0], $r31, #0b1111
#else
- lmw.bim $r6, [$r0], $r14, 0x0
- lmw.bim $r16, [$r0], $r19, 0xf
+ lmw.bim $r6, [$r0], $r14, #0b0000
+ lmw.bim $r16, [$r0], $r19, #0b1111
#endif
/* Set val as return value. If the value val is 0, 1 will be returned
instead. */