X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fruntime%2Fsparc-assem.S;h=6c2af48150f22110fe47e0b8a4afb6bafa20c794;hb=aab1cd8a9dc69450a046d4f176ec5b9fde43c42c;hp=9107951af772b31fd9612d56ba0e612f156726e8;hpb=75b52379bdc2269961af6a1308eca63610f38ac3;p=sbcl.git diff --git a/src/runtime/sparc-assem.S b/src/runtime/sparc-assem.S index 9107951..6c2af48 100644 --- a/src/runtime/sparc-assem.S +++ b/src/runtime/sparc-assem.S @@ -7,6 +7,7 @@ #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" @@ -212,6 +213,7 @@ undefined_tramp = . + 1 .word NIL .word NIL .word NIL + .word NIL b 1f unimp trap_Cerror @@ -236,22 +238,43 @@ closure_tramp = . + 1 .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