Browse Source

Quick fix to setjmp/longjmp/sigsetjmp etc to make them work.
This should really be fixed to fall into line with the other archs.

David McCullough 23 years ago
parent
commit
05669c069b
2 changed files with 15 additions and 10 deletions
  1. 7 2
      libc/sysdeps/linux/m68k/bits/setjmp.h
  2. 8 8
      libc/sysdeps/linux/m68k/setjmp.S

+ 7 - 2
libc/sysdeps/linux/m68k/bits/setjmp.h

@@ -49,11 +49,16 @@ typedef struct
 
 /* Simple version of sigsetjmp and siglongjmp */
 
+extern int __setjmp(__jmp_buf __buf);
+extern int __longjmp(__jmp_buf __buf, int __val);
+
+#define longjmp(buf, val) __longjmp(buf, val)
+
 #define __sigsetjmp(env, savesigs) ((env)->__mask_was_saved = (savesigs), \
 			sigprocmask(SIG_SETMASK, 0, &(env)->__saved_mask), \
-			setjmp(&(env)->__jmpbuf))
+			__setjmp((env)->__jmpbuf))
 
 #define siglongjmp(env, val) (((env)->__mask_was_saved ? \
 			sigprocmask(SIG_SETMASK, &(env)->__saved_mask, 0) : 0), \
-			longjmp(&(env)->__jmpbuf, val))
+			__longjmp((env)->__jmpbuf, val))
 

+ 8 - 8
libc/sysdeps/linux/m68k/setjmp.S

@@ -39,10 +39,10 @@
 #define fp REG (fp)
 #define sp REG (sp)
 
-.global SYM (setjmp)
-.global SYM (longjmp)
+.global SYM (__setjmp)
+.global SYM (__longjmp)
 
-SYM (setjmp):
+SYM (__setjmp):
 	moveal sp@(4),a0
 	movel sp@(0),a0@(12)
 	movel sp,a0@(8)
@@ -50,7 +50,7 @@ SYM (setjmp):
 	clrl d0
 	rts
 
-SYM (longjmp):
+SYM (__longjmp):
 	moveal sp@(4),a0
 	movel sp@(8),d0
 	bne 1f
@@ -62,10 +62,10 @@ SYM (longjmp):
 	rts
 
 #ifdef M68881
-.global SYM (setjmp_68881)
-.global SYM (longjmp_68881)
+.global SYM (__setjmp_68881)
+.global SYM (__longjmp_68881)
 
-SYM (setjmp_68881):
+SYM (__setjmp_68881):
 	moveal sp@(4),a0
 	movel sp@(0),a0@(12)
 	movel sp,a0@(8)
@@ -74,7 +74,7 @@ SYM (setjmp_68881):
 	clrl d0
 	rts
 
-SYM (longjmp_68881):
+SYM (__longjmp_68881):
 	moveal sp@(4),a0
 	fmovemx a0@(64),fp2-fp7
 	movel sp@(8),d0