Revision 2d097a83 tcg/hppa/tcg-target.c
b/tcg/hppa/tcg-target.c | ||
---|---|---|
723 | 723 |
|
724 | 724 |
tcg_out32(s, op | reassemble_17(val)); |
725 | 725 |
} else { |
726 |
/* We need to keep the offset unchanged for retranslation. */ |
|
727 |
uint32_t old_insn = *(uint32_t *)s->code_ptr; |
|
728 |
|
|
726 | 729 |
tcg_out_reloc(s, s->code_ptr, R_PARISC_PCREL17F, label_index, 0); |
727 |
tcg_out32(s, op); |
|
730 |
tcg_out32(s, op | (old_insn & 0x1f1ffdu));
|
|
728 | 731 |
} |
729 | 732 |
} |
730 | 733 |
|
... | ... | |
777 | 780 |
tcg_out32(s, op | reassemble_12(val)); |
778 | 781 |
tcg_out_nop(s); |
779 | 782 |
} else { |
783 |
/* We need to keep the offset unchanged for retranslation. */ |
|
784 |
uint32_t old_insn = *(uint32_t *)s->code_ptr; |
|
785 |
|
|
780 | 786 |
tcg_out_reloc(s, s->code_ptr, R_PARISC_PCREL12F, label_index, 0); |
781 | 787 |
/* ??? Assume that all branches to undefined labels are forward. |
782 | 788 |
Which means that if the nul bit is set, the delay slot is |
783 | 789 |
not executed if the branch is taken, which is what we want. */ |
784 |
tcg_out32(s, op | 2); |
|
790 |
tcg_out32(s, op | 2 | (old_insn & 0x1ffdu));
|
|
785 | 791 |
} |
786 | 792 |
} |
787 | 793 |
|
Also available in: Unified diff