451 tty->print_cr("MH %s %s="INTPTR_FORMAT " sp=" INTPTR_FORMAT, |
451 tty->print_cr("MH %s %s="INTPTR_FORMAT " sp=" INTPTR_FORMAT, |
452 adaptername, mh_reg_name, (intptr_t) mh, entry_sp); |
452 adaptername, mh_reg_name, (intptr_t) mh, entry_sp); |
453 |
453 |
454 if (Verbose) { |
454 if (Verbose) { |
455 tty->print_cr("Registers:"); |
455 tty->print_cr("Registers:"); |
456 const int abi_offset = frame::abi_112_size / 8; |
456 const int abi_offset = frame::abi_reg_args_size / 8; |
457 for (int i = R3->encoding(); i <= R12->encoding(); i++) { |
457 for (int i = R3->encoding(); i <= R12->encoding(); i++) { |
458 Register r = as_Register(i); |
458 Register r = as_Register(i); |
459 int count = i - R3->encoding(); |
459 int count = i - R3->encoding(); |
460 // The registers are stored in reverse order on the stack (by save_volatile_gprs(R1_SP, abi_112_size)). |
460 // The registers are stored in reverse order on the stack (by save_volatile_gprs(R1_SP, abi_reg_args_size)). |
461 tty->print("%3s=" PTR_FORMAT, r->name(), saved_regs[abi_offset + count]); |
461 tty->print("%3s=" PTR_FORMAT, r->name(), saved_regs[abi_offset + count]); |
462 if ((count + 1) % 4 == 0) { |
462 if ((count + 1) % 4 == 0) { |
463 tty->cr(); |
463 tty->cr(); |
464 } else { |
464 } else { |
465 tty->print(", "); |
465 tty->print(", "); |
522 |
522 |
523 int nbytes_save = 10 * 8; // 10 volatile gprs |
523 int nbytes_save = 10 * 8; // 10 volatile gprs |
524 __ save_LR_CR(R0); |
524 __ save_LR_CR(R0); |
525 __ mr(R0, R1_SP); // saved_sp |
525 __ mr(R0, R1_SP); // saved_sp |
526 assert(Assembler::is_simm(-nbytes_save, 16), "Overwriting R0"); |
526 assert(Assembler::is_simm(-nbytes_save, 16), "Overwriting R0"); |
527 // push_frame_abi112 only uses R0 if nbytes_save is wider than 16 bit |
527 // Push_frame_reg_args only uses R0 if nbytes_save is wider than 16 bit. |
528 __ push_frame_abi112(nbytes_save, R0); |
528 __ push_frame_reg_args(nbytes_save, R0); |
529 __ save_volatile_gprs(R1_SP, frame::abi_112_size); // Except R0. |
529 __ save_volatile_gprs(R1_SP, frame::abi_reg_args_size); // Except R0. |
530 |
530 |
531 __ load_const(R3_ARG1, (address)adaptername); |
531 __ load_const(R3_ARG1, (address)adaptername); |
532 __ mr(R4_ARG2, R23_method_handle); |
532 __ mr(R4_ARG2, R23_method_handle); |
533 __ mr(R5_ARG3, R0); // saved_sp |
533 __ mr(R5_ARG3, R0); // saved_sp |
534 __ mr(R6_ARG4, R1_SP); |
534 __ mr(R6_ARG4, R1_SP); |