/* vm/jit/mips/asmpart.S - Java-C interface functions for mips
- Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
- Institut f. Computersprachen, TU Wien
- R. Grafl, A. Krall, C. Kruegel, C. Oates, R. Obermaisser, M. Probst,
- S. Ring, E. Steiner, C. Thalinger, D. Thuernbeck, P. Tomsich,
- J. Wenninger
+ Copyright (C) 1996-2005 R. Grafl, A. Krall, C. Kruegel, C. Oates,
+ R. Obermaisser, M. Platter, M. Probst, S. Ring, E. Steiner,
+ C. Thalinger, D. Thuernbeck, P. Tomsich, C. Ullrich, J. Wenninger,
+ Institut f. Computersprachen - TU Wien
This file is part of CACAO.
Authors: Andreas Krall
- $Id: asmpart.S 1652 2004-12-02 10:27:24Z twisti $
+ $Id: asmpart.S 1735 2004-12-07 14:33:27Z twisti $
*/
#include "config.h"
#include "vm/jit/mips/offsets.h"
+#include "vm/jit/mips/asmoffsets.h"
#define zero $0
#define ashift 3
-#define MethodPointer -8
-#define FrameSize -12
-#define IsSync -16
-#define IsLeaf -20
-#define IntSave -24
-#define FltSave -28
-#define ExTableSize -32
-#define ExTableStart -32
-
-#define ExEntrySize -32
-#define ExStartPC -8
-#define ExEndPC -16
-#define ExHandlerPC -24
-#define ExCatchType -32
-
-
.text
.set noat
.ent asm_calljavafunction
call_name:
- .ascii "calljavafunction\0\0"
-
.align 3
- .quad 0 /* catch type all */
- .quad calljava_xhandler /* handler pc */
- .quad calljava_xhandler /* end pc */
- .quad asm_calljavafunction /* start pc */
- .long 1 /* extable size */
- .long 0 /* fltsave */
- .long 0 /* intsave */
- .long 0 /* isleaf */
- .long 0 /* IsSync */
- .long 10*8 /* frame size */
- .quad 0 /* method pointer (pointer to name) */
+
+ .dword 0 /* catch type all */
+ .dword calljava_xhandler /* handler pc */
+ .dword calljava_xhandler /* end pc */
+ .dword asm_calljavafunction /* start pc */
+ .word 1 /* extable size */
+ .word 0 /* fltsave */
+ .word 0 /* intsave */
+ .word 0 /* isleaf */
+ .word 0 /* IsSync */
+ .word 10*8 /* frame size */
+ .dword 0 /* method pointer (pointer to name) */
asm_calljavafunction:
aaddiu sp,sp,-10*8 /* allocate stack space */
.ent asm_calljavafunction2
call_name2:
- .ascii "calljavafunction2\0\0"
-
.align 3
- .quad 0 /* catch type all */
- .quad calljava_xhandler2 /* handler pc */
- .quad calljava_xhandler2 /* end pc */
- .quad asm_calljavafunction2 /* start pc */
- .long 1 /* extable size */
- .long 0 /* fltsave */
- .long 1 /* intsave */
- .long 0 /* isleaf */
- .long 0 /* IsSync */
- .long 96 /* frame size */
- .quad 0 /* method pointer (pointer to name) */
+
+ .dword 0 /* catch type all */
+ .dword calljava_xhandler2 /* handler pc */
+ .dword calljava_xhandler2 /* end pc */
+ .dword asm_calljavafunction2 /* start pc */
+ .word 1 /* extable size */
+ .word 0 /* fltsave */
+ .word 1 /* intsave */
+ .word 0 /* isleaf */
+ .word 0 /* IsSync */
+ .word 12*8 /* frame size */
+ .dword 0 /* method pointer (pointer to name) */
asm_calljavafunction2:
asm_calljavafunction2double:
.ent asm_check_clinit
asm_check_clinit:
- daddiu sp,sp,-23*8
+ daddiu sp,sp,-24*8
sd ra,0*8(sp) /* save return address */
ldc1 fa6,20*8(sp)
ldc1 fa7,21*8(sp)
- daddiu sp,sp,23*8
+ daddiu sp,sp,24*8
daddiu ra,ra,-2*4 /* go back 2 instructions (jal + nop delay) */
jr ra
ldc1 fa6,20*8(sp)
ldc1 fa7,21*8(sp)
- daddiu sp,sp,23*8
+ daddiu sp,sp,24*8
aaddiu xpc,ra,-4 /* faulting address is return adress - 4 */
b asm_handle_exception
j t9
nb_monitorenter:
- daddiu sp,sp,-1*8
+ daddiu sp,sp,-2*8
sd ra,0*8(sp)
ald a0,string_java_lang_NullPointerException
jal new_exception
move xptr,v0
ld ra,0*8(sp)
- daddiu sp,sp,1*8
+ daddiu sp,sp,2*8
aaddiu xpc,ra,-4 /* faulting address is return adress - 4*/
b asm_handle_nat_exception
j t9
nb_monitorexit:
- daddiu sp,sp,-1*8
+ daddiu sp,sp,-2*8
sd ra,0*8(sp)
jal new_nullpointerexception
move xptr,v0
ld ra,0*8(sp)
- daddiu sp,sp,1*8
+ daddiu sp,sp,2*8
aaddiu xpc,ra,-4 /* faulting address is return adress - 4*/
b asm_handle_nat_exception
j itmp3
nb_idiv:
- daddiu sp,sp,-1*8
+ daddiu sp,sp,-2*8
sd ra,0*8(sp)
jal new_arithmeticexception
move xptr,v0
ld ra,0*8(sp)
- daddiu sp,sp,1*8
+ daddiu sp,sp,2*8
aaddiu xpc,ra,-4 /* faulting address is return adress - 4*/
b asm_handle_nat_exception
j itmp3
nb_ldiv:
- daddiu sp,sp,-1*8
+ daddiu sp,sp,-2*8
sd ra,0*8(sp)
jal new_arithmeticexception
move xptr,v0
ld ra,0*8(sp)
- daddiu sp,sp,1*8
+ daddiu sp,sp,2*8
aaddiu xpc,ra,-4 /* faulting address is return adress - 4*/
b asm_handle_nat_exception
j t9
nb_irem:
- daddiu sp,sp,-1*8
+ daddiu sp,sp,-2*8
sd ra,0*8(sp)
jal new_arithmeticexception
move xptr,v0
ld ra,0*8(sp)
- daddiu sp,sp,1*8
+ daddiu sp,sp,2*8
aaddiu xpc,ra,-4 /* faulting address is return adress - 4*/
b asm_handle_nat_exception
j t9
nb_lrem:
- daddiu sp,sp,-1*8
+ daddiu sp,sp,-2*8
sd ra,0*8(sp)
jal new_arithmeticexception
move xptr,v0
ld ra,0*8(sp)
- daddiu sp,sp,1*8
+ daddiu sp,sp,2*8
aaddiu xpc,ra,-4 /* faulting address is return adress - 4*/
b asm_handle_nat_exception
j ra /* return */
nb_aastore_null:
- daddiu sp,sp,-1*8
+ daddiu sp,sp,-2*8
sd ra,0*8(sp)
jal new_nullpointerexception
move xptr,v0
ld ra,0*8(sp)
- daddiu sp,sp,1*8
+ daddiu sp,sp,2*8
move xpc,ra /* faulting address is return adress */
b asm_handle_nat_exception
nb_aastore_bound:
- daddiu sp,sp,-1*8
+ daddiu sp,sp,-2*8
sd ra,0*8(sp)
move a0,a1 /* move index into a0 */
jal new_arrayindexoutofboundsexception
move xptr,v0
ld ra,0*8(sp)
- daddiu sp,sp,1*8
+ daddiu sp,sp,2*8
aaddiu sp,sp,32 /* free stack space */
move xpc,ra /* faulting address is return adress */
b asm_handle_nat_exception
nb_aastore_store:
- daddiu sp,sp,-1*8
+ daddiu sp,sp,-2*8
sd ra,0*8(sp)
jal new_arraystoreexception
move xptr,v0
ld ra,0*8(sp)
- daddiu sp,sp,1*8
+ daddiu sp,sp,2*8
move xpc,ra /* faulting address is return adress */
b asm_handle_nat_exception
asm_criticalsections:
#if defined(USE_THREADS) && defined(NATIVE_THREADS)
- .quad _crit_begin1
- .quad _crit_end1
- .quad _crit_restart1
- .quad _crit_begin2
- .quad _crit_end2
- .quad _crit_restart2
+ .dword _crit_begin1
+ .dword _crit_end1
+ .dword _crit_restart1
+ .dword _crit_begin2
+ .dword _crit_end2
+ .dword _crit_restart2
#endif
- .quad 0
+ .dword 0
.text