summaryrefslogtreecommitdiff
path: root/SCM/setjump.s
diff options
context:
space:
mode:
authorMatthias Benkard <mulk@minimulk.mst-plus>2008-09-20 12:11:00 +0200
committerMatthias Benkard <mulk@minimulk.mst-plus>2008-09-20 12:11:00 +0200
commit784ddf7a6378e2bde5729c37993af65cb58deef2 (patch)
treef4e06a00422cde7abffbc6be44b50ccf28a89e0f /SCM/setjump.s
parent0e6969f0a7b7343f02f2be0c35e36f6477505514 (diff)
Add continuation support files from SCM 5e5.
Diffstat (limited to 'SCM/setjump.s')
-rw-r--r--SCM/setjump.s40
1 files changed, 40 insertions, 0 deletions
diff --git a/SCM/setjump.s b/SCM/setjump.s
new file mode 100644
index 0000000..b96fb05
--- /dev/null
+++ b/SCM/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: