mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-28 11:18:45 +07:00
KVM: x86: Fix update RCX/RDI/RSI on REP-string
When REP-string instruction is preceded with an address-size prefix, ECX/EDI/ESI are used as the operation counter and pointers. When they are updated, the high 32-bits of RCX/RDI/RSI are cleared, similarly to the way they are updated on every 32-bit register operation. Fix it. Signed-off-by: Nadav Amit <namit@cs.technion.ac.il> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
3db176d5b4
commit
ee122a7109
@ -524,13 +524,9 @@ static void masked_increment(ulong *reg, ulong mask, int inc)
|
|||||||
static inline void
|
static inline void
|
||||||
register_address_increment(struct x86_emulate_ctxt *ctxt, int reg, int inc)
|
register_address_increment(struct x86_emulate_ctxt *ctxt, int reg, int inc)
|
||||||
{
|
{
|
||||||
ulong mask;
|
ulong *preg = reg_rmw(ctxt, reg);
|
||||||
|
|
||||||
if (ctxt->ad_bytes == sizeof(unsigned long))
|
assign_register(preg, *preg + inc, ctxt->ad_bytes);
|
||||||
mask = ~0UL;
|
|
||||||
else
|
|
||||||
mask = ad_mask(ctxt);
|
|
||||||
masked_increment(reg_rmw(ctxt, reg), mask, inc);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void rsp_increment(struct x86_emulate_ctxt *ctxt, int inc)
|
static void rsp_increment(struct x86_emulate_ctxt *ctxt, int inc)
|
||||||
|
Loading…
Reference in New Issue
Block a user