aboutsummaryrefslogtreecommitdiffstats
path: root/setjump.s
diff options
context:
space:
mode:
authorBryan Newbold <bnewbold@robocracy.org>2017-02-20 00:05:23 -0800
committerBryan Newbold <bnewbold@robocracy.org>2017-02-20 00:05:23 -0800
commit5ca6e8e6a4e5c022a6fb5d28f30219c22c99eda8 (patch)
tree9b744b9dbf39e716e56daa620e2f3041968caf19 /setjump.s
downloadscm-5ca6e8e6a4e5c022a6fb5d28f30219c22c99eda8.tar.gz
scm-5ca6e8e6a4e5c022a6fb5d28f30219c22c99eda8.zip
Import Upstream version 4e6upstream/4e6
Diffstat (limited to 'setjump.s')
-rw-r--r--setjump.s40
1 files changed, 40 insertions, 0 deletions
diff --git a/setjump.s b/setjump.s
new file mode 100644
index 0000000..b96fb05
--- /dev/null
+++ b/setjump.s
@@ -0,0 +1,40 @@
+* setjmp on the Cray YMP does not save all registers. Although this
+* conforms to the ANSI standard, it is not sufficient for SCM garbage
+* collection and continuations.
+*
+* This is a version of setjump for the Cray YMP that does save all non-
+* temporary registers. It might work for the XMP. It definitely will
+* not work on the Cray 2. I do not know if the setjmp on the Cray 2 will
+* work with SCM or not.
+*
+* This has been tested under Unicos 6.1.
+*
+* --Radey Shouman <rshouman@chpc.utexas.edu>
+*
+ IDENT SETJUMP
+ ENTRY setjump
+setjump = *
+ A1 1,A6
+ A2 56
+ A0 A1
+ ,A0 T00,A2
+ A0 A1+A2
+ ,A0 B00,A2
+ S1 0
+ J B00
+*
+ ENTRY longjump
+longjump = *
+ A1 1,A6
+ A0 A1
+ A2 56
+ T00,A2 ,A0
+ A0 A1+A2
+ B00,A2 ,A0
+ S1 2,A6
+ J B00
+ END
+** Local Variables:
+** tab-stop-list: (12 28 45)
+** indent-tabs-mode: nil
+** End: