diff options
-rw-r--r-- | package/xenomai/xenomai-fix-lfs-issue.patch | 72 | ||||
-rw-r--r-- | package/xenomai/xenomai-thumb-fix.patch | 157 | ||||
-rw-r--r-- | package/xenomai/xenomai.mk | 2 |
3 files changed, 158 insertions, 73 deletions
diff --git a/package/xenomai/xenomai-fix-lfs-issue.patch b/package/xenomai/xenomai-fix-lfs-issue.patch deleted file mode 100644 index 157c8e25c..000000000 --- a/package/xenomai/xenomai-fix-lfs-issue.patch +++ /dev/null @@ -1,72 +0,0 @@ -From: Gilles Chanteperdrix <gilles.chanteperdrix@xenomai.org> -Date: Sat, 5 Nov 2011 20:59:01 +0000 (+0100) -Subject: posix: fix compilation for LFS -X-Git-Url: http://git.xenomai.org/?p=xenomai-2.6.git;a=commitdiff_plain;h=06ae5c5e47fbfd9d8dbbe6fcf1a1db0c14bad9de;hp=8f6feff876029244dabc1257cdf13209fbd64fb5 - -posix: fix compilation for LFS ---- - -diff --git a/include/posix/sys/mman.h b/include/posix/sys/mman.h -index 455e565..a304755 100644 ---- a/include/posix/sys/mman.h -+++ b/include/posix/sys/mman.h -@@ -63,17 +63,16 @@ int __real_shm_open(const char *name, int oflag, mode_t mode); - - int __real_shm_unlink(const char *name); - --#if !defined(_FILE_OFFSET_BITS) || _FILE_OFFSET_BITS != 64 - void *__real_mmap(void *addr, - size_t len, - int prot, - int flags, - int fildes, - long off); --#else --#define __real_mmap __real_mmap64 --#endif --#ifdef _LARGEFILE64_SOURCE -+ -+#if __WORDSIZE == 32 -+#if defined(_LARGEFILE64_SOURCE) \ -+ || defined(_FILE_OFFSET_BITS) && _FILE_OFFSET_BITS == 64 - void *__real_mmap64(void *addr, - size_t len, - int prot, -@@ -82,6 +81,11 @@ void *__real_mmap64(void *addr, - long long off); - #endif - -+#if defined(_FILE_OFFSET_BITS) && _FILE_OFFSET_BITS == 64 -+#define __real_mmap __real_mmap64 -+#endif -+#endif -+ - int __real_munmap(void *addr, size_t len); - - #ifdef __cplusplus -diff --git a/include/posix/unistd.h b/include/posix/unistd.h -index 49463a0..90cce86 100644 ---- a/include/posix/unistd.h -+++ b/include/posix/unistd.h -@@ -54,13 +54,17 @@ int ftruncate(int fildes, off_t length); - extern "C" { - #endif - --#if !defined(_FILE_OFFSET_BITS) || _FILE_OFFSET_BITS != 64 - int __real_ftruncate(int fildes, long length); --#else -+ -+#if __WORDSIZE == 32 -+#if defined(_LARGEFILE64_SOURCE) \ -+ || defined(_FILE_OFFSET_BITS) && _FILE_OFFSET_BITS == 64 -+int __real_ftruncate64(int fildes, long long length); -+#endif -+ -+#if defined(_FILE_OFFSET_BITS) && _FILE_OFFSET_BITS == 64 - #define __real_ftruncate __real_ftruncate64 - #endif --#ifdef _LARGEFILE64_SOURCE --int __real_ftruncate64(int fildes, long long length); - #endif - - ssize_t __real_read(int fd, void *buf, size_t nbyte); diff --git a/package/xenomai/xenomai-thumb-fix.patch b/package/xenomai/xenomai-thumb-fix.patch new file mode 100644 index 000000000..7c98c2ebf --- /dev/null +++ b/package/xenomai/xenomai-thumb-fix.patch @@ -0,0 +1,157 @@ +From ad3714e925f5c6b4ae0e0d31c4bab7f8c5e659db Mon Sep 17 00:00:00 2001 +From: Gilles Chanteperdrix <gilles.chanteperdrix@xenomai.org> +Date: Fri, 10 Aug 2012 21:55:41 +0200 +Subject: [PATCH] hal/arm: fix compilation for thumb + +--- + include/asm-arm/atomic.h | 3 ++ + ksrc/arch/arm/switch.S | 84 +++++++++++++++++++++++++++------------------ + 2 files changed, 53 insertions(+), 34 deletions(-) + +diff --git a/include/asm-arm/atomic.h b/include/asm-arm/atomic.h +index 5d55ae8..ae96847 100644 +--- a/include/asm-arm/atomic.h ++++ b/include/asm-arm/atomic.h +@@ -183,6 +183,9 @@ xnarch_atomic_cmpxchg(xnarch_atomic_t *ptr, + "ldrex %1, [%3]\n" + "mov %0, #0\n" + "teq %1, %4\n" ++#ifdef __thumb__ ++ "it eq\n" ++#endif + "strexeq %0, %5, [%3]\n" + : "=&r" (res), "=&r" (curval), "+Qo" (ptr->counter) + : "r" (&ptr->counter), "Ir" (oldval), "r" (newval) +diff --git a/ksrc/arch/arm/switch.S b/ksrc/arch/arm/switch.S +index 83f4746..95c355f 100644 +--- a/ksrc/arch/arm/switch.S ++++ b/ksrc/arch/arm/switch.S +@@ -37,6 +37,11 @@ + .endm + #endif + ++#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 31) ++#define ARM(x...) x ++#define THUMB(x...) ++#endif ++ + #if LINUX_VERSION_CODE <= KERNEL_VERSION(2, 6, 37) + #ifdef CONFIG_MMU + #define USE_DOMAINS +@@ -83,18 +88,19 @@ + * r0 = pointer to union vfp_state, r1 = fpexc + */ + ENTRY(rthal_vfp_save) +- VFPFSTMIA r0, r2 @ save the working registers +- VFPFMRX r2, FPSCR @ current status +- tst r1, #FPEXC_EX @ is there additional state to save? +- beq 1f +- VFPFMRX r3, FPINST @ FPINST (only if FPEXC.EX is set) +- tst r1, #FPEXC_FP2V @ is there an FPINST2 to read? +- beq 1f +- VFPFMRX r12, FPINST2 @ FPINST2 if needed (and present) ++ VFPFSTMIA r0, r2 @ save the working registers ++ VFPFMRX r2, FPSCR @ current status ++ tst r1, #FPEXC_EX @ is there additional state to save? ++ beq 1f ++ VFPFMRX r3, FPINST @ FPINST (only if FPEXC.EX is set) ++ tst r1, #FPEXC_FP2V @ is there an FPINST2 to read? ++ beq 1f ++ VFPFMRX r12, FPINST2 @ FPINST2 if needed (and present) + 1: +- stmia r0, {r1, r2, r3, r12} @ save FPEXC, FPSCR, FPINST, FPINST2 +- mov pc, lr +- ++ stmia r0, {r1, r2, r3, r12} @ save FPEXC, FPSCR, FPINST, FPINST2 ++ mov pc, lr ++ENDPROC(rthal_vfp_save) ++ + /* Copied from no_old_VFP_process in arch/arm/vfp/vfphw.S + * r0 = pointer to union vfp_state + * r1 = current cpu +@@ -102,20 +108,21 @@ ENTRY(rthal_vfp_save) + ENTRY(rthal_vfp_load) + #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 2, 0) \ + || defined(CONFIG_VFP_3_2_BACKPORT)) && defined(CONFIG_SMP) +- str r1, [r0, #VFP_CPU] ++ str r1, [r0, #VFP_CPU] + #endif +- VFPFLDMIA r0, r2 @ reload the working registers while ++ VFPFLDMIA r0, r2 @ reload the working registers while + @ FPEXC is in a safe state +- ldmia r0, {r1, r2, r3, r12} @ load FPEXC, FPSCR, FPINST, FPINST2 +- tst r1, #FPEXC_EX @ is there additional state to restore? +- beq 1f +- VFPFMXR FPINST, r3 @ restore FPINST (only if FPEXC.EX is set) +- tst r1, #FPEXC_FP2V @ is there an FPINST2 to write? +- beq 1f +- VFPFMXR FPINST2, r12 @ FPINST2 if needed (and present) ++ ldmia r0, {r1, r2, r3, r12} @ load FPEXC, FPSCR, FPINST, FPINST2 ++ tst r1, #FPEXC_EX @ is there additional state to restore? ++ beq 1f ++ VFPFMXR FPINST, r3 @ restore FPINST (only if FPEXC.EX is set) ++ tst r1, #FPEXC_FP2V @ is there an FPINST2 to write? ++ beq 1f ++ VFPFMXR FPINST2, r12 @ FPINST2 if needed (and present) + 1: +- VFPFMXR FPSCR, r2 @ restore status +- mov pc, lr ++ VFPFMXR FPSCR, r2 @ restore status ++ mov pc, lr ++ENDPROC(rthal_vfp_load) + #endif + + /* +@@ -144,28 +151,37 @@ ENTRY(rthal_vfp_load) + * r0 = previous task_struct, r1 = previous thread_info, r2 = next thread_info + */ + ENTRY(rthal_thread_switch) +- add ip, r1, #TI_CPU_SAVE +- ldr r3, [r2, #TI_TP_VALUE] +- stmia ip!, {r4 - sl, fp, sp, lr} @ Store most regs on stack ++ add ip, r1, #TI_CPU_SAVE ++ ldr r3, [r2, #TI_TP_VALUE] ++ ARM( stmia ip!, {r4 - sl, fp, sp, lr} ) @ Store most regs on stack ++ THUMB( stmia ip!, {r4 - sl, fp} ) @ Store most regs on stack ++ THUMB( str sp, [ip], #4 ) ++ THUMB( str lr, [ip], #4 ) + #ifdef USE_DOMAINS +- ldr r6, [r2, #TI_CPU_DOMAIN] ++ ldr r6, [r2, #TI_CPU_DOMAIN] + #endif + +- clear_exclusive_monitor +- set_tls r3, r4, r5 ++ clear_exclusive_monitor ++ set_tls r3, r4, r5 + #ifdef USE_DOMAINS +- mcr p15, 0, r6, c3, c0, 0 @ Set domain register ++ mcr p15, 0, r6, c3, c0, 0 @ Set domain register + #endif +- fpu_switch r4 +- add r4, r2, #TI_CPU_SAVE +- ldmia r4, {r4 - sl, fp, sp, pc} @ Load all regs saved previously ++ fpu_switch r4 ++ ARM( add r4, r2, #TI_CPU_SAVE ) ++ ARM( ldmia r4, {r4 - sl, fp, sp, pc} ) @ Load all regs saved previously ++ THUMB( add ip, r2, #TI_CPU_SAVE ) ++ THUMB( ldmia ip!, {r4 - sl, fp} ) @ Load all regs saved previously ++ THUMB( ldr sp, [ip], #4 ) ++ THUMB( ldr pc, [ip] ) ++ENDPROC(rthal_thread_switch) + + /* + * r4 = xnarch_thread_trampoline + * r5 = xnarchtcb_t * + */ + ENTRY(rthal_thread_trampoline) +- mov r0, r5 +- mov pc, r4 ++ mov r0, r5 ++ mov pc, r4 ++ENDPROC(rthal_thread_trampoline) + + // vim: ts=4 et sw=4 sts=4 +-- +1.7.2.5 + diff --git a/package/xenomai/xenomai.mk b/package/xenomai/xenomai.mk index 6dbdcea65..e425b7567 100644 --- a/package/xenomai/xenomai.mk +++ b/package/xenomai/xenomai.mk @@ -7,7 +7,7 @@ XENOMAI_VERSION = $(call qstrip,$(BR2_PACKAGE_XENOMAI_VERSION)) ifeq ($(XENOMAI_VERSION),) -XENOMAI_VERSION = 2.6.0 +XENOMAI_VERSION = 2.6.1 endif XENOMAI_SITE = http://download.gna.org/xenomai/stable/ |