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. 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.

> 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.

<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.

-- 
Philippe.



_______________________________________________
Xenomai-core mailing list
Xenomai-core@gna.org
https://mail.gna.org/listinfo/xenomai-core

Reply via email to