diff --git a/ldb/mips-assem.s b/ldb/mips-assem.s index e1112a023338b26ccbbe403fabf9fc05fe1ab3f2..1a3c9330d78c914c1ebe0c84db386926fc20b7a7 100644 --- a/ldb/mips-assem.s +++ b/ldb/mips-assem.s @@ -1,4 +1,4 @@ -/* $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/ldb/Attic/mips-assem.s,v 1.8 1990/07/23 19:43:45 wlott Exp $ */ +/* $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/ldb/Attic/mips-assem.s,v 1.9 1990/09/21 05:53:39 wlott Exp $ */ #include <machine/regdef.h> #include "lisp.h" @@ -117,8 +117,10 @@ call_into_lisp: lw CODE, 4-1(LEXENV) /* Jump into lisp land. */ - addu $2, CODE, 6*4 - type_FunctionPointer - j $2 + .set noat + addu LIP, CODE, 6*4 - type_FunctionPointer + j LIP + .set at .set noreorder @@ -280,3 +282,35 @@ call_into_c: j a0 .end call_into_c + +/* + * The undefined-function trampoline. + */ + .text + .globl undefined_tramp + .ent undefined_tramp +undefined_tramp: + break 10 + .byte 255 + .byte 4 + .byte 23 + .byte 254 + .byte 208 + .byte 1 + .align 2 + .end undefined_tramp + +/* + * The closure trampoline. + */ + .text + .globl closure_tramp + .ent closure_tramp +closure_tramp: + lw LEXENV, SYMBOL_FUNCTION_OFFSET(CNAME) + lw L0, CLOSURE_FUNCTION_OFFSET(LEXENV) + .set noat + add LIP, L0, FUNCTION_HEADER_CODE_OFFSET + j LIP + .set at + .end closure_tramp