From eb6ce575fc9faa7d3f522e082513413ec5081fde Mon Sep 17 00:00:00 2001 From: rtoy <rtoy> Date: Fri, 6 Aug 2004 17:23:23 +0000 Subject: [PATCH] Comment better on the relationship between the LINKAGE_ADDR_REG here and resolve_linkage_tramp in sparc-assem.S. --- lisp/sparc-arch.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/lisp/sparc-arch.c b/lisp/sparc-arch.c index da1e65897..fad1705c7 100644 --- a/lisp/sparc-arch.c +++ b/lisp/sparc-arch.c @@ -1,6 +1,6 @@ /* - $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/sparc-arch.c,v 1.23 2004/07/29 16:47:40 rtoy Exp $ + $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/sparc-arch.c,v 1.24 2004/08/06 17:23:23 rtoy Exp $ This code was written as part of the CMU Common Lisp project at Carnegie Mellon University, and has been placed in the public domain. @@ -628,6 +628,10 @@ lispobj funcall3(lispobj function, lispobj arg0, lispobj arg1, lispobj arg2) * resolve_linkage_tramp is always called from call_into_c. (This is * enforced by having new-genesis create an entry for call_into_c, so * we never have to do a lookup for call_into_c.) + * + * The LINKAGE_ADDR_REG is important! resolve_linkage_tramp needs to + * be coordinated with this because that's how resolve_linkage_tramp + * figures out what linkage entry it's being called from. */ #define LINKAGE_TEMP_REG reg_L0 #define LINKAGE_ADDR_REG reg_L0 @@ -645,7 +649,7 @@ void* arch_make_jump_entry(void* reloc_addr, void *target_addr) * The instruction sequence is: * * sethi %hi(addr), temp_reg - * jmp %temp_reg + %lo(addr), %addr_reg + * jmpl %temp_reg + %lo(addr), %addr_reg * nop * nop * -- GitLab