comparison src/cpu/ppc/vm/cppInterpreter_ppc.cpp @ 17803:31e80afe3fed

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 c668f307a4c0
children 58cf34613a72
comparison
equal deleted inserted replaced
17802:7c462558a08a 17803:31e80afe3fed
1134 // 1134 //
1135 // Our signature handlers copy required arguments to the C stack 1135 // Our signature handlers copy required arguments to the C stack
1136 // (outgoing C args), R3_ARG1 to R10_ARG8, and F1_ARG1 to 1136 // (outgoing C args), R3_ARG1 to R10_ARG8, and F1_ARG1 to
1137 // F13_ARG13. 1137 // F13_ARG13.
1138 __ mr(R3_ARG1, R18_locals); 1138 __ mr(R3_ARG1, R18_locals);
1139 #if !defined(ABI_ELFv2)
1139 __ ld(signature_handler_fd, 0, signature_handler_fd); 1140 __ ld(signature_handler_fd, 0, signature_handler_fd);
1141 #endif
1140 __ call_stub(signature_handler_fd); 1142 __ call_stub(signature_handler_fd);
1141 // reload method 1143 // reload method
1142 __ ld(R19_method, state_(_method)); 1144 __ ld(R19_method, state_(_method));
1143 1145
1144 // Remove the register parameter varargs slots we allocated in 1146 // Remove the register parameter varargs slots we allocated in
1293 // Block. We do the call directly and leave the current 1295 // Block. We do the call directly and leave the current
1294 // last_Java_frame setup undisturbed. We must save any possible 1296 // last_Java_frame setup undisturbed. We must save any possible
1295 // native result acrosss the call. No oop is present 1297 // native result acrosss the call. No oop is present
1296 1298
1297 __ mr(R3_ARG1, R16_thread); 1299 __ mr(R3_ARG1, R16_thread);
1300 #if defined(ABI_ELFv2)
1301 __ call_c(CAST_FROM_FN_PTR(address, JavaThread::check_special_condition_for_native_trans),
1302 relocInfo::none);
1303 #else
1298 __ call_c(CAST_FROM_FN_PTR(FunctionDescriptor*, JavaThread::check_special_condition_for_native_trans), 1304 __ call_c(CAST_FROM_FN_PTR(FunctionDescriptor*, JavaThread::check_special_condition_for_native_trans),
1299 relocInfo::none); 1305 relocInfo::none);
1306 #endif
1300 __ bind(sync_check_done); 1307 __ bind(sync_check_done);
1301 1308
1302 //============================================================================= 1309 //=============================================================================
1303 // <<<<<< Back in Interpreter Frame >>>>> 1310 // <<<<<< Back in Interpreter Frame >>>>>
1304 1311
1411 // exception handler, pop the frame and return to the handler. 1418 // exception handler, pop the frame and return to the handler.
1412 1419
1413 // First, pop to caller's frame. 1420 // First, pop to caller's frame.
1414 __ pop_interpreter_frame(R11_scratch1, R12_scratch2, R21_tmp1 /* set to return pc */, R22_tmp2); 1421 __ pop_interpreter_frame(R11_scratch1, R12_scratch2, R21_tmp1 /* set to return pc */, R22_tmp2);
1415 1422
1416 __ push_frame_abi112(0, R11_scratch1); 1423 __ push_frame_reg_args(0, R11_scratch1);
1417 // Get the address of the exception handler. 1424 // Get the address of the exception handler.
1418 __ call_VM_leaf(CAST_FROM_FN_PTR(address, SharedRuntime::exception_handler_for_return_address), 1425 __ call_VM_leaf(CAST_FROM_FN_PTR(address, SharedRuntime::exception_handler_for_return_address),
1419 R16_thread, 1426 R16_thread,
1420 R21_tmp1 /* return pc */); 1427 R21_tmp1 /* return pc */);
1421 __ pop_frame(); 1428 __ pop_frame();
2543 2550
2544 __ mr(R14, R3_ARG1); // R14 := ARG1 2551 __ mr(R14, R3_ARG1); // R14 := ARG1
2545 __ mr(R4_ARG2, R3_ARG1); // ARG2 := ARG1 2552 __ mr(R4_ARG2, R3_ARG1); // ARG2 := ARG1
2546 2553
2547 // Find the address of the "catch_exception" stub. 2554 // Find the address of the "catch_exception" stub.
2548 __ push_frame_abi112(0, R11_scratch1); 2555 __ push_frame_reg_args(0, R11_scratch1);
2549 __ call_VM_leaf(CAST_FROM_FN_PTR(address, SharedRuntime::exception_handler_for_return_address), 2556 __ call_VM_leaf(CAST_FROM_FN_PTR(address, SharedRuntime::exception_handler_for_return_address),
2550 R16_thread, 2557 R16_thread,
2551 R4_ARG2); 2558 R4_ARG2);
2552 __ pop_frame(); 2559 __ pop_frame();
2553 2560