From: stassats <sta...@us...> - 2015-10-04 21:12:21
|
The branch "master" has been updated in SBCL: via 7ba5bf6dd35dbf6b55c491b7f956363e4a177661 (commit) from aee2ca45a8bd888d25581b7b832c965392b89c3f (commit) - Log ----------------------------------------------------------------- commit 7ba5bf6dd35dbf6b55c491b7f956363e4a177661 Author: Stas Boukarev <sta...@gm...> Date: Sat Sep 26 03:19:31 2015 +0300 ARM64: correct context-pc. PC is no longer a register, call os_context_pc_addr for help. --- src/code/arm64-vm.lisp | 13 +++++++++---- 1 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/code/arm64-vm.lisp b/src/code/arm64-vm.lisp index fdd3710..883f3de 100644 --- a/src/code/arm64-vm.lisp +++ b/src/code/arm64-vm.lisp @@ -33,6 +33,10 @@ (context (* os-context-t)) (index int)) +(define-alien-routine ("os_context_pc_addr" context-register-pc-addr) + (* unsigned-int) + (context (* os-context-t))) + ;;; FIXME: Should this and CONTEXT-PC be INLINE to reduce consing? ;;; (Are they used in anything time-critical, or just the debugger?) (defun context-register (context index) @@ -40,12 +44,13 @@ (deref (context-register-addr context index))) (defun %set-context-register (context index new) -(declare (type (alien (* os-context-t)) context)) -(setf (deref (context-register-addr context index)) - new)) + (declare (type (alien (* os-context-t)) context)) + (setf (deref (context-register-addr context index)) + new)) (defun context-pc (context) - (int-sap (context-register context (1+ lr-offset)))) + (declare (type (alien (* os-context-t)) context)) + (int-sap (deref (context-register-pc-addr context)))) ;;;; INTERNAL-ERROR-ARGS. ----------------------------------------------------------------------- hooks/post-receive -- SBCL |