2 (ignore-errors (defknown cl-user
::%read-cpu
(unsigned-byte-32 simple-array-unsigned-byte-16
) nil
))
6 (defmacro vect-ea
(vect idx
)
7 `(make-ea :dword
:base
,vect
:index
,idx
8 :disp
(- (* vector-data-offset n-word-bytes
) other-pointer-lowtag
)))
10 (define-vop (%read-cpu
/x86
)
11 (:translate cl-user
::%read-cpu
)
14 (:args
(n :scs
(unsigned-reg) :target eax
)
15 (result :scs
(descriptor-reg)))
16 (:arg-types unsigned-byte-32 simple-array-unsigned-byte-16
)
18 (:temporary
(:sc unsigned-reg
:offset eax-offset
:from
(:argument
0)) eax
)
19 (:temporary
(:sc unsigned-reg
:offset ebx-offset
) ebx
)
20 (:temporary
(:sc unsigned-reg
:offset ecx-offset
) ecx
)
21 (:temporary
(:sc unsigned-reg
:offset edx-offset
) edx
)
22 (:temporary
(:sc unsigned-reg
) index
)
26 (inst xor index index
)
44 (inst mov
(vect-ea result index
) edx
)
49 (inst mov
(vect-ea result index
) edx
)
59 (inst mov
(vect-ea result index
) eax
)
64 (inst mov
(vect-ea result index
) eax
)
72 (inst mov
(vect-ea result index
) eax
)
77 (inst mov
(vect-ea result index
) eax
)
84 (inst mov
(vect-ea result index
) eax
)
89 (inst mov
(vect-ea result index
) eax
)