"Returns a string describing the type of the local machine."
"MIPS")
-(defun machine-version ()
- "Returns a string describing the version of the local machine."
+;;; support for CL:MACHINE-VERSION defined OAOO elsewhere
+(defun get-machine-version ()
#!+little-endian "little-endian"
#!-little-endian "big-endian")
-
\f
-;;; FIXUP-CODE-OBJECT -- Interface
-;;;
+;;;; FIXUP-CODE-OBJECT
+
(defun fixup-code-object (code offset value kind)
(unless (zerop (rem offset n-word-bytes))
(error "Unaligned instruction? offset=#x~X." offset))
(sb!sys:without-gcing
(let ((sap (truly-the system-area-pointer
- (%primitive sb!c::code-instructions code))))
+ (%primitive sb!c::code-instructions code))))
(ecase kind
(:jump
- (assert (zerop (ash value -28)))
- (setf (ldb (byte 26 0) (sap-ref-32 sap offset))
- (ash value -2)))
+ (aver (zerop (ash value -28)))
+ (setf (ldb (byte 26 0) (sap-ref-32 sap offset))
+ (ash value -2)))
(:lui
- (setf (sap-ref-16 sap
- #!+little-endian offset
- #!-little-endian (+ offset 2))
- (+ (ash value -16)
- (if (logbitp 15 value) 1 0))))
+ (setf (sap-ref-16 sap
+ #!+little-endian offset
+ #!-little-endian (+ offset 2))
+ (+ (ash value -16)
+ (if (logbitp 15 value) 1 0))))
(:addi
- (setf (sap-ref-16 sap
- #!+little-endian offset
- #!-little-endian (+ offset 2))
- (ldb (byte 16 0) value)))))))
+ (setf (sap-ref-16 sap
+ #!+little-endian offset
+ #!-little-endian (+ offset 2))
+ (ldb (byte 16 0) value)))))))
\f
(define-alien-routine ("os_context_pc_addr" context-pc-addr) (* unsigned-int)
;; binary-compatible with 64-bit mode. Since there appears not to
;; be ALIEN support for 64-bit return values, we have to do the
;; hacky pointer arithmetic thing. -- CSR, 2002-09-01
- (int-sap (deref (context-pc-addr context)
- #!-little-endian 1
- ;; Untested
- #!+little-endian 0)))
+ (int-sap (deref (context-pc-addr context)
+ #!-little-endian 1
+ ;; Untested
+ #!+little-endian 0)))
(define-alien-routine ("os_context_register_addr" context-register-addr)
(* unsigned-int)
;;; (Are they used in anything time-critical, or just the debugger?)
(defun context-register (context index)
(declare (type (alien (* os-context-t)) context))
- (deref (context-register-addr context index)
- #!-little-endian 1
- #!+little-endian 0))
+ (deref (context-register-addr context index)
+ #!-little-endian 1
+ #!+little-endian 0))
(defun %set-context-register (context index new)
(declare (type (alien (* os-context-t)) context))
- (setf (deref (context-register-addr context index)
- #!-little-endian 1
- #!+little-endian 0)
- new))
+ (setf (deref (context-register-addr context index)
+ #!-little-endian 1
+ #!+little-endian 0)
+ new))
#!+linux
;;; For now.
;;;
;;; Given the sigcontext, extract the internal error arguments from the
;;; instruction stream.
-;;;
+;;;
(defun internal-error-args (context)
(declare (type (alien (* os-context-t)) context))
(/show0 "entering INTERNAL-ERROR-ARGS, CONTEXT=..")
(/hexstr context)
(let ((pc (context-pc context))
- (cause (context-bd-cause-int context)))
+ (cause (context-bd-cause-int context)))
(declare (type system-area-pointer pc))
(/show0 "got PC=..")
(/hexstr (sap-int pc))
(/show0 "now PC=..")
(/hexstr (sap-int pc))
(let* ((length (sap-ref-8 pc 4))
- (vector (make-array length :element-type '(unsigned-byte 8))))
+ (vector (make-array length :element-type '(unsigned-byte 8))))
(declare (type (unsigned-byte 8) length)
- (type (simple-array (unsigned-byte 8) (*)) vector))
+ (type (simple-array (unsigned-byte 8) (*)) vector))
(/show0 "LENGTH,VECTOR,ERROR-NUMBER=..")
(/hexstr length)
(/hexstr vector)
- (copy-from-system-area pc (* n-byte-bits 5)
- vector (* n-word-bits
- vector-data-offset)
- (* length n-byte-bits))
+ (copy-ub8-from-system-area pc 5 vector 0 length)
(let* ((index 0)
- (error-number (sb!c::read-var-integer vector index)))
- (/hexstr error-number)
- (collect ((sc-offsets))
- (loop
- (/show0 "INDEX=..")
- (/hexstr index)
- (when (>= index length)
- (return))
- (sc-offsets (sb!c::read-var-integer vector index)))
- (values error-number (sc-offsets)))))))
+ (error-number (sb!c:read-var-integer vector index)))
+ (/hexstr error-number)
+ (collect ((sc-offsets))
+ (loop
+ (/show0 "INDEX=..")
+ (/hexstr index)
+ (when (>= index length)
+ (return))
+ (sc-offsets (sb!c:read-var-integer vector index)))
+ (values error-number (sc-offsets)))))))