Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 5 Sep 2003 19:11:13 -0700 (PDT)
From:      Peter Wemm <peter@FreeBSD.org>
To:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   PERFORCE change 37640 for review
Message-ID:  <200309060211.h862BDD2085714@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=37640

Change 37640 by peter@peter_daintree on 2003/09/05 19:10:50

	back out

Affected files ...

.. //depot/projects/ezm3/libs/m3core/src/C/FBSD_AMD64/Csetjmp.i3#6 edit
.. //depot/projects/ezm3/libs/m3core/src/runtime/FBSD_AMD64/RTThread.m3#3 edit

Differences ...

==== //depot/projects/ezm3/libs/m3core/src/C/FBSD_AMD64/Csetjmp.i3#6 (text+ko) ====

@@ -14,12 +14,11 @@
   jmp_buf = ARRAY [0..11] OF long; (* actually, this is a sigjmp_buf,
                                      just in case *)
 
-  (* We use a special state for context switching due to floating point,
-     which setjmp/longjmp do not deal with. Record length = 72 longs. *)
-  fpjmp_buf = RECORD
-    int_stuff: ARRAY [0..7] OF long; (* integer registers *)
-    fp_stuff:  ARRAY [0..31] OF long_double; (* floating point fxsave *)
-  END;
+  fpjmp_buf = ARRAY [0..71] OF long; (* this is needed to hold the
+                                       fpu state, which the ordinary
+                                       versions of setjmp/longjmp 
+                                       do not save and restore *)
+
 
 <*EXTERNAL "setjmp"   *> PROCEDURE setjmp (VAR env: jmp_buf): int;
 <*EXTERNAL "longjmp"  *> PROCEDURE longjmp (VAR env: jmp_buf; val: int);

==== //depot/projects/ezm3/libs/m3core/src/runtime/FBSD_AMD64/RTThread.m3#3 (text+ko) ====

@@ -16,7 +16,7 @@
 
 PROCEDURE SP (READONLY s: State): ADDRESS =
   BEGIN
-    RETURN LOOPHOLE (s.int_stuff [SP_pos], ADDRESS);
+    RETURN LOOPHOLE (s [SP_pos], ADDRESS);
   END SP;
 
 (*--------------------------------------------------------- thread stacks ---*)
@@ -70,7 +70,7 @@
 
 PROCEDURE UpdateStateForNewSP (VAR s: State; offset: INTEGER) =
   BEGIN
-    INC (s.int_stuff [SP_pos], offset);
+    INC (s [SP_pos], offset);
   END UpdateStateForNewSP;
 
 PROCEDURE UpdateFrameForNewSP (<*UNUSED*> a: ADDRESS;



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200309060211.h862BDD2085714>