X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcode%2Fppc-vm.lisp;h=801192d1ef51735954af5b98dad265f24f657e0b;hb=e365f2f7a9c66d307b48fee70778f4eaa84bdcc0;hp=ee2eaa36b5b93e42354868112a0cf18c25d9a358;hpb=cab2c71bb1bb8a575d9eebdae335e731daa64183;p=sbcl.git diff --git a/src/code/ppc-vm.lisp b/src/code/ppc-vm.lisp index ee2eaa3..801192d 100644 --- a/src/code/ppc-vm.lisp +++ b/src/code/ppc-vm.lisp @@ -20,8 +20,8 @@ -;;; FIXUP-CODE-OBJECT -- Interface -;;; +;;;; FIXUP-CODE-OBJECT + (defun fixup-code-object (code offset fixup kind) (declare (type index offset)) (unless (zerop (rem offset n-word-bytes)) @@ -97,13 +97,9 @@ ;;; Given a signal context, return the floating point modes word in ;;; the same format as returned by FLOATING-POINT-MODES. -(defun context-floating-point-modes (context) - ;; FIXME: As of sbcl-0.6.7 and the big rewrite of signal handling - ;; for POSIXness and (at the Lisp level) opaque signal contexts, - ;; this is needs to be rewritten as an alien function. - (warn "stub CONTEXT-FLOATING-POINT-MODES") - 0) - +(define-alien-routine ("os_context_fp_control" context-floating-point-modes) + (sb!alien:unsigned 32) + (context (* os-context-t))) ;;;; INTERNAL-ERROR-ARGS. @@ -153,39 +149,13 @@ sb!vm:vector-data-offset) (* length sb!vm:n-byte-bits)) (let* ((index 0) - (error-number (sb!c::read-var-integer vector index))) + (error-number (sb!c:read-var-integer vector index))) (collect ((sc-offsets)) (loop (when (>= index length) (return)) - (sc-offsets (sb!c::read-var-integer vector index))) + (sc-offsets (sb!c:read-var-integer vector index))) (values error-number (sc-offsets)))))) - -;;; The loader uses this to convert alien names to the form they -;;; occur in the symbol table. This is ELF, so do nothing - -(defun extern-alien-name (name) - (declare (type simple-base-string name)) - name) - - - -;;; SANCTIFY-FOR-EXECUTION -- Interface. -;;; -;;; Do whatever is necessary to make the given code component executable. -;;; On the 601, we have less to do than on some other PowerPC chips. -;;; This should what needs to be done in the general case. -;;; -(defun sanctify-for-execution (component) - (without-gcing - (alien-funcall (extern-alien "ppc_flush_icache" - (function void - system-area-pointer - unsigned-long)) - (code-instructions component) - (* (code-header-ref component code-code-size-slot) - n-word-bytes))) - nil)