Philippe Gerum wrote: > On Thu, 2006-07-13 at 13:13 +0200, Jan Kiszka wrote: >> Hi, >> >> some may recall the "micro-optimisation" thread I once started. Here is >> now a simple approach to deal with the yet suboptimal mux-code >> calculation in user-space. Code saving: >> >> Before: >> text data bss dec hex filename >> 18004 476 8 18488 4838 native/.libs/libnative.so >> 27445 696 4 28145 6df1 posix/.libs/libpthread_rt.so >> >> After: >> text data bss dec hex filename >> 17172 476 8 17656 44f8 native/.libs/libnative.so >> 26805 696 4 27505 6b71 posix/.libs/libpthread_rt.so >> >> Of course, this also results in a few ops less being executed on each >> Xenomai syscall invocation (not many cycles, though). >> >> Tested without problems on x86 so far. >> > > This is post 2.2 stuff since we need to check this critical change > against each and every supported arch.
Agree, there is no need to hurry in 2.2. > Since this breaks the ABI > including the ascending compatibility between old apps and new kernel > support, this won't make it during the v2 series either. The ABI chance just took place due to my laziness - I didn't want to touch every skin library. Anyway, this ABI breakage can be avoided with slightly more effort, i.e. by doing the shift in user-space during the binding. > >> Jan >> plain text document attachment (optimise-muxcode-calculation.patch) >> --- >> include/asm-arm/syscall.h | 25 +++++++++++++------------ >> include/asm-blackfin/syscall.h | 4 +++- >> include/asm-i386/syscall.h | 3 ++- >> include/asm-ia64/syscall.h | 23 ++++++++++++----------- >> include/asm-powerpc/syscall.h | 3 ++- >> ksrc/nucleus/shadow.c | 3 ++- >> 6 files changed, 34 insertions(+), 27 deletions(-) >> >> Index: xenomai/include/asm-arm/syscall.h >> =================================================================== >> --- xenomai.orig/include/asm-arm/syscall.h >> +++ xenomai/include/asm-arm/syscall.h >> @@ -26,6 +26,7 @@ >> #include <asm-generic/xenomai/syscall.h> >> >> #define __xn_mux_code(id,op) ((op << 24)|((id << 16) & >> 0xff0000)|(__xn_sys_mux & 0xffff)) >> +#define __xn_mux_code_shft(shifted_id,op) ((op << >> 24)|shifted_id|(__xn_sys_mux & 0xffff)) > > +#define __xn_mux_code_shft(shifted_id,op) ((op << 24)|shifted_id) > > should be enough. Given my current calculation of the muxid in the kernel, yes. But the original variant has zero effect on the code and looks more consistent to me. > > <snip> > >> Index: xenomai/include/asm-blackfin/syscall.h >> =================================================================== >> --- xenomai.orig/include/asm-blackfin/syscall.h >> +++ xenomai/include/asm-blackfin/syscall.h >> @@ -27,6 +27,7 @@ >> (i.e. negative syscall number in orig_p0 meaning "non-syscall >> entry"). */ >> #define __xn_mux_code(id,op) ((id << 24)|((op << 16) & >> 0xff0000)|(__xn_sys_mux & 0xffff)) >> +#define __xn_mux_code_fast(shifted_id,op) ((op << >> 24)|shifted_id|(__xn_sys_mux & 0xffff)) >> > > Breakage alert. > Oops. Ok, I will rework this patch. Jan
Description: OpenPGP digital signature
_______________________________________________ Xenomai-core mailing list Xenomaiemail@example.com https://mail.gna.org/listinfo/xenomai-core