Revision d831fdb0
b/tcg/ppc/tcg-target.c | ||
---|---|---|
552 | 552 |
{ |
553 | 553 |
int addr_reg, data_reg, data_reg2, r0, r1, rbase, bswap; |
554 | 554 |
#ifdef CONFIG_SOFTMMU |
555 |
int mem_index, s_bits, r2; |
|
555 |
int mem_index, s_bits, r2, ir;
|
|
556 | 556 |
void *label1_ptr, *label2_ptr; |
557 | 557 |
#if TARGET_LONG_BITS == 64 |
558 | 558 |
int addr_reg2; |
... | ... | |
614 | 614 |
#endif |
615 | 615 |
|
616 | 616 |
/* slow path */ |
617 |
ir = 3; |
|
617 | 618 |
#if TARGET_LONG_BITS == 32 |
618 |
tcg_out_mov (s, TCG_TYPE_I32, 3, addr_reg); |
|
619 |
tcg_out_movi (s, TCG_TYPE_I32, 4, mem_index); |
|
619 |
tcg_out_mov (s, TCG_TYPE_I32, ir++, addr_reg); |
|
620 | 620 |
#else |
621 |
tcg_out_mov (s, TCG_TYPE_I32, 3, addr_reg2); |
|
622 |
tcg_out_mov (s, TCG_TYPE_I32, 4, addr_reg); |
|
623 |
tcg_out_movi (s, TCG_TYPE_I32, 5, mem_index); |
|
621 |
#ifdef TCG_TARGET_CALL_ALIGN_ARGS |
|
622 |
ir |= 1; |
|
623 |
#endif |
|
624 |
tcg_out_mov (s, TCG_TYPE_I32, ir++, addr_reg2); |
|
625 |
tcg_out_mov (s, TCG_TYPE_I32, ir++, addr_reg); |
|
624 | 626 |
#endif |
627 |
tcg_out_movi (s, TCG_TYPE_I32, ir, mem_index); |
|
625 | 628 |
|
626 | 629 |
tcg_out_call (s, (tcg_target_long) qemu_ld_helpers[s_bits], 1); |
627 | 630 |
switch (opc) { |
... | ... | |
810 | 813 |
#endif |
811 | 814 |
|
812 | 815 |
/* slow path */ |
816 |
ir = 3; |
|
813 | 817 |
#if TARGET_LONG_BITS == 32 |
814 |
tcg_out_mov (s, TCG_TYPE_I32, 3, addr_reg); |
|
815 |
ir = 4; |
|
818 |
tcg_out_mov (s, TCG_TYPE_I32, ir++, addr_reg); |
|
816 | 819 |
#else |
817 |
tcg_out_mov (s, TCG_TYPE_I32, 3, addr_reg2); |
|
818 |
tcg_out_mov (s, TCG_TYPE_I32, 4, addr_reg); |
|
819 |
ir = 5; |
|
820 |
#ifdef TCG_TARGET_CALL_ALIGN_ARGS |
|
821 |
ir |= 1; |
|
822 |
#endif |
|
823 |
tcg_out_mov (s, TCG_TYPE_I32, ir++, addr_reg2); |
|
824 |
tcg_out_mov (s, TCG_TYPE_I32, ir++, addr_reg); |
|
820 | 825 |
#endif |
821 | 826 |
|
822 | 827 |
switch (opc) { |
... | ... | |
841 | 846 |
break; |
842 | 847 |
case 3: |
843 | 848 |
#ifdef TCG_TARGET_CALL_ALIGN_ARGS |
844 |
ir = 5;
|
|
849 |
ir |= 1;
|
|
845 | 850 |
#endif |
846 | 851 |
tcg_out_mov (s, TCG_TYPE_I32, ir++, data_reg2); |
847 | 852 |
tcg_out_mov (s, TCG_TYPE_I32, ir, data_reg); |
Also available in: Unified diff