Changeset 8021


Ignore:
Timestamp:
Jan 8, 2008, 8:40:57 AM (12 years ago)
Author:
gb
Message:

Define xp-mxcsr; use it to set STATUS slot of ARITHMETIC-ERROR.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/working-0711/ccl/level-1/x86-trap-support.lisp

    r7856 r8021  
    2929  (defconstant flags-register-offset #$REG_EFL)
    3030  (defconstant rip-register-offset #$REG_RIP)
     31  (defun xp-mxcsr (xp)
     32    (pref xp :ucontext.uc_mcontext.fpregs.mxcsr))
    3133  (defparameter *encoded-gpr-to-indexed-gpr*
    3234    #(13                                ;rax
     
    5456  (defconstant flags-register-offset 22)
    5557  (defconstant rip-register-offset 20)
     58  (defun xp-mxcsr (xp)
     59    (with-macptrs ((state (pref xp :__ucontext.uc_mcontext.mc_fpstate)))
     60      (pref state :savefpu.sv_env.en_mxcsr)))
    5661  (defparameter *encoded-gpr-to-indexed-gpr*
    5762    #(7                                 ;rax
     
    97102                 (:uc_mcsize (:unsigned 64))
    98103                 (:uc_mcontext64 (:* (:struct :portable_mcontext64))))))
     104  (defun xp-mxcsr (xp)
     105    (%get-unsigned-long
     106     (pref (pref xp :portable_ucontext64.uc_mcontext64) :portable_mcontext64.fs) 32))
    99107  (defconstant gp-regs-offset 0)
    100108  (defmacro xp-gp-regs (xp)
     
    210218               (%error (make-condition condition-name
    211219                                       :operation operation
    212                                        :operands operands)
     220                                       :operands operands
     221                                       :status (xp-mxcsr xp))
    213222                       ()
    214223                       frame-ptr))))
Note: See TracChangeset for help on using the changeset viewer.