[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [xen master] x86emul: drop regs field from emulator state structure
commit 3a407e70f7a76ec0e4436bbe87ccbecf932d2b3f Author: Jan Beulich <jbeulich@xxxxxxxx> AuthorDate: Mon Apr 17 14:04:34 2023 +0200 Commit: Jan Beulich <jbeulich@xxxxxxxx> CommitDate: Mon Apr 17 14:04:34 2023 +0200 x86emul: drop regs field from emulator state structure For an unclear reason 0552a8cfda43 ("x86emul: track only rIP in emulator state") converted the original struct cpu_user_regs instance to a pointer, rather than dropping the field altogether: The pointer merely aliases the one in the context structure. Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx> Acked-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> --- xen/arch/x86/x86_emulate/decode.c | 29 ++++++++++++++--------------- xen/arch/x86/x86_emulate/private.h | 1 - 2 files changed, 14 insertions(+), 16 deletions(-) diff --git a/xen/arch/x86/x86_emulate/decode.c b/xen/arch/x86/x86_emulate/decode.c index 51a3d1d2dd..fefbba33a6 100644 --- a/xen/arch/x86/x86_emulate/decode.c +++ b/xen/arch/x86/x86_emulate/decode.c @@ -997,7 +997,6 @@ int x86emul_decode(struct x86_emulate_state *s, s->ea.type = OP_NONE; s->ea.mem.seg = x86_seg_ds; s->ea.reg = PTR_POISON; - s->regs = ctxt->regs; s->ip = ctxt->regs->r(ip); s->op_bytes = def_op_bytes = ad_bytes = def_ad_bytes = @@ -1113,7 +1112,7 @@ int x86emul_decode(struct x86_emulate_state *s, default: BUG(); /* Shouldn't be possible. */ case 2: - if ( s->regs->eflags & X86_EFLAGS_VM ) + if ( ctxt->regs->eflags & X86_EFLAGS_VM ) break; /* fall through */ case 4: @@ -1442,33 +1441,33 @@ int x86emul_decode(struct x86_emulate_state *s, switch ( s->modrm_rm ) { case 0: - s->ea.mem.off = s->regs->bx + s->regs->si; + s->ea.mem.off = ctxt->regs->bx + ctxt->regs->si; break; case 1: - s->ea.mem.off = s->regs->bx + s->regs->di; + s->ea.mem.off = ctxt->regs->bx + ctxt->regs->di; break; case 2: s->ea.mem.seg = x86_seg_ss; - s->ea.mem.off = s->regs->bp + s->regs->si; + s->ea.mem.off = ctxt->regs->bp + ctxt->regs->si; break; case 3: s->ea.mem.seg = x86_seg_ss; - s->ea.mem.off = s->regs->bp + s->regs->di; + s->ea.mem.off = ctxt->regs->bp + ctxt->regs->di; break; case 4: - s->ea.mem.off = s->regs->si; + s->ea.mem.off = ctxt->regs->si; break; case 5: - s->ea.mem.off = s->regs->di; + s->ea.mem.off = ctxt->regs->di; break; case 6: if ( s->modrm_mod == 0 ) break; s->ea.mem.seg = x86_seg_ss; - s->ea.mem.off = s->regs->bp; + s->ea.mem.off = ctxt->regs->bp; break; case 7: - s->ea.mem.off = s->regs->bx; + s->ea.mem.off = ctxt->regs->bx; break; } switch ( s->modrm_mod ) @@ -1501,7 +1500,7 @@ int x86emul_decode(struct x86_emulate_state *s, !s->evex.RX) << 4; else if ( s->sib_index != 4 ) { - s->ea.mem.off = *decode_gpr(s->regs, s->sib_index); + s->ea.mem.off = *decode_gpr(ctxt->regs, s->sib_index); s->ea.mem.off <<= s->sib_scale; } if ( (s->modrm_mod == 0) && ((sib_base & 7) == 5) ) @@ -1509,7 +1508,7 @@ int x86emul_decode(struct x86_emulate_state *s, else if ( sib_base == 4 ) { s->ea.mem.seg = x86_seg_ss; - s->ea.mem.off += s->regs->r(sp); + s->ea.mem.off += ctxt->regs->r(sp); if ( !s->ext && (b == 0x8f) ) /* POP <rm> computes its EA post increment. */ s->ea.mem.off += ((mode_64bit() && (s->op_bytes == 4)) @@ -1518,16 +1517,16 @@ int x86emul_decode(struct x86_emulate_state *s, else if ( sib_base == 5 ) { s->ea.mem.seg = x86_seg_ss; - s->ea.mem.off += s->regs->r(bp); + s->ea.mem.off += ctxt->regs->r(bp); } else - s->ea.mem.off += *decode_gpr(s->regs, sib_base); + s->ea.mem.off += *decode_gpr(ctxt->regs, sib_base); } else { generate_exception_if(d & vSIB, X86_EXC_UD); s->modrm_rm |= (s->rex_prefix & 1) << 3; - s->ea.mem.off = *decode_gpr(s->regs, s->modrm_rm); + s->ea.mem.off = *decode_gpr(ctxt->regs, s->modrm_rm); if ( (s->modrm_rm == 5) && (s->modrm_mod != 0) ) s->ea.mem.seg = x86_seg_ss; } diff --git a/xen/arch/x86/x86_emulate/private.h b/xen/arch/x86/x86_emulate/private.h index 9f8db6ab0d..1a7c17feab 100644 --- a/xen/arch/x86/x86_emulate/private.h +++ b/xen/arch/x86/x86_emulate/private.h @@ -309,7 +309,6 @@ struct x86_emulate_state { #define imm2 ea.orig_val unsigned long ip; - struct cpu_user_regs *regs; #ifndef NDEBUG /* -- generated by git-patchbot for /home/xen/git/xen.git#master
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |