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