[Git][cmucl/cmucl][sparc64-dev] Adjust offset computation for lisp-return

Raymond Toy rtoy at common-lisp.net
Wed Jan 3 18:53:06 UTC 2018


Raymond Toy pushed to branch sparc64-dev at cmucl / cmucl


Commits:
47d140f4 by Raymond Toy at 2018-01-03T10:53:22-08:00
Adjust offset computation for lisp-return

The offset is the number of instructions to skip over, so the
multiplier should be 4 not word-bytes (8).  And the LRA header word is
8 bytes long, so we need to skip over that to get to the correct
instruction.

I think.

- - - - -


1 changed file:

- src/compiler/sparc64/macros.lisp


Changes:

=====================================
src/compiler/sparc64/macros.lisp
=====================================
--- a/src/compiler/sparc64/macros.lisp
+++ b/src/compiler/sparc64/macros.lisp
@@ -133,8 +133,10 @@
 (defmacro lisp-return (return-pc &key (offset 0) (frob-code t))
   "Return to RETURN-PC."
   `(progn
+     ;; 8 to skip over the lra object, and 4*offset to get to the
+     ;; right instruction since each instruction is 4 bytes long.
      (inst j ,return-pc
-	   (- (* (1+ ,offset) word-bytes) other-pointer-type))
+	   (- (+ 8 (* ,offset 4)) other-pointer-type))
      ,(if frob-code
 	  `(move code-tn ,return-pc)
 	  '(inst nop))))



View it on GitLab: https://gitlab.common-lisp.net/cmucl/cmucl/commit/47d140f4b307a9b3f60822df6ec551dbf6619802

---
View it on GitLab: https://gitlab.common-lisp.net/cmucl/cmucl/commit/47d140f4b307a9b3f60822df6ec551dbf6619802
You're receiving this email because of your account on gitlab.common-lisp.net.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mailman.common-lisp.net/pipermail/cmucl-cvs/attachments/20180103/35b292a2/attachment.html>


More information about the cmucl-cvs mailing list