X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fruntime%2Fmips-assem.S;h=62b3672ecfdcc337df25d7ebc62d30029dcfde59;hb=961c6bf2eda5d492d5dbb7e275fe4e0931f7adf8;hp=6c7b7d61f4c4157656af5fa3306043f63d34356c;hpb=a3d0dcdeb54705dae89713d2eb3bdba8c9ddf0fa;p=sbcl.git diff --git a/src/runtime/mips-assem.S b/src/runtime/mips-assem.S index 6c7b7d6..62b3672 100644 --- a/src/runtime/mips-assem.S +++ b/src/runtime/mips-assem.S @@ -19,7 +19,6 @@ #include "genesis/fdefn.h" #include "genesis/closure.h" #include "genesis/funcallable-instance.h" -#include "genesis/return-pc.h" #include "genesis/simple-fun.h" #include "genesis/static-symbols.h" @@ -166,7 +165,7 @@ symbol: lw reg_A5, 20(reg_CFP) /* Calculate LRA */ - la reg_LRA, lra - RETURN_PC_RETURN_POINT_OFFSET + la reg_LRA, lra + OTHER_POINTER_LOWTAG /* Indirect closure */ lw reg_CODE, CLOSURE_FUN_OFFSET(reg_LEXENV) @@ -393,8 +392,8 @@ lra: .word RETURN_PC_HEADER_WIDETAG See debug-var-io.lisp. */ .byte 254 /* reg_FDEFN is #14. */ - .byte ((14 << 5) + sc_DescriptorReg) % 0x100 - .byte ((14 << 5) + sc_DescriptorReg) / 0x100 + .byte ((14 << 6) + sc_DescriptorReg) % 0x100 + .byte ((14 << 6) + sc_DescriptorReg) / 0x100 .align 2 .set reorder 1: lw reg_CODE, FDEFN_FUN_OFFSET(reg_FDEFN) @@ -447,10 +446,16 @@ funcallable_instance_tramp = . + 1 * copied and has to be relocatable. It also needs a properly aligned * header tag after the fun_end_breakpoint_guts symbol. */ + +/* + * For an explanation of the magic involved in function-end + * breakpoints, see the implementation in ppc-assem.S. + */ + .align 3 /* minimum alignment for a lisp object */ LEAF(fun_end_breakpoint_guts) .set noreorder - .word RETURN_PC_HEADER_WIDETAG + .word RETURN_PC_HEADER_WIDETAG + 0x800 b multiple_value_return nop .set reorder @@ -469,8 +474,10 @@ funcallable_instance_tramp = . + 1 multiple_value_return: FEXPORT(fun_end_breakpoint_trap) - break 0x0, trap_FunEndBreakpoint + .set noreorder b multiple_value_return + break 0x0, trap_FunEndBreakpoint + .set reorder EXPORT(fun_end_breakpoint_end) END(fun_end_breakpoint_guts)