Fixed for Sparc
authorceriel <none@none>
Tue, 24 Sep 1991 17:48:37 +0000 (17:48 +0000)
committerceriel <none@none>
Tue, 24 Sep 1991 17:48:37 +0000 (17:48 +0000)
lang/m2/libm2/CSP.mod
lang/m2/libm2/par_misc.e

index e70b23f..7a50df4 100644 (file)
@@ -16,7 +16,7 @@ IMPLEMENTATION MODULE CSP;
   FROM Storage IMPORT  Allocate, Deallocate;
   FROM Traps   IMPORT  Message;
 
-  CONST        WorkSpaceSize = 1000;
+  CONST        WorkSpaceSize = 2000;
 
   TYPE ByteAddress =   POINTER TO BYTE;
        Channel =       POINTER TO ChannelDescriptor;
index c785ada..9eba9c9 100644 (file)
  ; This implementation assumes a continuous stack growing downwards
 
  exp $topsize
+#ifdef __sparc
+ inp $topsize2
+ pro $topsize, 0
+ mes 11
+ zer EM_PSIZE
+ lal 0
+ loi EM_PSIZE
+ cal $topsize2
+ asp 2*EM_PSIZE
+ lfr EM_WSIZE
+ ret EM_WSIZE
+ end 0
+ pro $topsize2, 3*EM_WSIZE+3*EM_PSIZE
+#else
  pro $topsize, 3*EM_WSIZE+3*EM_PSIZE
+#endif
  ; local space for line-number, ignoremask, filename, stack-break, size,
  ; and stack-pointer (see the topsave routine)
  mes 11
@@ -33,6 +48,9 @@
  zne *1
  lxl 0
  dch                   ; local base of caller
+#ifdef __sparc
+ dch                   ; because of the extra layer
+#endif
  lal 0
  loi EM_PSIZE
  sti EM_PSIZE
  end 3*EM_WSIZE+3*EM_PSIZE
 
  exp $topsave
+#ifdef __sparc
+ inp $topsave2
+ pro $topsave,0
+ mes 11
+ lal 0
+ loi 2*EM_PSIZE
+ cal $topsave2
+ asp 2*EM_PSIZE
+ lfr EM_WSIZE
+ ret EM_WSIZE
+ end 0
+ pro $topsave2,0
+#else
  pro $topsave, 0
+#endif
  mes 11
  loe 0
  lae 4                 ; load line number and file name
@@ -82,7 +114,20 @@ sv
  bss EM_PSIZE,0,0
 
  exp $topload
+#ifdef __sparc
+ inp $topload1
+ pro $topload,0
+ lal 0
+ loi EM_PSIZE
+ cal $topload1
+ asp EM_PSIZE
+ lfr EM_WSIZE
+ ret EM_WSIZE
+ end 0
+ pro $topload1, 0
+#else
  pro $topload, 0
+#endif
  mes 11
 
  lal 0
@@ -98,7 +143,7 @@ sv
  loi EM_PSIZE
  cmp                   ; find another LB first
  zgt *1
- dch                   ; just follow dinamic chain to make sure we find
+ dch                   ; just follow dynamic chain to make sure we find
                        ; a legal one
  bra *2
 1
@@ -112,13 +157,12 @@ sv
  lae sv
  loi EM_PSIZE          ; source address
  lor 1
- adp EM_PSIZE          ; destimation address
+ adp EM_PSIZE          ; destination address
  lae sv
  loi EM_PSIZE
  adp EM_PSIZE
  loi EM_WSIZE          ; size of block
- bls EM_WSIZE          ; move block back (SP becomes the SP AFTER again, 
-                       ; because of the asp -EM_PSIZE!)
+ bls EM_WSIZE
  asp EM_PSIZE+EM_WSIZE ; drop size + SP
  str 0                 ; restore local base
  sim                   ; ignore mask
@@ -126,5 +170,5 @@ sv
  sti EM_PSIZE
  ste 0                 ; line and file
  loc 0
- ret EM_WSIZE          ; return 0
+ ret EM_WSIZE
  end 0