Mercurial > hg > truffle
comparison src/cpu/ppc/vm/methodHandles_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 | 92aa6797d639 71a71b0bc844 |
comparison
equal
deleted
inserted
replaced
14682:84eafecdb9a9 | 14684:e5e8aa897002 |
---|---|
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); |