Changeset 5031


Ignore:
Timestamp:
Aug 26, 2006, 2:08:02 AM (18 years ago)
Author:
Gary Byers
Message:

Need an indirection to access mcontext from ucontext on Darwin;
invent xp-gp-regs to get at mcontext64.ss.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/ccl/level-1/x86-trap-support.lisp

    r5013 r5031  
    2626  (defconstant gp-regs-offset (+ (get-field-offset :ucontext.uc_mcontext)
    2727                                 (get-field-offset :mcontext_t.gregs)))
     28  (defmacro xp-gp-regs (xp) xp)
    2829  (defconstant flags-register-offset #$REG_EFL)
    2930  (defparameter *encoded-gpr-to-indexed-gpr*
     
    4950(progn
    5051  (defconstant gp-regs-offset (get-field-offset :ucontext_t.uc_mcontext))
     52  (defmacro xp-gp-regs (xp) xp)
    5153  (defconstant flags-register-offset 22)
    5254  (defparameter *encoded-gpr-to-indexed-gpr*
     
    7880                     (:ss :x86_thread_state64_t)
    7981                     (:fs :x86_float_state64_t)))))
    80   (defconstant gp-regs-offset (+ (get-field-offset :ucontext64.uc_mcontext64)
    81                                  (get-field-offset :mcontext64.ss)))
     82  (defconstant gp-regs-offset 0)
     83  (defmacro xp-gp-regs (xp)
     84    `(pref (pref ,xp :ucontext64.uc_mcontext64) :mcontext64.ss))
     85
    8286  (defconstant flags-register-offset 17)
    8387  (defparameter *encoded-gpr-to-indexed-gpr*
     
    101105
    102106(defun indexed-gpr-lisp (xp igpr)
    103   (%get-object xp (+ gp-regs-offset (ash igpr x8664::word-shift))))
     107  (%get-object (xp-gp-regs xp) (+ gp-regs-offset (ash igpr x8664::word-shift))))
    104108(defun (setf indexed-gpr-lisp) (new xp igpr)
    105   (%set-object xp (+ gp-regs-offset (ash igpr x8664::word-shift)) new))
     109  (%set-object (xp-gp-regs xp) (+ gp-regs-offset (ash igpr x8664::word-shift)) new))
    106110(defun encoded-gpr-lisp (xp gpr)
    107111  (indexed-gpr-lisp xp (aref *encoded-gpr-to-indexed-gpr* gpr)))
     
    109113  (setf (indexed-gpr-lisp xp (aref *encoded-gpr-to-indexed-gpr* gpr)) new))
    110114(defun indexed-gpr-integer (xp igpr)
    111   (%get-signed-long-long xp (+ gp-regs-offset (ash igpr x8664::word-shift))))
     115  (%get-signed-long-long (xp-gp-regs xp) (+ gp-regs-offset (ash igpr x8664::word-shift))))
    112116(defun (setf indexed-gpr-integer) (new xp igpr)
    113117  (setf
    114    (%get-signed-long-long xp (+ gp-regs-offset (ash igpr x8664::word-shift)))
     118   (%get-signed-long-long (xp-gp-regs xp) (+ gp-regs-offset (ash igpr x8664::word-shift)))
    115119   new))
    116120(defun encoded-gpr-integer (xp gpr)
     
    119123  (setf (indexed-gpr-integer xp (aref *encoded-gpr-to-indexed-gpr* gpr)) new))
    120124(defun indexed-gpr-macptr (xp igpr)
    121   (%get-ptr xp (+ gp-regs-offset (ash igpr x8664::word-shift))))
     125  (%get-ptr (xp-gp-regs xp) (+ gp-regs-offset (ash igpr x8664::word-shift))))
    122126(defun (setf indexed-gpr-macptr) (new xp igpr)
    123   (setf (%get-ptr xp (+ gp-regs-offset (ash igpr x8664::word-shift))) new))
     127  (setf (%get-ptr (xp-gp-regs xp) (+ gp-regs-offset (ash igpr x8664::word-shift))) new))
    124128(defun indexed-gpr-macptr (xp igpr)
    125   (%get-ptr xp (+ gp-regs-offset (ash igpr x8664::word-shift))))
     129  (%get-ptr (xp-gp-regs xp) (+ gp-regs-offset (ash igpr x8664::word-shift))))
    126130(defun encoded-gpr-macptr (xp gpr)
    127131  (indexed-gpr-macptr xp (aref *encoded-gpr-to-indexed-gpr* gpr)))
     
    129133  (setf (indexed-gpr-macptr xp (aref *encoded-gpr-to-indexed-gpr* gpr)) new))
    130134(defun xp-flags-register (xp)
    131   (%get-signed-long-long xp (+ gp-regs-offset (ash flags-register-offset x8664::fixnumshift))))
     135  (%get-signed-long-long (xp-gp-regs xp) (+ gp-regs-offset (ash flags-register-offset x8664::fixnumshift))))
    132136 
    133137
Note: See TracChangeset for help on using the changeset viewer.