From mboxrd@z Thu Jan 1 00:00:00 1970 Subject: Re: [Xenomai-core] [PATCH] optimise syscall mux-code calculation From: Philippe Gerum In-Reply-To: <44B62AE7.8080503@domain.hid> References: <44B62AE7.8080503@domain.hid> Content-Type: text/plain Date: Sat, 15 Jul 2006 04:24:31 +0200 Message-Id: <1152930271.5027.69.camel@domain.hid> Mime-Version: 1.0 Content-Transfer-Encoding: 7bit Reply-To: rpm@xenomai.org List-Id: "Xenomai life and development \(bug reports, patches, discussions\)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Jan Kiszka Cc: xenomai-core 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 > > #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. > 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.