diff options
author | Aldy Hernandez <aldyh@redhat.com> | 2005-07-06 13:14:10 +0000 |
---|---|---|
committer | Aldy Hernandez <aldyh@redhat.com> | 2005-07-06 13:14:10 +0000 |
commit | dee9edd9ed9fbe5f97367ad04d4203729e02ca9a (patch) | |
tree | 3263ed86cfb7e2c654d10ecb7e0f372625c37b61 /newlib/libc/machine/ms1/setjmp.S | |
parent | f24fd73b0ad2999105eff7b851d24ec4e91f2f0d (diff) | |
download | cygnal-dee9edd9ed9fbe5f97367ad04d4203729e02ca9a.tar.gz cygnal-dee9edd9ed9fbe5f97367ad04d4203729e02ca9a.tar.bz2 cygnal-dee9edd9ed9fbe5f97367ad04d4203729e02ca9a.zip |
* configure.host: Added entry for ms1*.
* libc/include/machine/ieeefp.h: Handle ms1.
* libc/include/machine/setjmp.h (_JBLEN): Define for ms1.
* libc/machine/ms1/aclocal.m4: New.
* libc/machine/ms1/configure: New.
* libc/machine/ms1/configure.in: New.
* libc/machine/ms1/Makefile.am: New.
* libc/machine/ms1/Makefile.in: New.
* libc/machine/ms1/setjmp.S: New.
Diffstat (limited to 'newlib/libc/machine/ms1/setjmp.S')
-rw-r--r-- | newlib/libc/machine/ms1/setjmp.S | 99 |
1 files changed, 99 insertions, 0 deletions
diff --git a/newlib/libc/machine/ms1/setjmp.S b/newlib/libc/machine/ms1/setjmp.S new file mode 100644 index 000000000..1f95c6789 --- /dev/null +++ b/newlib/libc/machine/ms1/setjmp.S @@ -0,0 +1,99 @@ +# setjmp/longjmp for ms1. +# +# The jmpbuf looks like this: +# +# Register jmpbuf offset +# R0 --- -- +# R1 0x4 4 +# R2 0x8 8 +# R3 0xc 12 +# R4 0x10 16 +# R5 0x14 20 +# R6 0x18 24 +# R7 0x1c 28 +# R8 0x20 32 +# R9 ---- -- +# R10 ---- -- +# R11 0x2c 44 +# R12 0x30 48 +# R13 0x34 52 +# R14 0x38 56 +# R15 0x3c 60 +# +# R1 contains the pointer to jmpbuf + .text + .global setjmp + .type setjmp ,@function +setjmp: + + stw r1, r1, #4 + or r0, r0, r0 + stw r2, r1, #8 + or r0, r0, r0 + stw r3, r1, #12 + or r0, r0, r0 + stw r4, r1, #16 + or r0, r0, r0 + stw r5, r1, #20 + or r0, r0, r0 + stw r6, r1, #24 + or r0, r0, r0 + stw r7, r1, #28 + or r0, r0, r0 + stw r8, r1, #32 + or r0, r0, r0 + stw r11, r1, #44 + or r0, r0, r0 + stw r12, r1, #48 + or r0, r0, r0 + stw r13, r1, #52 + or r0, r0, r0 + stw r14, r1, #56 + or r0, r0, r0 + stw r15, r1, #60 + + jal r0, r14 + addi r11, r0, #0 +.Lend1: + .size setjmp,.Lend1-setjmp + + .global longjmp + .type longjmp,@function +longjmp: + or r9, r1, r1 + or r11, r2, r2 + ldw r1, r1, #4 + or r0, r0, r0 + ldw r2, r1, #8 + or r0, r0, r0 + ldw r3, r1, #12 + or r0, r0, r0 + ldw r4, r1, #16 + or r0, r0, r0 + ldw r5, r1, #20 + or r0, r0, r0 + ldw r6, r1, #24 + or r0, r0, r0 + ldw r7, r1, #28 + or r0, r0, r0 + ldw r8, r1, #32 + or r0, r0, r0 + + + ldw r12, r1, #48 + or r0, r0, r0 + ldw r13, r1, #52 + or r0, r0, r0 + ldw r14, r1, #56 + or r0, r0, r0 + ldw r15, r1, #60 + + brne r0, r11, .L01 + or r0, r0, r0 + + addi r11, r0, #1 +.L01: + jal r0, r14 + or r0, r0, r0 +.Lend2: + .size longjmp,.Lend2-longjmp2 |