/* src/vm/jit/alpha/asmpart.S - Java-C interface functions for alpha
- Copyright (C) 1996-2005, 2006, 2007 R. Grafl, A. Krall, C. Kruegel,
+ Copyright (C) 1996-2005, 2006, 2007, 2008 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
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301, USA.
- $Id: asmpart.S 8279 2007-08-09 09:36:57Z michi $
-
*/
.globl asm_vm_call_method_exception_handler
.globl asm_vm_call_method_end
- .globl asm_call_jit_compiler
-
.globl asm_handle_exception
.globl asm_handle_nat_exception
.align 3
- .quad 0 /* catch type all */
- .quad 0 /* handler pc */
- .quad 0 /* end pc */
- .quad 0 /* start pc */
- .long 1 /* extable size */
- .long 0 /* ALIGNMENT PADDING */
- .quad 0 /* line number table start */
- .quad 0 /* line number table size */
- .long 0 /* ALIGNMENT PADDING */
.long 0 /* fltsave */
.long 1 /* intsave */
.long 0 /* isleaf */
- .long 0 /* IsSync */
.long 0 /* frame size */
.quad 0 /* codeinfo pointer */
L_asm_vm_call_method_recompute_pv:
lda pv,(asm_vm_call_method - L_asm_vm_call_method_recompute_pv)(ra)
+L_asm_vm_call_method_recompute_return:
mov s0,sp /* restore stack pointer */
-L_asm_vm_call_method_recompute_return:
ldq ra,0*8(sp) /* restore RA */
ldq gp,1*8(sp) /* restore global pointer */
ldq s0,3*8(sp)
.end asm_vm_call_method
-/* asm_call_jit_compiler *******************************************************
-
- Invokes the compiler for untranslated Java methods.
-
-*******************************************************************************/
-
- .ent asm_call_jit_compiler
-
-asm_call_jit_compiler:
- ldgp gp,0(pv)
- lda sp,-(ARG_CNT+2)*8(sp) /* +2: keep stack 16-byte aligned */
-
- stq ra,0*8(sp) /* save return address */
-
- SAVE_ARGUMENT_REGISTERS(1) /* save 6 int/6 float argument registers */
-
- mov itmp1,a0 /* pass methodinfo pointer */
- mov mptr,a1 /* pass method pointer */
- lda a2,(ARG_CNT+2)*8(sp) /* pass java sp */
- mov ra,a3
- jsr ra,jit_asm_compile /* call jit compiler */
- mov v0,pv
-
- ldq ra,0*8(sp) /* load return address */
-
- RESTORE_ARGUMENT_REGISTERS(1) /* restore 6 int/6 float argument registers */
-
- lda sp,(ARG_CNT+2)*8(sp) /* remove stack frame */
-
- beq pv,L_asm_call_jit_compiler_exception
-
- jmp zero,(pv) /* and call method, the method returns */
- /* directly to the caller (ra). */
-
-L_asm_call_jit_compiler_exception:
- subq sp,2*8,sp
- stq ra,0*8(sp) /* save return address (xpc) */
- jsr ra,exceptions_get_and_clear_exception
- ldq ra,0*8(sp) /* restore return address (xpc) */
- addq sp,2*8,sp
-
- mov v0,xptr /* get exception */
- subq ra,4,xpc /* exception address is ra - 4 */
- br L_asm_handle_nat_exception
-
- .end asm_call_jit_compiler
-
-
/* asm_handle_exception ********************************************************
This function handles an exception. It does not use the usual calling
L_asm_handle_exception_load_gp:
ldgp gp,0(ra) /* load gp */
- jsr ra,md_codegen_get_pv_from_pc/* get PV from RA */
+ jsr ra,md_asm_codegen_get_pv_from_pc /* get PV from RA */
stq v0,2*8(sp) /* save PV */
ldq a0,0*8(sp) /* pass xptr */