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
diff options
context:
space:
mode:
Diffstat (limited to 'newlib/libc/sys/mmixware/setjmp.S')
-rw-r--r--newlib/libc/sys/mmixware/setjmp.S87
1 files changed, 0 insertions, 87 deletions
diff --git a/newlib/libc/sys/mmixware/setjmp.S b/newlib/libc/sys/mmixware/setjmp.S
deleted file mode 100644
index 862273dd5..000000000
--- a/newlib/libc/sys/mmixware/setjmp.S
+++ /dev/null
@@ -1,87 +0,0 @@
-/* Setjmp and longjmp for mmix.
-
- Copyright (C) 2001 Hans-Peter Nilsson
-
- Permission to use, copy, modify, and distribute this software is
- freely granted, provided that the above copyright notice, this notice
- and the following disclaimer are preserved with no changes.
-
- THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- PURPOSE.
-
- jmp_buf[5]:
- 0: fp
- 1: rJ (return-address)
- 2: sp
- 3: rO *before* the setjmp call.
- 4: temporary storage. Reserved between setjmp and longjmp. */
-
-#ifdef __MMIX_ABI_GNU__
-#define arg1 $231
-#define arg2 $232
-#define outret $231
-#define popval 0
-#else
-#define arg1 $0
-#define arg2 $1
-#define outret $0
-#define popval 1
-#endif
-
- .section .text.setjmp,"ax",@progbits
- .global setjmp
-setjmp:
-% Store fp, sp and return address. Recycle the static-chain and
-% structure-return registers as temporary register, since we need to keep
-% the jmp_buf (parameter 1) and the return address across a "POP".
- SET $251,arg1
- STOU $253,$251,0
- GET $252,rJ
- STOU $252,$251,8
- STOU $254,$251,16
- SETL outret,0
-
-% Jump through hoops to get the value of rO *before* the setjmp call.
- GETA $255,0f
- PUT rJ,$255
- POP popval,0
-0:
- GET $255,rO
- STOU $255,$251,24
- GO $255,$252,0
- .size setjmp,.-setjmp
-
- .section .text.longjmp,"ax",@progbits
- .global longjmp
-longjmp:
-% Reset arg2 to 1 if it is 0 (see longjmp(2)) and store it in jmp_buf.
-% Save arg1 in a global register, since it will be destroyed by the POPs
-% (in the mmixware ABI).
- CSZ arg2,arg2,1
- STOU arg2,arg1,32
- SET $251,arg1
-
-% Loop and "POP 0,0" until rO is the expected value, like
-% the expansion of nonlocal_goto_receiver, except that we put the return
-% value in the right register and make sure that the POP causes it to
-% enter the right return-value register as seen by the caller. For the
-% GNU ABI, it is unnecessary to do this in the loop and perhaps the memory
-% access can be hoisted outside the loop, but this is safe and simple and
-% I see no need to optimize longjmps.
- GETA $255,0f
- PUT rJ,$255
- LDOU $255,$251,24
-0:
- GET $252,rO
- CMPU $252,$252,$255
- BNP $252,1f
- LDOU outret,$251,32
- POP popval,0
-1:
- LDOU $253,$251,0
- LDOU $255,$251,8
- LDOU $254,$251,16
- GO $255,$255,0
- .size longjmp,.-longjmp