On 22.01.2024 19:17, Andrew Cooper wrote: > It is bad form to have inter-function fallthrough. It only functions right > now because alignment padding bytes are NOPs.
But that's a requirement anyway in executable sections. > --- a/xen/arch/x86/x86_64/compat/entry.S > +++ b/xen/arch/x86/x86_64/compat/entry.S > @@ -29,6 +29,7 @@ FUNC(entry_int82) > > mov %rsp, %rdi > call do_entry_int82 > + jmp compat_test_all_events > END(entry_int82) > > /* %rbx: struct vcpu */ > diff --git a/xen/arch/x86/x86_64/entry.S b/xen/arch/x86/x86_64/entry.S > index c3f6b667a72a..fc64ef1fd460 100644 > --- a/xen/arch/x86/x86_64/entry.S > +++ b/xen/arch/x86/x86_64/entry.S > @@ -723,7 +723,9 @@ END(common_interrupt) > FUNC(entry_PF) > ENDBR64 > movl $X86_EXC_PF, 4(%rsp) > + jmp handle_exception > END(entry_PF) > + > /* No special register assumptions. */ > FUNC(handle_exception, 0) > ALTERNATIVE "", clac, X86_FEATURE_XEN_SMAP > @@ -1023,6 +1025,7 @@ FUNC(entry_NMI) > ENDBR64 > pushq $0 > movl $X86_EXC_NMI, 4(%rsp) > + jmp handle_ist_exception > END(entry_NMI) > > FUNC(handle_ist_exception) Hmm, so here you (partly) do what I was meaning to do in the one patch left from the entry point annotations series, "common: honor CONFIG_CC_SPLIT_SECTIONS also for assembly functions". However, I'm wrapping the JMPs there in #ifdef CONFIG_CC_SPLIT_SECTIONS. Thoughts? I view the JMPs as pretty useless otherwise, even if there is a small risk of a future code change not respecting the ordering requirements. Yet such would be noticed pretty quickly, I suppose. Jan