#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
/* 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)
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
/* 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
/* 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
/* 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. */
ret
nop
+/* Lisp calling convention. notice the first .byte line.
+ */
.global undefined_tramp
FUNCDEF(undefined_tramp)
.align 8
jmp reg_CODE+SIMPLE_FUN_CODE_OFFSET
nop
+/* Lisp calling convention. Notice the first .byte line.
+ */
.global closure_tramp
FUNCDEF(closure_tramp)
.align 8
.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