X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Fx86-64%2Fsystem.lisp;h=46eedb58bda641e761e89c2ce8cc71370b457e93;hb=7deecae2d959173eda6a153d490c752c32050a9e;hp=88f999779c6b004f154d5943ec3306ff2b126d3b;hpb=f866d5d986cc920a8823549df5045b8182e7d92d;p=sbcl.git diff --git a/src/compiler/x86-64/system.lisp b/src/compiler/x86-64/system.lisp index 88f9997..46eedb5 100644 --- a/src/compiler/x86-64/system.lisp +++ b/src/compiler/x86-64/system.lisp @@ -44,7 +44,7 @@ (inst jmp :ne DONE) ;; Pick off fixnums. - (inst and al-tn 7) + (inst and al-tn fixnum-tag-mask) (inst jmp :e DONE) ;; must be an other immediate @@ -336,14 +336,12 @@ (:result-types unsigned-num unsigned-num) (:generator 5 (zeroize eax) + ;; Intel docs seem quite consistent on only using CPUID before RDTSC, + ;; not both before and after. Go figure. (inst cpuid) (inst rdtsc) - (inst push edx) - (inst push eax) - (zeroize eax) - (inst cpuid) - (inst pop lo) - (inst pop hi))) + (move lo eax) + (move hi edx))) (defmacro with-cycle-counter (&body body) "Returns the primary value of BODY as the primary value, and the