Module: xenomai-2.4
Branch: master
Commit: a741fad857f482e92481c2928a3a9ebb21d27fbd
URL:    
http://git.xenomai.org/?p=xenomai-2.4.git;a=commit;h=a741fad857f482e92481c2928a3a9ebb21d27fbd

Author: Philippe Gerum <r...@xenomai.org>
Date:   Thu May 28 16:04:22 2009 +0200

Update Adeos/arm support

---

 ....patch => adeos-ipipe-2.6.27-arm-1.12-02.patch} |   42 ++++++++++++++++----
 ....patch => adeos-ipipe-2.6.28-arm-1.12-02.patch} |   42 ++++++++++++++++----
 2 files changed, 68 insertions(+), 16 deletions(-)

diff --git a/ksrc/arch/arm/patches/adeos-ipipe-2.6.27-arm-1.12-01.patch 
b/ksrc/arch/arm/patches/adeos-ipipe-2.6.27-arm-1.12-02.patch
similarity index 99%
rename from ksrc/arch/arm/patches/adeos-ipipe-2.6.27-arm-1.12-01.patch
rename to ksrc/arch/arm/patches/adeos-ipipe-2.6.27-arm-1.12-02.patch
index 49bf9a6..41e92fa 100644
--- a/ksrc/arch/arm/patches/adeos-ipipe-2.6.27-arm-1.12-01.patch
+++ b/ksrc/arch/arm/patches/adeos-ipipe-2.6.27-arm-1.12-02.patch
@@ -445,10 +445,10 @@ index 0000000..2a0c0e3
 +#endif /* __ASM_ARM_FCSE_H */
 diff --git a/arch/arm/include/asm/ipipe.h b/arch/arm/include/asm/ipipe.h
 new file mode 100644
-index 0000000..89c352b
+index 0000000..e8e76e1
 --- /dev/null
 +++ b/arch/arm/include/asm/ipipe.h
-@@ -0,0 +1,200 @@
+@@ -0,0 +1,226 @@
 +/* -*- linux-c -*-
 + * arch/arm/include/asm/ipipe.h
 + *
@@ -479,10 +479,10 @@ index 0000000..89c352b
 +
 +#include <linux/ipipe_percpu.h>
 +
-+#define IPIPE_ARCH_STRING     "1.12-01"
++#define IPIPE_ARCH_STRING     "1.12-02"
 +#define IPIPE_MAJOR_NUMBER    1
 +#define IPIPE_MINOR_NUMBER    12
-+#define IPIPE_PATCH_NUMBER    1
++#define IPIPE_PATCH_NUMBER    2
 +
 +#ifdef CONFIG_SMP
 +#error "I-pipe/arm: SMP not yet implemented"
@@ -493,11 +493,37 @@ index 0000000..89c352b
 +
 +#define smp_processor_id_hw() ipipe_processor_id()
 +
-+#define prepare_arch_switch(next) ipipe_schedule_notify(current, next)
++#ifdef CONFIG_IPIPE_WANT_PREEMPTIBLE_SWITCH
 +
-+/* We would need to clear the SYNC flag for the root domain */
-+/* over the current processor in SMP mode. */
-+#define task_hijacked(p) !ipipe_root_domain_p
++#define prepare_arch_switch(next)                     \
++      do {                                            \
++              local_irq_enable_hw();                  \
++              ipipe_schedule_notify(current, next);   \
++      } while(0)
++
++#define task_hijacked(p)                                              \
++      ({                                                              \
++              int x = !ipipe_root_domain_p;                           \
++              clear_bit(IPIPE_SYNC_FLAG, &ipipe_root_cpudom_var(status)); \
++              x;                                                      \
++      })
++
++#else /* !CONFIG_IPIPE_WANT_PREEMPTIBLE_SWITCH */
++
++#define prepare_arch_switch(next)                     \
++      do {                                            \
++              ipipe_schedule_notify(current ,next);   \
++              local_irq_disable_hw();                 \
++      } while(0)
++
++#define task_hijacked(p)                                              \
++      ({                                                              \
++              int x = !ipipe_root_domain_p;                           \
++              __clear_bit(IPIPE_SYNC_FLAG, &ipipe_root_cpudom_var(status)); \
++              if (!x) local_irq_enable_hw(); x;                       \
++      })
++
++#endif /* !CONFIG_IPIPE_WANT_PREEMPTIBLE_SWITCH */
 +
 +extern unsigned long arm_return_addr(int level);
 +
diff --git a/ksrc/arch/arm/patches/adeos-ipipe-2.6.28-arm-1.12-01.patch 
b/ksrc/arch/arm/patches/adeos-ipipe-2.6.28-arm-1.12-02.patch
similarity index 99%
rename from ksrc/arch/arm/patches/adeos-ipipe-2.6.28-arm-1.12-01.patch
rename to ksrc/arch/arm/patches/adeos-ipipe-2.6.28-arm-1.12-02.patch
index 77e315f..1f8dc1b 100644
--- a/ksrc/arch/arm/patches/adeos-ipipe-2.6.28-arm-1.12-01.patch
+++ b/ksrc/arch/arm/patches/adeos-ipipe-2.6.28-arm-1.12-02.patch
@@ -445,10 +445,10 @@ index 0000000..2a0c0e3
 +#endif /* __ASM_ARM_FCSE_H */
 diff --git a/arch/arm/include/asm/ipipe.h b/arch/arm/include/asm/ipipe.h
 new file mode 100644
-index 0000000..89c352b
+index 0000000..e8e76e1
 --- /dev/null
 +++ b/arch/arm/include/asm/ipipe.h
-@@ -0,0 +1,200 @@
+@@ -0,0 +1,226 @@
 +/* -*- linux-c -*-
 + * arch/arm/include/asm/ipipe.h
 + *
@@ -479,10 +479,10 @@ index 0000000..89c352b
 +
 +#include <linux/ipipe_percpu.h>
 +
-+#define IPIPE_ARCH_STRING     "1.12-01"
++#define IPIPE_ARCH_STRING     "1.12-02"
 +#define IPIPE_MAJOR_NUMBER    1
 +#define IPIPE_MINOR_NUMBER    12
-+#define IPIPE_PATCH_NUMBER    1
++#define IPIPE_PATCH_NUMBER    2
 +
 +#ifdef CONFIG_SMP
 +#error "I-pipe/arm: SMP not yet implemented"
@@ -493,11 +493,37 @@ index 0000000..89c352b
 +
 +#define smp_processor_id_hw() ipipe_processor_id()
 +
-+#define prepare_arch_switch(next) ipipe_schedule_notify(current, next)
++#ifdef CONFIG_IPIPE_WANT_PREEMPTIBLE_SWITCH
 +
-+/* We would need to clear the SYNC flag for the root domain */
-+/* over the current processor in SMP mode. */
-+#define task_hijacked(p) !ipipe_root_domain_p
++#define prepare_arch_switch(next)                     \
++      do {                                            \
++              local_irq_enable_hw();                  \
++              ipipe_schedule_notify(current, next);   \
++      } while(0)
++
++#define task_hijacked(p)                                              \
++      ({                                                              \
++              int x = !ipipe_root_domain_p;                           \
++              clear_bit(IPIPE_SYNC_FLAG, &ipipe_root_cpudom_var(status)); \
++              x;                                                      \
++      })
++
++#else /* !CONFIG_IPIPE_WANT_PREEMPTIBLE_SWITCH */
++
++#define prepare_arch_switch(next)                     \
++      do {                                            \
++              ipipe_schedule_notify(current ,next);   \
++              local_irq_disable_hw();                 \
++      } while(0)
++
++#define task_hijacked(p)                                              \
++      ({                                                              \
++              int x = !ipipe_root_domain_p;                           \
++              __clear_bit(IPIPE_SYNC_FLAG, &ipipe_root_cpudom_var(status)); \
++              if (!x) local_irq_enable_hw(); x;                       \
++      })
++
++#endif /* !CONFIG_IPIPE_WANT_PREEMPTIBLE_SWITCH */
 +
 +extern unsigned long arm_return_addr(int level);
 +


_______________________________________________
Xenomai-git mailing list
Xenomai-git@gna.org
https://mail.gna.org/listinfo/xenomai-git

Reply via email to