[Buildroot] [git commit] xenomai: bump to 2.6.1

Peter Korsgaard jacmet at sunsite.dk
Sun Oct 14 18:13:59 UTC 2012


commit: http://git.buildroot.net/buildroot/commit/?id=7f00b62917b0ecf825b385a616a452bb52a8590d
branch: http://git.buildroot.net/buildroot/commit/?id=refs/heads/master

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 at free-electrons.com>
Signed-off-by: Peter Korsgaard <jacmet at sunsite.dk>
---
 package/xenomai/xenomai-fix-lfs-issue.patch |   72 ------------
 package/xenomai/xenomai-thumb-fix.patch     |  157 +++++++++++++++++++++++++++
 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 157c8e2..0000000
--- a/package/xenomai/xenomai-fix-lfs-issue.patch
+++ /dev/null
@@ -1,72 +0,0 @@
-From: Gilles Chanteperdrix <gilles.chanteperdrix at 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 0000000..7c98c2e
--- /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 at 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 6dbdcea..e425b75 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/


More information about the buildroot mailing list