From 41ed1a65685ff642d9ba37235c758ce3ad916574 Mon Sep 17 00:00:00 2001 From: wlott <wlott> Date: Mon, 26 Nov 1990 19:46:54 +0000 Subject: [PATCH] Added the closure_tramp. Added an extra NIL in the header of the undefined_tramp 'cause we were one short. Fixed call_into_c to no longer trash the first argument. --- ldb/sparc-assem.s | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/ldb/sparc-assem.s b/ldb/sparc-assem.s index 9720c3d0a..e63b80128 100644 --- a/ldb/sparc-assem.s +++ b/ldb/sparc-assem.s @@ -136,9 +136,8 @@ _call_into_c: st CODE, [CFP+8] /* Turn on pseudo-atomic. */ - set 1, NL1 sethi %hi(PSEUDO_ATOMIC_ATOMIC+SYMBOL_VALUE_OFFSET), L0 - st NL1, [L0+%lo(PSEUDO_ATOMIC_ATOMIC+SYMBOL_VALUE_OFFSET)] + st CSP, [L0+%lo(PSEUDO_ATOMIC_ATOMIC+SYMBOL_VALUE_OFFSET)] /* Store LISP state */ store(ALLOC,current_dynamic_space_free_pointer) @@ -147,7 +146,7 @@ _call_into_c: store(CFP,current_control_frame_pointer) /* No longer in Lisp. */ - store(NL1,foreign_function_call_active) + store(CSP,foreign_function_call_active) /* Were we interrupted? */ sethi %hi(PSEUDO_ATOMIC_INTERRUPTED+SYMBOL_VALUE_OFFSET), L0 @@ -214,10 +213,31 @@ _undefined_tramp: .word NIL .word NIL .word NIL + .word NIL unimp trap_Error + + .global _closure_tramp + .align 8 + .byte 0 +_closure_tramp: + .byte 0, 0, type_FunctionHeader + .word _closure_tramp + .word NIL + .word NIL + .word NIL + .word NIL + + ld [CNAME+SYMBOL_FUNCTION_OFFSET], LEXENV + ld [LEXENV+CLOSURE_FUNCTION_OFFSET], CODE + jmp CODE+FUNCTION_HEADER_CODE_OFFSET + nop + + + + /****************************************************************\ We need our own version of sigtramp. -- GitLab