[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v3] Reduce assembly code size of exception entry points
On 16.02.2024 11:50, Frediano Ziglio wrote: > --- a/xen/arch/x86/x86_64/entry.S > +++ b/xen/arch/x86/x86_64/entry.S > @@ -22,6 +22,14 @@ > #endif > .endm > > +.macro BUILD_BUG_ON condstr cond:vararg > + .if \cond > + .error "Condition \condstr not satisfied" Maybe .error "Condition \"\condstr\" not satisfied" ? > @@ -187,7 +195,8 @@ FUNC_LOCAL(restore_all_guest) > SPEC_CTRL_EXIT_TO_PV /* Req: a=spec_ctrl %rsp=regs/cpuinfo, Clob: > cd */ > > RESTORE_ALL > - testw $TRAP_syscall,4(%rsp) > + BUILD_BUG_ON(TRAP_syscall & 0xff) > + testb $TRAP_syscall >> 8,4+1(%rsp) > jz iret_exit_to_guest Nit: Blank after comma please (and again elsewhere). Preferably with both adjustments (which I'd be okay making while committing, so long as you agree specifically on the former) Reviewed-by: Jan Beulich <jbeulich@xxxxxxxx> That said, especially with this not being an entry point path, and neither this nor ... > @@ -254,7 +263,8 @@ FUNC(lstar_enter) > pushq $FLAT_KERNEL_CS64 > pushq %rcx > pushq $0 > - movl $TRAP_syscall, 4(%rsp) > + BUILD_BUG_ON(TRAP_syscall & 0xff) > + movb $TRAP_syscall >> 8, 4+1(%rsp) > SAVE_ALL > > SPEC_CTRL_ENTRY_FROM_PV /* Req: %rsp=regs/cpuinfo, %rdx=0, Clob: acd > */ > @@ -292,7 +302,8 @@ FUNC(cstar_enter) > pushq $FLAT_USER_CS32 > pushq %rcx > pushq $0 > - movl $TRAP_syscall, 4(%rsp) > + BUILD_BUG_ON(TRAP_syscall & 0xff) > + movb $TRAP_syscall >> 8, 4+1(%rsp) > SAVE_ALL > > SPEC_CTRL_ENTRY_FROM_PV /* Req: %rsp=regs/cpuinfo, %rdx=0, Clob: acd > */ > @@ -334,7 +345,8 @@ LABEL(sysenter_eflags_saved, 0) > pushq $3 /* ring 3 null cs */ > pushq $0 /* null rip */ > pushq $0 > - movl $TRAP_syscall, 4(%rsp) > + BUILD_BUG_ON(TRAP_syscall & 0xff) > + movb $TRAP_syscall >> 8, 4+1(%rsp) > SAVE_ALL ... any of these being exception entry point paths (and hence none of these changes being related to the subject), it would likely have been a good idea to split this into two patches. Jan
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |