aboutsummaryrefslogtreecommitdiff
path: root/unix/as.macosx/zsvjmp.s
diff options
context:
space:
mode:
authorJoe Hunkeler <jhunkeler@gmail.com>2015-08-11 16:51:37 -0400
committerJoe Hunkeler <jhunkeler@gmail.com>2015-08-11 16:51:37 -0400
commit40e5a5811c6ffce9b0974e93cdd927cbcf60c157 (patch)
tree4464880c571602d54f6ae114729bf62a89518057 /unix/as.macosx/zsvjmp.s
downloadiraf-osx-40e5a5811c6ffce9b0974e93cdd927cbcf60c157.tar.gz
Repatch (from linux) of OSX IRAF
Diffstat (limited to 'unix/as.macosx/zsvjmp.s')
-rw-r--r--unix/as.macosx/zsvjmp.s123
1 files changed, 123 insertions, 0 deletions
diff --git a/unix/as.macosx/zsvjmp.s b/unix/as.macosx/zsvjmp.s
new file mode 100644
index 00000000..23308bf1
--- /dev/null
+++ b/unix/as.macosx/zsvjmp.s
@@ -0,0 +1,123 @@
+# ZSVJMP.S -- MacOS X version, September 2001, March 2002.
+
+.file "zsvjmp.s"
+
+ # ZSVJMP -- SPP callable SETJMP.
+.text
+ .align 2
+ .globl _zsvjmp_
+_zsvjmp_:
+ # R3 = buf, R4 = &status
+ li r11,0 ; r11 = 0
+ stw r11,0(r4) ; set *status to zero
+ stw r4,0(r3) ; store &status in buf[0]
+ addi r3,r3,4 ; reference buf[1] for setjmp
+ b L_setjmp$stub
+L2:
+ lwz r1,0(r1)
+ lwz r0,8(r1)
+ mtlr r0
+ lmw r30,-8(r1)
+ blr
+
+ # The setjmp code is only available in a dynamic library on 10.1.
+.picsymbol_stub
+L_setjmp$stub:
+ .indirect_symbol _setjmp
+ mflr r0
+ bcl 20,31,L1$pb
+L1$pb:
+ mflr r11
+ addis r11,r11,ha16(L1$lz-L1$pb)
+ mtlr r0
+ lwz r12,lo16(L1$lz-L1$pb)(r11)
+ mtctr r12
+ addi r11,r11,lo16(L1$lz-L1$pb)
+ bctr
+.lazy_symbol_pointer
+L1$lz:
+ .indirect_symbol _setjmp
+ .long dyld_stub_binding_helper
+.text
+.Lfe1:
+
+ # Set the address of the MEM common to zero.
+ .globl _mem_
+ _mem_ = 0
+
+
+ # GFPSCR -- Return the contents of the PowerPC FPSCR register.
+.text
+ .align 2
+.globl _gfpscr_
+_gfpscr_:
+ stmw r30,-8(r1)
+ stwu r1,-48(r1)
+ mr r30,r1
+ mflr r0
+ bcl 20,31,L2$pb
+L2$pb:
+ mflr r31
+ mtlr r0
+
+ mffs f0
+ stfd f0, 16(r30)
+ lwz r0, 20(r30)
+ mr r3, r0
+
+ b L3
+L3:
+ lwz r1,0(r1)
+ lmw r30,-8(r1)
+ blr
+
+
+ # SFPSCR -- Set the contents of the PowerPC FPSCR register.
+.text
+ .align 2
+.globl _sfpscr_
+_sfpscr_:
+ stmw r30,-8(r1)
+ stwu r1,-48(r1)
+ mr r30,r1
+ mflr r0
+ bcl 20,31,L4$pb
+L4$pb:
+ mflr r31
+ mtlr r0
+
+ lis r0, 0xfff8
+ stw r0, 16(r30)
+ lwz r0, 0(r3)
+ stw r0, 20(r30)
+ lfd f0, 16(r30)
+ mtfsf 255, f0
+
+ b L5
+L5:
+ lwz r1,0(r1)
+ lmw r30,-8(r1)
+ blr
+
+
+ # GXER -- Return the contents of the PowerPC XER register.
+.text
+ .align 2
+.globl _gxer_
+_gxer_:
+ stmw r30,-8(r1)
+ stwu r1,-48(r1)
+ mr r30,r1
+ mflr r0
+ bcl 20,31,L3$pb
+L3$pb:
+ mflr r31
+ mtlr r0
+
+ mfspr r3,1
+
+ b L4
+L4:
+ lwz r1,0(r1)
+ lmw r30,-8(r1)
+ blr