(dpb x (byte 32 0) -1)
(ldb (byte 32 0) x)))
-(define-vop (foreign-symbol-address)
- (:translate foreign-symbol-address)
+(define-vop (foreign-symbol-sap)
+ (:translate foreign-symbol-sap)
(:policy :fast-safe)
(:args)
(:arg-types (:constant simple-string))
(:results (res :scs (sap-reg)))
(:result-types system-area-pointer)
(:generator 2
- (inst lea res (make-fixup (extern-alien-name foreign-symbol) :foreign))))
+ (inst lea res (make-fixup foreign-symbol :foreign))))
#!+linkage-table
-(define-vop (foreign-symbol-dataref-address)
- (:translate foreign-symbol-dataref-address)
+(define-vop (foreign-symbol-dataref-sap)
+ (:translate foreign-symbol-dataref-sap)
(:policy :fast-safe)
(:args)
(:arg-types (:constant simple-string))
(:results (res :scs (sap-reg)))
(:result-types system-area-pointer)
(:generator 2
- (inst mov res (make-fixup (extern-alien-name foreign-symbol) :foreign-dataref))))
+ (inst mov res (make-fixup foreign-symbol :foreign-dataref))))
(define-vop (call-out)
(:args (function :scs (sap-reg))
(args :more t))
(:results (results :more t))
(:temporary (:sc unsigned-reg :offset rax-offset :to :result) rax)
- (:temporary (:sc unsigned-reg :offset rcx-offset
- :from :eval :to :result) rcx)
(:ignore results)
(:vop-var vop)
(:save-p t)
;; To give the debugger a clue. XX not really internal-error?
(note-this-location vop :internal-error)
;; FLOAT15 needs to contain FP zero in Lispland
- (inst xor rcx rcx)
- (inst movd (make-random-tn :kind :normal
+ (let ((float15 (make-random-tn :kind :normal
:sc (sc-or-lose 'double-reg)
- :offset float15-offset)
- rcx)))
+ :offset float15-offset)))
+ (inst xorpd float15 float15))))
(define-vop (alloc-number-stack-space)
(:info amount)
(:generator 0
(aver (location= result rsp-tn))
(unless (zerop amount)
- (let ((delta (logandc2 (+ amount 3) 3)))
+ (let ((delta (logandc2 (+ amount 7) 7)))
(inst sub rsp-tn delta)))
+ ;; C stack must be 16 byte aligned
+ (inst and rsp-tn #xfffffff0)
(move result rsp-tn)))
(define-vop (dealloc-number-stack-space)
(:info amount)
(:generator 0
(unless (zerop amount)
- (let ((delta (logandc2 (+ amount 3) 3)))
+ (let ((delta (logandc2 (+ amount 7) 7)))
(inst add rsp-tn delta)))))
(define-vop (alloc-alien-stack-space)
(unless (zerop amount)
(let ((delta (logandc2 (+ amount 7) 7)))
(inst mov temp
- (make-ea :dword
+ (make-ea :qword
:disp (+ nil-value
(static-symbol-offset '*alien-stack*)
(ash symbol-tls-index-slot word-shift)
(- other-pointer-lowtag))))
- (inst fs-segment-prefix)
- (inst sub (make-ea :dword :scale 1 :index temp) delta)))
+ (inst sub (make-ea :qword :base thread-base-tn
+ :scale 1 :index temp) delta)))
(load-tl-symbol-value result *alien-stack*))
#!-sb-thread
(:generator 0
(unless (zerop amount)
(let ((delta (logandc2 (+ amount 7) 7)))
(inst mov temp
- (make-ea :dword
- :disp (+ nil-value
- (static-symbol-offset '*alien-stack*)
+ (make-ea :qword
+ :disp (+ nil-value
+ (static-symbol-offset '*alien-stack*)
(ash symbol-tls-index-slot word-shift)
(- other-pointer-lowtag))))
- (inst fs-segment-prefix)
- (inst add (make-ea :dword :scale 1 :index temp) delta))))
+ (inst add (make-ea :qword :base thread-base-tn :scale 1 :index temp)
+ delta))))
#!-sb-thread
(:generator 0
(unless (zerop amount)