summaryrefslogtreecommitdiff
path: root/libc/sysdeps/linux/vax/setjmp.S
diff options
context:
space:
mode:
author"Jan-Benedict Glaw" <jbglaw@lug-owl.de>2006-01-27 21:20:28 +0000
committer"Jan-Benedict Glaw" <jbglaw@lug-owl.de>2006-01-27 21:20:28 +0000
commit0934f142036f12292711770d353f1c01ab718db7 (patch)
treebad0873c1bbd8c81ec70180d6ca4e4006d01fa62 /libc/sysdeps/linux/vax/setjmp.S
parent9f341620c14e959d333fb26d8ec5e9f9dc5209d6 (diff)
First round of VAX patches. This isn't complete right now, there are for
sure still bugs (properly hidden, of course), a libm is completely missing (I've got one that implements some basic stuff, but that's really not ready for checking in...) I've also got a list of other things that need touch-ups, but that's mostly minor stuff that'll be done during the next days.
Diffstat (limited to 'libc/sysdeps/linux/vax/setjmp.S')
-rw-r--r--libc/sysdeps/linux/vax/setjmp.S34
1 files changed, 34 insertions, 0 deletions
diff --git a/libc/sysdeps/linux/vax/setjmp.S b/libc/sysdeps/linux/vax/setjmp.S
new file mode 100644
index 000000000..f81be9330
--- /dev/null
+++ b/libc/sysdeps/linux/vax/setjmp.S
@@ -0,0 +1,34 @@
+# setjmp.S atp. Sept. 2001
+# save regs and info needed for a longjmp
+
+.globl __sigsetjmp
+.align 4
+__sigsetjmp:
+ .word 0x0000 # we look after reg saving here - this must
+ # match longjmp
+ movl 0x4(%ap), %r0 # our scratch reg
+ # kenn would probably use movq here. :-)
+ movl %r1, 0x14(%r0) # save regs
+ movl %r2, 0x18(%r0)
+ movl %r3, 0x1c(%r0)
+ movl %r4, 0x20(%r0)
+ movl %r5, 0x24(%r0)
+ movl %r6, 0x28(%r0)
+ movl %r7, 0x2c(%r0)
+ movl %r8, 0x30(%r0)
+ movl %r9, 0x34(%r0)
+ movl %r10, 0x38(%r0)
+ movl %r11, 0x3c(%r0)
+ # now save our call frame
+ movl (%fp), (%r0) # condition handler (for VMS emulation)
+ movl 0x4(%fp), 0x4(%r0) # psw
+ movl 0x8(%fp), 0x8(%r0) # ap
+ movl 0xc(%fp), 0xc(%r0) # fp
+ movl 0x10(%fp), 0x10(%r0) # pc
+ # call the sigjmp save routine
+ pushl 8(%ap)
+ pushl %r0
+ calls $2, __sigjmp_save
+ # done
+ ret
+