X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcode%2Fx86-64-vm.lisp;h=2706a42fe000459590f6fbc5bb5db558c2c2209d;hb=829ced3e78a23ba153ba4db64e6ea6984c2313b6;hp=e263853b899a3c345ca9d19ee71d06ed0bb6b517;hpb=3d87bae55ccdbab2c9ed117b8399013adfd8bbf2;p=sbcl.git diff --git a/src/code/x86-64-vm.lisp b/src/code/x86-64-vm.lisp index e263853..2706a42 100644 --- a/src/code/x86-64-vm.lisp +++ b/src/code/x86-64-vm.lisp @@ -34,32 +34,12 @@ ;;; some other package, perhaps SB-KERNEL. (define-alien-type os-context-t (struct os-context-t-struct)) -;;;; MACHINE-TYPE and MACHINE-VERSION +;;;; MACHINE-TYPE (defun machine-type () #!+sb-doc "Return a string describing the type of the local machine." "X86-64") - -;;; arch-specific support for CL:MACHINE-VERSION, defined OAOO elsewhere -(defun get-machine-version () - #!+linux - (with-open-file (stream "/proc/cpuinfo" - ;; Even on Linux it's an option to build - ;; kernels without /proc filesystems, so - ;; degrade gracefully. - :if-does-not-exist nil) - (loop with line while (setf line (read-line stream nil)) - ;; The field "model name" exists on kernel 2.4.21-rc6-ac1 - ;; anyway, with values e.g. - ;; "AMD Athlon(TM) XP 2000+" - ;; "Intel(R) Pentium(R) M processor 1300MHz" - ;; which seem comparable to the information in the example - ;; in the MACHINE-VERSION page of the ANSI spec. - when (eql (search "model name" line) 0) - return (string-trim " " (subseq line (1+ (position #\: line)))))) - #!-linux - nil) ;;;; :CODE-OBJECT fixups @@ -109,7 +89,7 @@ ;;;; negligible. (declaim (inline context-pc-addr)) -(define-alien-routine ("os_context_pc_addr" context-pc-addr) (* unsigned-long) +(define-alien-routine ("os_context_pc_addr" context-pc-addr) (* unsigned) ;; (Note: Just as in CONTEXT-REGISTER-ADDR, we intentionally use an ;; 'unsigned *' interpretation for the 32-bit word passed to us by ;; the C code, even though the C code may think it's an 'int *'.) @@ -119,12 +99,12 @@ (defun context-pc (context) (declare (type (alien (* os-context-t)) context)) (let ((addr (context-pc-addr context))) - (declare (type (alien (* unsigned-long)) addr)) + (declare (type (alien (* unsigned)) addr)) (int-sap (deref addr)))) (declaim (inline context-register-addr)) (define-alien-routine ("os_context_register_addr" context-register-addr) - (* unsigned-long) + (* unsigned) ;; (Note the mismatch here between the 'int *' value that the C code ;; may think it's giving us and the 'unsigned *' value that we ;; receive. It's intentional: the C header files may think of @@ -138,13 +118,13 @@ (defun context-register (context index) (declare (type (alien (* os-context-t)) context)) (let ((addr (context-register-addr context index))) - (declare (type (alien (* unsigned-long)) addr)) + (declare (type (alien (* unsigned)) addr)) (deref addr))) (defun %set-context-register (context index new) (declare (type (alien (* os-context-t)) context)) (let ((addr (context-register-addr context index))) - (declare (type (alien (* unsigned-long)) addr)) + (declare (type (alien (* unsigned)) addr)) (setf (deref addr) new))) ;;; This is like CONTEXT-REGISTER, but returns the value of a float