X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcode%2Fdebug-int.lisp;h=320c7c3f5b15d971a8f19d36791c0995b467a4ab;hb=4281f3b99891120fea5cabbc3a9d091b19f45995;hp=352f968f7e3deea69bba6a2d0de5957aa41cc3ca;hpb=bcb7a9c9d1cc1566d449efdfd40476d16477a2c9;p=sbcl.git diff --git a/src/code/debug-int.lisp b/src/code/debug-int.lisp index 352f968..320c7c3 100644 --- a/src/code/debug-int.lisp +++ b/src/code/debug-int.lisp @@ -1002,20 +1002,13 @@ "Finds the PC for the return from an assembly routine properly. For some architectures (such as PPC) this will not be the $LRA register." - (let ((return-machine-address - ;; This conditional logic should probably go into - ;; architecture specific files somehow. - #!+ppc (sap-int (sb!vm::context-lr scp)) - #!+sparc (+ (sb!vm:context-register scp sb!vm::lip-offset) 8) - #!-(or ppc sparc) (- (sb!vm:context-register scp sb!vm::lra-offset) - sb!vm:other-pointer-lowtag)) - (code-header-len (* (get-header-data code) - sb!vm:n-word-bytes))) - (values (- return-machine-address - (- (get-lisp-obj-address code) - sb!vm:other-pointer-lowtag) - code-header-len) - return-machine-address))) + (let ((return-machine-address (sb!vm::return-machine-address scp)) + (code-header-len (* (get-header-data code) sb!vm:n-word-bytes))) + (values (- return-machine-address + (- (get-lisp-obj-address code) + sb!vm:other-pointer-lowtag) + code-header-len) + return-machine-address))) ;;; Find the code object corresponding to the object represented by ;;; bits and return it. We assume bogus functions correspond to the