From ded3f797e1a95f2a9b3f61520af2ba3ad0bf1cde Mon Sep 17 00:00:00 2001 From: Tom London Date: Wed, 29 Nov 1978 18:43:59 -0500 Subject: [PATCH] Bell 32V development Work on file usr/src/libc/sys/setjmp.s Co-Authored-By: John Reiser Synthesized-from: 32v --- usr/src/libc/sys/setjmp.s | 40 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100755 usr/src/libc/sys/setjmp.s diff --git a/usr/src/libc/sys/setjmp.s b/usr/src/libc/sys/setjmp.s new file mode 100755 index 0000000000..798fc3e2b3 --- /dev/null +++ b/usr/src/libc/sys/setjmp.s @@ -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) -- 2.20.1