Bell 32V development
authorTom London <tbl@research.uucp>
Wed, 29 Nov 1978 23:43:59 +0000 (18:43 -0500)
committerTom London <tbl@research.uucp>
Wed, 29 Nov 1978 23:43:59 +0000 (18:43 -0500)
Work on file usr/src/libc/sys/setjmp.s

Co-Authored-By: John Reiser <jfr@research.uucp>
Synthesized-from: 32v

usr/src/libc/sys/setjmp.s [new file with mode: 0755]

diff --git a/usr/src/libc/sys/setjmp.s b/usr/src/libc/sys/setjmp.s
new file mode 100755 (executable)
index 0000000..798fc3e
--- /dev/null
@@ -0,0 +1,40 @@
+# C library -- setjmp, longjmp
+
+#      longjmp(a,v)
+# will generate a "return(v)" from
+# the last call to
+#      setjmp(a)
+# by restoring r6-pc from 'a'
+# and doing a return.
+#
+
+.globl _setjmp
+.globl _longjmp
+
+       .align  1
+_setjmp:
+       .word   0x0000
+       movl    4(ap),r0
+       movq    r6,(r0)+
+       movq    r8,(r0)+
+       movq    r10,(r0)+
+       movq    8(fp),(r0)+             # ap, fp
+       movab   8(ap),(r0)+             # sp
+       movl    16(fp),(r0)             # pc
+       clrl    r0
+       ret
+
+       .align  1
+_longjmp:
+       .word   0x0000
+       movl    4(ap),r1
+       movq    (r1)+,r6
+       movq    (r1)+,r8
+       movq    (r1)+,r10
+       movq    (r1)+,r12
+       movl    (r1)+,sp
+       movl    8(ap),r0  #  return(v)
+       bneq    L1
+       movzbl  $1,r0
+L1:
+       jmp     *(r1)