X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fruntime%2Fsparc-assem.S;h=9107951af772b31fd9612d56ba0e612f156726e8;hb=78fa16bf55be44cc16845be84d98023e83fb14bc;hp=a6c03036f077250ab3d889e6951f5d72401a01cc;hpb=68fd2d2dd6f265669a8957accd8a33e62786a97e;p=sbcl.git diff --git a/src/runtime/sparc-assem.S b/src/runtime/sparc-assem.S index a6c0303..9107951 100644 --- a/src/runtime/sparc-assem.S +++ b/src/runtime/sparc-assem.S @@ -1,12 +1,15 @@ #define _ASM -#define FUNCDEF(x) .type x,@function +#include "sparc-funcdef.h" #define LANGUAGE_ASSEMBLY #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. */ @@ -202,6 +200,8 @@ call_into_c: ret nop +/* Lisp calling convention. notice the first .byte line. + */ .global undefined_tramp FUNCDEF(undefined_tramp) .align 8 @@ -216,11 +216,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: @@ -228,6 +224,8 @@ undefined_tramp = . + 1 jmp reg_CODE+SIMPLE_FUN_CODE_OFFSET nop +/* Lisp calling convention. Notice the first .byte line. + */ .global closure_tramp FUNCDEF(closure_tramp) .align 8 @@ -275,9 +273,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