mirror of https://github.com/xemu-project/xemu.git
tcg/s390x: Use ALGFR in constructing softmmu host address
Rather than zero-extend the guest address into a register, use an add instruction which zero-extends the second input. Reviewed-by: Alex Bennée <alex.bennee@linaro.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
parent
f0f43534f7
commit
8b1b45971f
|
@ -149,6 +149,7 @@ typedef enum S390Opcode {
|
|||
RRE_ALGR = 0xb90a,
|
||||
RRE_ALCR = 0xb998,
|
||||
RRE_ALCGR = 0xb988,
|
||||
RRE_ALGFR = 0xb91a,
|
||||
RRE_CGR = 0xb920,
|
||||
RRE_CLGR = 0xb921,
|
||||
RRE_DLGR = 0xb987,
|
||||
|
@ -1853,10 +1854,11 @@ static TCGLabelQemuLdst *prepare_host_addr(TCGContext *s, HostAddress *h,
|
|||
tcg_out_insn(s, RXY, LG, h->index, TCG_REG_R2, TCG_REG_NONE,
|
||||
offsetof(CPUTLBEntry, addend));
|
||||
|
||||
h->base = addr_reg;
|
||||
if (TARGET_LONG_BITS == 32) {
|
||||
tcg_out_ext32u(s, TCG_REG_R3, addr_reg);
|
||||
h->base = TCG_REG_R3;
|
||||
tcg_out_insn(s, RRE, ALGFR, h->index, addr_reg);
|
||||
h->base = TCG_REG_NONE;
|
||||
} else {
|
||||
h->base = addr_reg;
|
||||
}
|
||||
h->disp = 0;
|
||||
#else
|
||||
|
|
Loading…
Reference in New Issue