This is the mail archive of the newlib@sources.redhat.com mailing list for the newlib project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH] fix for z8k setjmp.S


Hi,

the following patch fixes setjmp/longjmp for z8001 segmented mode.

regards,
chris


Index: setjmp.S
===================================================================
RCS file: /net/soft/src/CVSdepot/m20newlib/newlib/libc/machine/z8k/setjmp.S,v
retrieving revision 1.1.1.1
retrieving revision 1.3
diff -u -r1.1.1.1 -r1.3
--- setjmp.S	2001/08/16 15:30:34	1.1.1.1
+++ setjmp.S	2002/07/10 23:07:03	1.3
@@ -3,27 +3,62 @@
 	segm
 
 	.global	_setjmp
+	.globl	_longjmp
+
+#ifdef __STD_CALL__
+
+_setjmp:
+	ldl	rr6,rr14(#4)	! get argument
+	ldl	rr2,@rr14	! fetch pc
+	ldl	@rr6,rr2	! save it
+	ldl	rr6(#16),rr8
+	ldl	rr6(#4),rr10
+	ldl	rr6(#8),rr12	! remember frame pointer
+	ldl	rr6(#12),rr14	! remember stack pointer
+	ldk	r7,#0
+	ret	t
+
+_longjmp:
+	ldl	rr4,rr14(#4)	! get first argument
+	ld	r7,rr14(#8)	! get return value
+	ldl	rr8,rr4(#16)
+	ldl	rr10,rr4(#4)
+	ldl	rr12,rr4(#8)	! restore old frame pointer
+	ldl	rr14,rr4(#12)	! restore old stack pointer
+	ldl	rr4,@rr4	! return address
+	inc	r15,#4
+	jp	@rr4
+
+#else /* above __STD_CALL_, below not */
+
 _setjmp:
 	ldl	rr2,@rr14	! fetch pc
 	ldl	@rr6,rr2	! save it
+	ldl	rr6(16),rr8
 	ldl	rr6(4),rr10
 	ldl	rr6(8),rr12	! and the other special regs
 	ldl	rr6(12),rr14
 	ldk	r2,#0
 	ret	t
-	
-	.globl	_longjmp
 
 _longjmp:
 	ld	r2,r5		! get return value
 	ldl	rr4,rr6(0)
+	ldl	rr8,rr6(16)
 	ldl	rr10,rr6(4)
 	ldl	rr12,rr6(8)
 	ldl	rr14,rr6(12)
+	inc	r15,#4
 	jp	@rr4
-#else
+
+#endif  /* not __STD_CALL__ */
+#else /* above Z8001, below Z8002 */
 	unseg
 
+#ifdef __STD_CALL__
+#warning Z8002 std call not implemented!
+#endif
+
 	.global	_setjmp
 _setjmp:
 	ld	r2,@r15	! fetch pc
@@ -44,6 +79,4 @@
 	ldl	rr14,rr7(12)
 	jp	@rr4
 	
-#endif
-
-
+#endif  /* Z8002 version */


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]