Mercurial > hg > graal-jvmci-8
comparison src/cpu/ppc/vm/interpreter_ppc.cpp @ 14684:e5e8aa897002
8035647: PPC64: Support for elf v2 abi.
Summary: ELFv2 ABI used by the little endian PowerPC64 on Linux.
Reviewed-by: kvn
Contributed-by: asmundak@google.com
author | goetz |
---|---|
date | Thu, 06 Mar 2014 10:55:28 -0800 |
parents | 67fa91961822 |
children | 58cf34613a72 |
comparison
equal
deleted
inserted
replaced
14682:84eafecdb9a9 | 14684:e5e8aa897002 |
---|---|
126 const Register argcnt = R26_tmp6; | 126 const Register argcnt = R26_tmp6; |
127 const Register intSlot = R27_tmp7; | 127 const Register intSlot = R27_tmp7; |
128 const Register target_sp = R28_tmp8; | 128 const Register target_sp = R28_tmp8; |
129 const FloatRegister floatSlot = F0; | 129 const FloatRegister floatSlot = F0; |
130 | 130 |
131 address entry = __ emit_fd(); | 131 address entry = __ function_entry(); |
132 | 132 |
133 __ save_LR_CR(R0); | 133 __ save_LR_CR(R0); |
134 __ save_nonvolatile_gprs(R1_SP, _spill_nonvolatiles_neg(r14)); | 134 __ save_nonvolatile_gprs(R1_SP, _spill_nonvolatiles_neg(r14)); |
135 // We use target_sp for storing arguments in the C frame. | 135 // We use target_sp for storing arguments in the C frame. |
136 __ mr(target_sp, R1_SP); | 136 __ mr(target_sp, R1_SP); |
137 __ push_frame_abi112_nonvolatiles(0, R11_scratch1); | 137 __ push_frame_reg_args_nonvolatiles(0, R11_scratch1); |
138 | 138 |
139 __ mr(arg_java, R3_ARG1); | 139 __ mr(arg_java, R3_ARG1); |
140 | 140 |
141 __ call_VM_leaf(CAST_FROM_FN_PTR(address, InterpreterRuntime::get_signature), R16_thread, R19_method); | 141 __ call_VM_leaf(CAST_FROM_FN_PTR(address, InterpreterRuntime::get_signature), R16_thread, R19_method); |
142 | 142 |
472 // our caller set up the JavaFrameAnchor. | 472 // our caller set up the JavaFrameAnchor. |
473 __ set_top_ijava_frame_at_SP_as_last_Java_frame(R1_SP, R12_scratch2/*tmp*/); | 473 __ set_top_ijava_frame_at_SP_as_last_Java_frame(R1_SP, R12_scratch2/*tmp*/); |
474 | 474 |
475 // Push a new C frame and save LR. | 475 // Push a new C frame and save LR. |
476 __ save_LR_CR(R0); | 476 __ save_LR_CR(R0); |
477 __ push_frame_abi112(0, R11_scratch1); | 477 __ push_frame_reg_args(0, R11_scratch1); |
478 | 478 |
479 // This is not a leaf but we have a JavaFrameAnchor now and we will | 479 // This is not a leaf but we have a JavaFrameAnchor now and we will |
480 // check (create) exceptions afterward so this is ok. | 480 // check (create) exceptions afterward so this is ok. |
481 __ call_VM_leaf(CAST_FROM_FN_PTR(address, InterpreterRuntime::throw_AbstractMethodError)); | 481 __ call_VM_leaf(CAST_FROM_FN_PTR(address, InterpreterRuntime::throw_AbstractMethodError)); |
482 | 482 |