[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 02/15] x86/emul: Simplfy emulation state setup
> -----Original Message----- > From: Andrew Cooper > Sent: 23 November 2016 16:01 > To: Paul Durrant <Paul.Durrant@xxxxxxxxxx>; Xen-devel <xen- > devel@xxxxxxxxxxxxx> > Cc: Jan Beulich <JBeulich@xxxxxxxx>; Tim (Xen.org) <tim@xxxxxxx>; George > Dunlap <George.Dunlap@xxxxxxxxxx> > Subject: Re: [PATCH 02/15] x86/emul: Simplfy emulation state setup > > On 23/11/16 15:58, Paul Durrant wrote: > >> diff --git a/xen/arch/x86/x86_emulate/x86_emulate.c > >> b/xen/arch/x86/x86_emulate/x86_emulate.c > >> index 04f0dac..c5d9664 100644 > >> --- a/xen/arch/x86/x86_emulate/x86_emulate.c > >> +++ b/xen/arch/x86/x86_emulate/x86_emulate.c > >> @@ -1904,6 +1904,8 @@ x86_decode( > >> state->regs = ctxt->regs; > >> state->eip = ctxt->regs->eip; > >> > >> + /* Initialise output state in x86_emulate_ctxt */ > >> + ctxt->opcode = ~0u; > >> ctxt->retire.byte = 0; > > In the commit message you state that x86_decode() will "explicitly initalise > all output state at its start". This doesn't seem to be all the output state. > In > fact you appear to be removing some initialization. > > There are only two fields of output state, as delineated by the extra > comments in x86_emulate_ctxt. Most of x86_emulate_ctxt is input state. D'oh, yes. Sorry, got confused by the field movements... my eyes were seeing '+' as '-' for some reason. Paul > > > > >> op_bytes = def_op_bytes = ad_bytes = def_ad_bytes = ctxt- > >>> addr_size/8; > >> diff --git a/xen/arch/x86/x86_emulate/x86_emulate.h > >> b/xen/arch/x86/x86_emulate/x86_emulate.h > >> index 993c576..93b268e 100644 > >> --- a/xen/arch/x86/x86_emulate/x86_emulate.h > >> +++ b/xen/arch/x86/x86_emulate/x86_emulate.h > >> @@ -412,6 +412,10 @@ struct cpu_user_regs; > >> > >> struct x86_emulate_ctxt > >> { > >> + /* > >> + * Input state: > >> + */ > >> + > >> /* Register state before/after emulation. */ > >> struct cpu_user_regs *regs; > >> > >> @@ -421,14 +425,21 @@ struct x86_emulate_ctxt > >> /* Stack pointer width in bits (16, 32 or 64). */ > >> unsigned int sp_size; > >> > >> - /* Canonical opcode (see below). */ > >> - unsigned int opcode; > >> - > >> /* Software event injection support. */ > >> enum x86_swint_emulation swint_emulate; > >> > >> /* Set this if writes may have side effects. */ > >> - uint8_t force_writeback; > >> + bool force_writeback; > > Is this type change intentional? I assume it is, but you didn't call it out. > > Yes. I thought I had it in the commit message, but will update for v2. > > ~Andrew > > > > > Paul > > > >> + > >> + /* Caller data that can be used by x86_emulate_ops' routines. */ > >> + void *data; > >> + > >> + /* > >> + * Output state: > >> + */ > >> + > >> + /* Canonical opcode (see below). */ > >> + unsigned int opcode; > >> > >> /* Retirement state, set by the emulator (valid only on > X86EMUL_OKAY). > >> */ > >> union { > >> @@ -439,9 +450,6 @@ struct x86_emulate_ctxt > >> } flags; > >> uint8_t byte; > >> } retire; > >> - > >> - /* Caller data that can be used by x86_emulate_ops' routines. */ > >> - void *data; > >> }; > >> > >> /* > >> -- > >> 2.1.4 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx https://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |