[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v3 5/4] x86: reduce code size of struct cpu_info member accesses
On Thu, Mar 17, 2016 at 10:14:22AM -0600, Jan Beulich wrote: Something is off with your patch. This is 5/4 :-) > Instead of addressing these fields via the base of the stack (which > uniformly requires 4-byte displacements), address them from the end > (which for everything other than guest_cpu_user_regs requires just > 1-byte ones). This yields a code size reduction somewhere between 8k > and 12k in my builds. Also you made the macro a bit different - the %r is removed. Particular reason? > > Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx> > --- > Note that just like patch 4 of the series this also isn't directly > related to the SMEP/SMAP issue, but is again just a result of things > realized while doing that work, and again depends on the earlier > patches to apply cleanly. > .. snip.. > --- a/xen/include/asm-x86/asm_defns.h > +++ b/xen/include/asm-x86/asm_defns.h > @@ -127,19 +127,19 @@ void ret_from_intr(void); > UNLIKELY_DONE(mp, tag); \ > __UNLIKELY_END(tag) > > -#define STACK_CPUINFO_FIELD(field) > (STACK_SIZE-CPUINFO_sizeof+CPUINFO_##field) > -#define GET_STACK_BASE(reg) \ > - movq $~(STACK_SIZE-1),reg; \ > - andq %rsp,reg > +#define STACK_CPUINFO_FIELD(field) (1 - CPUINFO_sizeof + CPUINFO_##field) > +#define GET_STACK_END(reg) \ > + movl $STACK_SIZE-1, %e##reg; \ > + orq %rsp, %r##reg > > #define GET_CPUINFO_FIELD(field, reg) \ > - GET_STACK_BASE(reg); \ > - addq $STACK_CPUINFO_FIELD(field),reg > + GET_STACK_END(reg); \ > + addq $STACK_CPUINFO_FIELD(field), %r##reg Not subq? The GET_STACK_END gets us ..[ edit: missed first time the change to STACK_CPUINFO_FIELD]. Reviewed-by: Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx> _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |