tcg/i386: Adjust type of tlb_mask
Because of its use on tgen_arithi, this value must be a signed 32-bit quantity, as that is what may be encoded in the insn. The truncation of the value to unsigned for 32-bit guests is done via the REX bit via 'trexw'. Removes the only uses of target_ulong from this tcg backend. Reviewed-by: Alex Bennée <alex.bennee@linaro.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
parent
b2485530d8
commit
c60ad6e3b9
@ -1920,7 +1920,7 @@ static TCGLabelQemuLdst *prepare_host_addr(TCGContext *s, HostAddress *h,
|
|||||||
unsigned mem_index = get_mmuidx(oi);
|
unsigned mem_index = get_mmuidx(oi);
|
||||||
unsigned s_bits = opc & MO_SIZE;
|
unsigned s_bits = opc & MO_SIZE;
|
||||||
unsigned s_mask = (1 << s_bits) - 1;
|
unsigned s_mask = (1 << s_bits) - 1;
|
||||||
target_ulong tlb_mask;
|
int tlb_mask;
|
||||||
|
|
||||||
ldst = new_ldst_label(s);
|
ldst = new_ldst_label(s);
|
||||||
ldst->is_ld = is_ld;
|
ldst->is_ld = is_ld;
|
||||||
@ -1965,7 +1965,7 @@ static TCGLabelQemuLdst *prepare_host_addr(TCGContext *s, HostAddress *h,
|
|||||||
tcg_out_modrm_offset(s, OPC_LEA + trexw, TCG_REG_L1,
|
tcg_out_modrm_offset(s, OPC_LEA + trexw, TCG_REG_L1,
|
||||||
addrlo, s_mask - a_mask);
|
addrlo, s_mask - a_mask);
|
||||||
}
|
}
|
||||||
tlb_mask = (target_ulong)TARGET_PAGE_MASK | a_mask;
|
tlb_mask = TARGET_PAGE_MASK | a_mask;
|
||||||
tgen_arithi(s, ARITH_AND + trexw, TCG_REG_L1, tlb_mask, 0);
|
tgen_arithi(s, ARITH_AND + trexw, TCG_REG_L1, tlb_mask, 0);
|
||||||
|
|
||||||
/* cmp 0(TCG_REG_L0), TCG_REG_L1 */
|
/* cmp 0(TCG_REG_L0), TCG_REG_L1 */
|
||||||
|
Loading…
Reference in New Issue
Block a user