#include "globals.h"
#include "sbcl.h"
#include "genesis/closure.h"
+#include "genesis/funcallable-instance.h"
#include "genesis/fdefn.h"
#include "genesis/static-symbols.h"
#include "genesis/simple-fun.h"
ret
nop
+/* Lisp calling convention. notice the first .byte line.
+ */
.global undefined_tramp
FUNCDEF(undefined_tramp)
.align 8
.word NIL
.word NIL
.word NIL
+ .word NIL
b 1f
unimp trap_Cerror
jmp reg_CODE+SIMPLE_FUN_CODE_OFFSET
nop
+/* Lisp calling convention. Notice the first .byte line.
+ */
.global closure_tramp
FUNCDEF(closure_tramp)
.align 8
.word NIL
.word NIL
.word NIL
+ .word NIL
ld [reg_FDEFN+FDEFN_FUN_OFFSET], reg_LEXENV
ld [reg_LEXENV+CLOSURE_FUN_OFFSET], reg_CODE
jmp reg_CODE+SIMPLE_FUN_CODE_OFFSET
nop
-
+ .global funcallable_instance_tramp
+ FUNCDEF(funcallable_instance_tramp)
+ .align 8
+ .word SIMPLE_FUN_HEADER_WIDETAG
+funcallable_instance_tramp = . + 1
+ .word funcallable_instance_tramp
+ .word NIL
+ .word NIL
+ .word NIL
+ .word NIL
+ .word NIL
+
+ ld [reg_LEXENV+FUNCALLABLE_INSTANCE_FUNCTION_OFFSET], reg_LEXENV
+ ld [reg_LEXENV+CLOSURE_FUN_OFFSET], reg_CODE
+ jmp reg_CODE+SIMPLE_FUN_CODE_OFFSET
+ nop
/*
* Function-end breakpoint magic.
*/
+/*
+ * For an explanation of the magic involved in function-end
+ * breakpoints, see the implementation in ppc-assem.S.
+ */
+
.text
.align 8
.global fun_end_breakpoint_guts
fun_end_breakpoint_guts:
- .word RETURN_PC_HEADER_WIDETAG
+ .word RETURN_PC_HEADER_WIDETAG + 0x800
b 1f
nop
mov reg_CSP, reg_OCFP
ta ST_FLUSH_WINDOWS ! flush register windows
retl ! return from leaf routine
nop
-