Index: /trunk/ccl/level-1/x86-trap-support.lisp
===================================================================
--- /trunk/ccl/level-1/x86-trap-support.lisp	(revision 4845)
+++ /trunk/ccl/level-1/x86-trap-support.lisp	(revision 4846)
@@ -44,60 +44,61 @@
       6                                 ;r14
       7                                 ;r15
-      ))
-  (defun indexed-gpr-lisp (xp igpr)
-    (%get-object xp (+ gp-regs-offset (ash igpr x8664::word-shift))))
-  (defun (setf indexed-gpr-lisp) (new xp igpr)
-    (%set-object xp (+ gp-regs-offset (ash igpr x8664::word-shift)) new))
-  (defun encoded-gpr-lisp (xp gpr)
-    (indexed-gpr-lisp xp (aref *encoded-gpr-to-indexed-gpr* gpr)))
-  (defun (setf encoded-gpr-lisp) (new xp gpr)
-    (setf (indexed-gpr-lisp xp (aref *encoded-gpr-to-indexed-gpr* gpr)) new))
-  (defun indexed-gpr-integer (xp igpr)
-    (%get-signed-long-long xp (+ gp-regs-offset (ash igpr x8664::word-shift))))
-  (defun (setf indexed-gpr-integer) (new xp igpr)
-    (setf
-     (%get-signed-long-long xp (+ gp-regs-offset (ash igpr x8664::word-shift)))
-     new))
-  (defun encoded-gpr-integer (xp gpr)
-    (indexed-gpr-integer xp (aref *encoded-gpr-to-indexed-gpr* gpr)))
-  (defun (setf encoded-gpr-integer) (new xp gpr)
-    (setf (indexed-gpr-integer xp (aref *encoded-gpr-to-indexed-gpr* gpr)) new))
-  (defun indexed-gpr-macptr (xp igpr)
-    (%get-ptr xp (+ gp-regs-offset (ash igpr x8664::word-shift))))
-  (defun (setf indexed-gpr-macptr) (new xp igpr)
-    (setf (%get-ptr xp (+ gp-regs-offset (ash igpr x8664::word-shift))) new))
-  (defun indexed-gpr-macptr (xp igpr)
-    (%get-ptr xp (+ gp-regs-offset (ash igpr x8664::word-shift))))
-  (defun encoded-gpr-macptr (xp gpr)
-    (indexed-gpr-macptr xp (aref *encoded-gpr-to-indexed-gpr* gpr)))
-  (defun (setf encoded-gpr-macptr) (new xp gpr)
-    (setf (indexed-gpr-macptr xp (aref *encoded-gpr-to-indexed-gpr* gpr)) new))
-  (defun xp-flags-register (xp)
-    (%get-signed-long-long xp (+ gp-regs-offset (ash flags-register-offset x8664::fixnumshift))))
-  )
+      )))
 
-#||
-(defun funcall-with-xp-stack-frames (xp trap-function thunk)
-  (cond ((null trap-function)
-         ;; Maybe inside a subprim from a lisp function
-         (let* ((fn (encoded-gpr-lisp xp x8664::fn))
-                (ra0 (encoded-gpr-lisp xp x8664::ra0)))
-           (if (eq fn (%return-address-function ra0))
-             (let* ((rbp (encoded-gpr-lisp xp x8664::rbp))
-                    (frame (%cons-fake-stack-frame rbp rbp fn ra0 nil xp *fake-stack-frames*))
-                    (*fake-stack-frames* frame))
-               (declare (dynamic-extent frame))
-               (funcall thunk frame))
-             (funcall thunk (encoded-gpr-lisp xp x8664::rbp)))))
-        ((eq trap-function (encoded-gpr-lisp xp x8664::fn))
-         (let* ((fn trap-function)
-                (ra0 (encoded-gpr-lisp xp x8664::ra0))
-                (rbp (encoded-gpr-lisp xp x8664::rbp))
-                (frame (%cons-fake-stack-frame rbp rbp fn ra0 nil xp *fake-stack-frames*))
-                (*fake-stack-frames* frame))
-           (declare (dynamic-extent frame))
-           (funcall thunk frame)))
-        (t (funcall thunk (encoded-gpr-lisp xp x8664::rbp)))))
-||#
+#+freebsdx8664-target
+(progn
+  (defconstant gp-regs-offset (get-field-offset :ucontext.uc_mcontext))
+  (defconstant flags-register-offset 22)
+  (defparameter *encoded-gpr-to-indexed-gpr*
+    #(7					;rax
+      4					;rcx
+      3					;rdx
+      8					;rbx
+      23                                ;rsp
+      9					;rbp
+      2                                 ;rsi
+      1                                 ;rdi
+      5                                 ;r8
+      6                                 ;r9
+      10				;r10
+      11                                ;r11
+      12				;r12
+      13				;r13
+      14				;r14
+      15                                ;r15
+      )))
+
+(defun indexed-gpr-lisp (xp igpr)
+  (%get-object xp (+ gp-regs-offset (ash igpr x8664::word-shift))))
+(defun (setf indexed-gpr-lisp) (new xp igpr)
+  (%set-object xp (+ gp-regs-offset (ash igpr x8664::word-shift)) new))
+(defun encoded-gpr-lisp (xp gpr)
+  (indexed-gpr-lisp xp (aref *encoded-gpr-to-indexed-gpr* gpr)))
+(defun (setf encoded-gpr-lisp) (new xp gpr)
+  (setf (indexed-gpr-lisp xp (aref *encoded-gpr-to-indexed-gpr* gpr)) new))
+(defun indexed-gpr-integer (xp igpr)
+  (%get-signed-long-long xp (+ gp-regs-offset (ash igpr x8664::word-shift))))
+(defun (setf indexed-gpr-integer) (new xp igpr)
+  (setf
+   (%get-signed-long-long xp (+ gp-regs-offset (ash igpr x8664::word-shift)))
+   new))
+(defun encoded-gpr-integer (xp gpr)
+  (indexed-gpr-integer xp (aref *encoded-gpr-to-indexed-gpr* gpr)))
+(defun (setf encoded-gpr-integer) (new xp gpr)
+  (setf (indexed-gpr-integer xp (aref *encoded-gpr-to-indexed-gpr* gpr)) new))
+(defun indexed-gpr-macptr (xp igpr)
+  (%get-ptr xp (+ gp-regs-offset (ash igpr x8664::word-shift))))
+(defun (setf indexed-gpr-macptr) (new xp igpr)
+  (setf (%get-ptr xp (+ gp-regs-offset (ash igpr x8664::word-shift))) new))
+(defun indexed-gpr-macptr (xp igpr)
+  (%get-ptr xp (+ gp-regs-offset (ash igpr x8664::word-shift))))
+(defun encoded-gpr-macptr (xp gpr)
+  (indexed-gpr-macptr xp (aref *encoded-gpr-to-indexed-gpr* gpr)))
+(defun (setf encoded-gpr-macptr) (new xp gpr)
+  (setf (indexed-gpr-macptr xp (aref *encoded-gpr-to-indexed-gpr* gpr)) new))
+(defun xp-flags-register (xp)
+  (%get-signed-long-long xp (+ gp-regs-offset (ash flags-register-offset x8664::fixnumshift))))
+  
+
 
 (defun %get-xcf-byte (xcf-ptr delta)
