xenomai: bump to 2.6.1
authorThomas Petazzoni <thomas.petazzoni@free-electrons.com>
Fri, 12 Oct 2012 06:29:27 +0000 (06:29 +0000)
committerPeter Korsgaard <jacmet@sunsite.dk>
Sun, 14 Oct 2012 18:13:59 +0000 (20:13 +0200)
The largefile patch is no longer necessary, it has been merged
upstream. However, in order to make the build work properly with
Thumb2 toolchains (such as Linaro toolchains), an additional fix is
needed. This fix is already upstream and will be part of upcoming
Xenomai releases.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
package/xenomai/xenomai-fix-lfs-issue.patch [deleted file]
package/xenomai/xenomai-thumb-fix.patch [new file with mode: 0644]
package/xenomai/xenomai.mk

diff --git a/package/xenomai/xenomai-fix-lfs-issue.patch b/package/xenomai/xenomai-fix-lfs-issue.patch
deleted file mode 100644 (file)
index 157c8e2..0000000
+++ /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 (file)
index 0000000..7c98c2e
--- /dev/null
@@ -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
+
index 6dbdcea65f7e710eee287bf50ec5976815741be2..e425b756794035aa86266eff62f20ed52cd41a43 100644 (file)
@@ -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/