X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fruntime%2Fsparc-assem.S;h=cb4bfe64aa5755ff780c622e1c88005bd5e4a55b;hb=dcf5978d9d33098e868ae6eea28e1b310038c03d;hp=a6c03036f077250ab3d889e6951f5d72401a01cc;hpb=68fd2d2dd6f265669a8957accd8a33e62786a97e;p=sbcl.git diff --git a/src/runtime/sparc-assem.S b/src/runtime/sparc-assem.S index a6c0303..cb4bfe6 100644 --- a/src/runtime/sparc-assem.S +++ b/src/runtime/sparc-assem.S @@ -6,7 +6,10 @@ #include "lispregs.h" #include "globals.h" #include "sbcl.h" - +#include "genesis/closure.h" +#include "genesis/fdefn.h" +#include "genesis/static-symbols.h" +#include "genesis/simple-fun.h" #define load(sym, reg) \ sethi %hi(sym), reg; ld [reg+%lo(sym)], reg @@ -16,7 +19,6 @@ /* FIXME */ #define FRAMESIZE 0x48 #define ST_FLUSH_WINDOWS 0x03 -#define PSEUDO_ATOMIC_TRAP_NUMBER 64 .seg "text" .global call_into_lisp FUNCDEF(call_into_lisp) @@ -61,11 +63,7 @@ call_into_lisp: sub reg_ALLOC, 4, reg_ALLOC andcc reg_ALLOC, 3, reg_ZERO - /* OK, this is ridiculous. We badly urgently need this to be - centralized, because that's now _three_ places where this - number is used. CSR, 2002-02-09 */ - - tne 64 + tne PSEUDO_ATOMIC_TRAP /* Pass in the args. */ sll %i2, 2, reg_NARGS mov %i1, reg_CFP @@ -113,7 +111,7 @@ lra: /* Were we interrupted? */ sub reg_ALLOC, 4, reg_ALLOC andcc reg_ALLOC, 3, reg_ZERO - tne PSEUDO_ATOMIC_TRAP_NUMBER + tne PSEUDO_ATOMIC_TRAP /* Back to C we go. */ ld [%sp+FRAMESIZE-4], %i7 @@ -153,7 +151,7 @@ call_into_c: /* Were we interrupted? */ sub reg_ALLOC, 4, reg_ALLOC andcc reg_ALLOC, 3, reg_ZERO - tne PSEUDO_ATOMIC_TRAP_NUMBER + tne PSEUDO_ATOMIC_TRAP /* Into C we go. */ call reg_CFUNC @@ -191,7 +189,7 @@ call_into_c: /* No longer atomic. */ sub reg_ALLOC, 4, reg_ALLOC andcc reg_ALLOC, 3, reg_ZERO - tne PSEUDO_ATOMIC_TRAP_NUMBER + tne PSEUDO_ATOMIC_TRAP /* Reset the lisp stack. */ /* Note: OCFP is in one of the locals, it gets preserved across C. */ @@ -216,11 +214,7 @@ undefined_tramp = . + 1 b 1f unimp trap_Cerror .byte 4 -#ifdef type_LongFloat - .byte 24 -#else - .byte 23 -#endif + .byte UNDEFINED_FUN_ERROR .byte 254, sc_DescriptorReg, 3 .align 4 1: @@ -275,9 +269,9 @@ fun_end_breakpoint_trap: .global fun_end_breakpoint_end fun_end_breakpoint_end: - .global flush_icache - FUNCDEF(flush_icache) -flush_icache: + .global sparc_flush_icache + FUNCDEF(sparc_flush_icache) +sparc_flush_icache: add %o0,%o1,%o2 1: iflush %o0 ! flush instruction cache add %o0,8,%o0 @@ -293,3 +287,4 @@ save_context: ta ST_FLUSH_WINDOWS ! flush register windows retl ! return from leaf routine nop +