comparison src/cpu/ppc/vm/macroAssembler_ppc.cpp @ 23862:aa6d8e03b258

Merge
author asaha
date Fri, 05 Feb 2016 23:10:25 -0800
parents f87db3f01e3f
children
comparison
equal deleted inserted replaced
23858:737b321e6f0e 23862:aa6d8e03b258
590 // Assert that we can identify the emitted call/jump. 590 // Assert that we can identify the emitted call/jump.
591 assert(is_bxx64_patchable_variant2_at((address)start_pc, link), 591 assert(is_bxx64_patchable_variant2_at((address)start_pc, link),
592 "can't identify emitted call"); 592 "can't identify emitted call");
593 } else { 593 } else {
594 // variant 1: 594 // variant 1:
595 #if defined(ABI_ELFv2)
596 nop();
597 calculate_address_from_global_toc(R12, dest, true, true, false);
598 mtctr(R12);
599 nop();
600 nop();
601 #else
602 mr(R0, R11); // spill R11 -> R0. 595 mr(R0, R11); // spill R11 -> R0.
603 596
604 // Load the destination address into CTR, 597 // Load the destination address into CTR,
605 // calculate destination relative to global toc. 598 // calculate destination relative to global toc.
606 calculate_address_from_global_toc(R11, dest, true, true, false); 599 calculate_address_from_global_toc(R11, dest, true, true, false);
607 600
608 mtctr(R11); 601 mtctr(R11);
609 mr(R11, R0); // spill R11 <- R0. 602 mr(R11, R0); // spill R11 <- R0.
610 nop(); 603 nop();
611 #endif
612 604
613 // do the call/jump 605 // do the call/jump
614 if (link) { 606 if (link) {
615 bctrl(); 607 bctrl();
616 } else{ 608 } else{