Module: xenomai-2.6 Branch: master Commit: 41cb1f73814d1094e0ea75ccbbd23ff01280787e URL: http://git.xenomai.org/?p=xenomai-2.6.git;a=commit;h=41cb1f73814d1094e0ea75ccbbd23ff01280787e
Author: Gilles Chanteperdrix <gilles.chanteperd...@xenomai.org> Date: Sat Mar 29 21:41:18 2014 +0100 hal/arm: adapt context switch to Linux 3.11+ --- include/asm-arm/bits/thread.h | 2 +- ksrc/arch/arm/switch.S | 19 +++++++++++++++++-- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/include/asm-arm/bits/thread.h b/include/asm-arm/bits/thread.h index dba45c9..67f1465 100644 --- a/include/asm-arm/bits/thread.h +++ b/include/asm-arm/bits/thread.h @@ -42,7 +42,7 @@ static inline void xnarch_init_tcb(xnarchtcb_t * tcb) tcb->mm = NULL; tcb->active_mm = NULL; tcb->tip = &tcb->ti; - tcb->ti.tp_value = 0; + memset(&tcb->ti.tp_value, '\0', sizeof(tcb->ti.tp_value)); tcb->ti.cpu_domain = xnarch_current_domain_access_control(); #ifdef CONFIG_XENO_HW_FPU tcb->user_fpu_owner = NULL; diff --git a/ksrc/arch/arm/switch.S b/ksrc/arch/arm/switch.S index 8f48229..faf7191 100644 --- a/ksrc/arch/arm/switch.S +++ b/ksrc/arch/arm/switch.S @@ -37,6 +37,21 @@ .endm #endif +#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 11, 0) + .macro load_tls base, tp, tpuser + ldr \tp, [\base, #TI_TP_VALUE] + .endm + + .macro switch_tls base, tp, tpuser, tmp1, tmp2 + set_tls \tp, \tmp1, \tmp2 + .endm +#else + .macro load_tls base, tp, tpuser + ldr \tp, [\base, #TI_TP_VALUE] + ldr \tpuser, [\base, #TI_TP_VALUE + 4] + .endm +#endif + #if LINUX_VERSION_CODE <= KERNEL_VERSION(2, 6, 31) #define ARM(x...) x #define THUMB(x...) @@ -152,17 +167,17 @@ ENDPROC(rthal_vfp_load) */ ENTRY(rthal_thread_switch) 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 ) + load_tls r2, r4, r5 #ifdef USE_DOMAINS ldr r6, [r2, #TI_CPU_DOMAIN] #endif clear_exclusive_monitor - set_tls r3, r4, r5 + switch_tls r1, r4, r5, r3, r7 #ifdef USE_DOMAINS mcr p15, 0, r6, c3, c0, 0 @ Set domain register #endif _______________________________________________ Xenomai-git mailing list Xenomai-git@xenomai.org http://www.xenomai.org/mailman/listinfo/xenomai-git