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

Author: Philippe Gerum <r...@xenomai.org>
Date:   Wed Apr 29 10:14:19 2009 +0200

Move arch-specific capability flags to the feature header

---

 include/asm-arm/syscall.h       |   40 +++++++++++++++++++-------------------
 include/asm-blackfin/features.h |    1 +
 include/asm-blackfin/syscall.h  |    2 -
 include/asm-generic/syscall.h   |    5 +--
 include/asm-powerpc/features.h  |    1 +
 include/asm-powerpc/syscall.h   |    5 ----
 include/asm-x86/features_32.h   |    7 +++--
 include/asm-x86/features_64.h   |    1 +
 include/asm-x86/syscall_32.h    |    8 +-----
 include/asm-x86/syscall_64.h    |    2 -
 src/skins/native/timer.c        |    6 ++--
 src/skins/posix/clock.c         |    8 +++---
 src/skins/posix/init.c          |    4 +-
 13 files changed, 40 insertions(+), 50 deletions(-)

diff --git a/include/asm-arm/syscall.h b/include/asm-arm/syscall.h
index 37e645d..a6d1534 100644
--- a/include/asm-arm/syscall.h
+++ b/include/asm-arm/syscall.h
@@ -202,9 +202,9 @@ static inline int __xn_interrupted_p(struct pt_regs *regs)
 #define XENOMAI_SKINCALL5(id,op,a1,a2,a3,a4,a5)                \
        XENOMAI_DO_SYSCALL(5,id,op,a1,a2,a3,a4,a5)
 
-#ifdef CONFIG_XENO_ARM_HW_DIRECT_TSC
-#define CONFIG_XENO_HW_DIRECT_TSC
-#endif /* CONFIG_XENO_ARM_HW_DIRECT_TSC */
+#ifdef XNARCH_ARM_TSC_TYPE
+#define XNARCH_HAVE_NONPRIV_TSC  1
+#endif /* XNARCH_ARM_TSC_TYPE */
 
 #endif /* __KERNEL__ */
 
@@ -229,12 +229,12 @@ struct __xn_tscinfo {
                 } dec;
         } u;
 };
-#define __XN_TSC_TYPE_NONE        0
-#define __XN_TSC_TYPE_FREERUNNING 1
-#define __XN_TSC_TYPE_DECREMENTER 2
+#define __XN_TSC_TYPE_NONE                  0
+#define __XN_TSC_TYPE_FREERUNNING           1
+#define __XN_TSC_TYPE_DECREMENTER           2
 #define __XN_TSC_TYPE_FREERUNNING_FAST_WRAP 3
 
-#define XENOMAI_SYSARCH_TSCINFO                 4
+#define XENOMAI_SYSARCH_TSCINFO             4
 
 #ifndef __KERNEL__
 #include <stdio.h>
@@ -250,10 +250,10 @@ __attribute__((weak)) struct __xn_tscinfo __xn_tscinfo = {
        type: -1
 };
 
-#ifdef CONFIG_XENO_ARM_HW_DIRECT_TSC
+#ifdef XNARCH_ARM_TSC_TYPE
 static inline unsigned long long __xn_rdtsc(void)
 {
-#if CONFIG_XENO_ARM_HW_DIRECT_TSC == __XN_TSC_TYPE_FREERUNNING
+#if XNARCH_ARM_TSC_TYPE == __XN_TSC_TYPE_FREERUNNING
        volatile unsigned long long *const tscp = __xn_tscinfo.u.fr.tsc;
        volatile unsigned *const counterp = __xn_tscinfo.u.fr.counter;
         const unsigned mask = __xn_tscinfo.u.fr.mask;
@@ -267,7 +267,7 @@ static inline unsigned long long __xn_rdtsc(void)
         if ((counter & mask) < ((unsigned) result & mask))
                 result += mask + 1ULL;
         return (result & ~((unsigned long long) mask)) | (counter & mask);
-#elif CONFIG_XENO_ARM_HW_DIRECT_TSC == __XN_TSC_TYPE_FREERUNNING_FAST_WRAP
+#elif XNARCH_ARM_TSC_TYPE == __XN_TSC_TYPE_FREERUNNING_FAST_WRAP
        volatile unsigned long long *const tscp = __xn_tscinfo.u.fr.tsc;
        volatile unsigned *const counterp = __xn_tscinfo.u.fr.counter;
        const unsigned mask = __xn_tscinfo.u.fr.mask;
@@ -285,7 +285,7 @@ static inline unsigned long long __xn_rdtsc(void)
                before += mask + 1;
        return (before & ~((unsigned long long) mask)) | (counter & mask);
 
-#elif CONFIG_XENO_ARM_HW_DIRECT_TSC == __XN_TSC_TYPE_DECREMENTER
+#elif XNARCH_ARM_TSC_TYPE == __XN_TSC_TYPE_DECREMENTER
        const unsigned mask = __xn_tscinfo.u.dec.mask;
        unsigned long long after, before;
        unsigned counter, last_cnt;
@@ -306,13 +306,13 @@ static inline unsigned long long __xn_rdtsc(void)
                before += mask + 1ULL;
        return (before + last_cnt - counter);
 
-#endif /* CONFIG_XENO_HW_DIRECT_TSC == __XN_TSC_TYPE_DECREMENTER */
+#endif /* XNARCH_ARM_TSC_TYPE == __XN_TSC_TYPE_DECREMENTER */
 }
-#endif /* CONFIG_XENO_ARM_HW_DIRECT_TSC */
+#endif /* XNARCH_ARM_TSC_TYPE */
 
 static inline void xeno_arm_features_check(void)
 {
-#ifdef CONFIG_XENO_ARM_HW_DIRECT_TSC
+#ifdef XNARCH_ARM_TSC_TYPE
        unsigned page_size;
        int err, fd;
        void *addr;
@@ -338,8 +338,8 @@ static inline void xeno_arm_features_check(void)
        page_size = sysconf(_SC_PAGESIZE);
 
        switch(__xn_tscinfo.type) {
-#if CONFIG_XENO_ARM_HW_DIRECT_TSC == __XN_TSC_TYPE_FREERUNNING         \
-       || CONFIG_XENO_ARM_HW_DIRECT_TSC == __XN_TSC_TYPE_FREERUNNING_FAST_WRAP
+#if XNARCH_ARM_TSC_TYPE == __XN_TSC_TYPE_FREERUNNING           \
+       || XNARCH_ARM_TSC_TYPE == __XN_TSC_TYPE_FREERUNNING_FAST_WRAP
        case __XN_TSC_TYPE_FREERUNNING: {
                unsigned long phys_addr;
 
@@ -354,7 +354,7 @@ static inline void xeno_arm_features_check(void)
                __xn_tscinfo.u.fr.counter = 
                        ((volatile unsigned *)
                         ((char *) addr + (phys_addr & (page_size - 1))));
-#if CONFIG_XENO_ARM_HW_DIRECT_TSC == __XN_TSC_TYPE_FREERUNNING_FAST_WRAP
+#if XNARCH_ARM_TSC_TYPE == __XN_TSC_TYPE_FREERUNNING_FAST_WRAP
                if (__xn_tscinfo.u.fr.mask >= ((1 << 28) - 1)) {
                        fprintf(stderr, "Hardware tsc is not a fast wrapping"
                                " one, select the correct platform, or fix\n"
@@ -364,7 +364,7 @@ static inline void xeno_arm_features_check(void)
 #endif /* __XN_TSC_TYPE_FREERUNNING_FAST_WRAP */
                break;
        }
-#elif CONFIG_XENO_ARM_HW_DIRECT_TSC == __XN_TSC_TYPE_DECREMENTER
+#elif XNARCH_ARM_TSC_TYPE == __XN_TSC_TYPE_DECREMENTER
        case __XN_TSC_TYPE_DECREMENTER: {
                unsigned long phys_addr;
 
@@ -381,7 +381,7 @@ static inline void xeno_arm_features_check(void)
                         ((char *) addr + (phys_addr & (page_size - 1))));
                break;
        }
-#endif /* CONFIG_XENO_ARM_HW_DIRECT_TSC == __XN_TSC_TYPE_DECREMENTER */
+#endif /* XNARCH_ARM_TSC_TYPE == __XN_TSC_TYPE_DECREMENTER */
        case __XN_TSC_TYPE_NONE:
                goto error;
                
@@ -395,7 +395,7 @@ static inline void xeno_arm_features_check(void)
                perror("Xenomai init: close(/dev/mem)");
                exit(EXIT_FAILURE);
        }
-#endif /* CONFIG_XENO_ARM_HW_DIRECT_TSC */
+#endif /* XNARCH_ARM_TSC_TYPE */
 }
 #define xeno_arch_features_check() xeno_arm_features_check()
 
diff --git a/include/asm-blackfin/features.h b/include/asm-blackfin/features.h
index fa02c0c..beb81ba 100644
--- a/include/asm-blackfin/features.h
+++ b/include/asm-blackfin/features.h
@@ -40,5 +40,6 @@ static inline const char *get_feature_label (unsigned feature)
 
 #define XNARCH_HAVE_LLMULSHFT    1
 #define XNARCH_HAVE_NODIV_LLIMD  1
+#define XNARCH_HAVE_NONPRIV_TSC  1
 
 #endif /* !_XENO_ASM_BLACKFIN_FEATURES_H */
diff --git a/include/asm-blackfin/syscall.h b/include/asm-blackfin/syscall.h
index 6781b34..f8c120e 100644
--- a/include/asm-blackfin/syscall.h
+++ b/include/asm-blackfin/syscall.h
@@ -217,8 +217,6 @@ static inline int __xn_interrupted_p(struct pt_regs *regs)
 #define XENOMAI_SKINCALL4(id,op,a1,a2,a3,a4)    
XENOMAI_DO_SYSCALL(4,id,op,a1,a2,a3,a4)
 #define XENOMAI_SKINCALL5(id,op,a1,a2,a3,a4,a5) 
XENOMAI_DO_SYSCALL(5,id,op,a1,a2,a3,a4,a5)
 
-#define CONFIG_XENO_HW_DIRECT_TSC 1
-
 static inline unsigned long long __xn_rdtsc (void)
 {
     union {
diff --git a/include/asm-generic/syscall.h b/include/asm-generic/syscall.h
index cf3ea9d..1780d7f 100644
--- a/include/asm-generic/syscall.h
+++ b/include/asm-generic/syscall.h
@@ -20,6 +20,8 @@
 #ifndef _XENO_ASM_GENERIC_SYSCALL_H
 #define _XENO_ASM_GENERIC_SYSCALL_H
 
+#include <asm/xenomai/features.h>
+
 /* Xenomai multiplexer syscall. */
 #define __xn_sys_mux           555     /* Must fit within 15bit */
 /* Xenomai nucleus syscalls. */
@@ -153,10 +155,7 @@ static inline int __xn_safe_strncpy_from_user(char *dst,
 }
 
 #else /* !__KERNEL__ */
-
 #include <sys/types.h>
-#include <asm/xenomai/features.h>
-
 #endif /* __KERNEL__ */
 
 typedef struct xncompletion {
diff --git a/include/asm-powerpc/features.h b/include/asm-powerpc/features.h
index ed8f6b0..691387e 100644
--- a/include/asm-powerpc/features.h
+++ b/include/asm-powerpc/features.h
@@ -40,5 +40,6 @@ static inline const char *get_feature_label(unsigned feature)
 
 #define XNARCH_HAVE_LLMULSHFT    1
 #define XNARCH_HAVE_NODIV_LLIMD  1
+#define XNARCH_HAVE_NONPRIV_TSC  1
 
 #endif /* !_XENO_ASM_POWERPC_FEATURES_H */
diff --git a/include/asm-powerpc/syscall.h b/include/asm-powerpc/syscall.h
index 8b0f8d3..ea8cf40 100644
--- a/include/asm-powerpc/syscall.h
+++ b/include/asm-powerpc/syscall.h
@@ -147,8 +147,6 @@ static inline int __xn_interrupted_p(struct pt_regs *regs)
 #define XENOMAI_SKINCALL4(id,op,a1,a2,a3,a4)    
XENOMAI_DO_SYSCALL(4,id,op,a1,a2,a3,a4)
 #define XENOMAI_SKINCALL5(id,op,a1,a2,a3,a4,a5) 
XENOMAI_DO_SYSCALL(5,id,op,a1,a2,a3,a4,a5)
 
-#define CONFIG_XENO_HW_DIRECT_TSC  1
-
 static inline unsigned long long __xn_rdtsc(void)
 #if defined(__powerpc64__)
 {
@@ -175,9 +173,6 @@ static inline unsigned long long __xn_rdtsc(void)
 }
 #endif /* __powerpc64__ */
 
-#define CONFIG_XENO_HAVE_LLMULSHFT    1
-#define CONFIG_XENO_HAVE_NODIV_LLIMD  1
-
 #endif /* __KERNEL__ */
 
 #endif /* !_XENO_ASM_POWERPC_SYSCALL_H */
diff --git a/include/asm-x86/features_32.h b/include/asm-x86/features_32.h
index c3669ad..3037bb0 100644
--- a/include/asm-x86/features_32.h
+++ b/include/asm-x86/features_32.h
@@ -43,14 +43,15 @@
 
 #ifdef CONFIG_X86_TSC
 #define __xn_feat_x86_tsc_mask __xn_feat_x86_tsc
+#define XNARCH_HAVE_NONPRIV_TSC  1
 #else
-#define __xn_feat_x86_tsc_mask 0
+#define __xn_feat_x86_tsc_mask   0
 #endif
 
 #ifdef CONFIG_XENO_X86_SEP
-#define __xn_feat_x86_sep_mask __xn_feat_x86_sep
+#define __xn_feat_x86_sep_mask  __xn_feat_x86_sep
 #else
-#define __xn_feat_x86_sep_mask 0
+#define __xn_feat_x86_sep_mask   0
 #endif
 
 #define XENOMAI_FEAT_DEP  (__xn_feat_generic_mask| \
diff --git a/include/asm-x86/features_64.h b/include/asm-x86/features_64.h
index 04b7ccb..f476486 100644
--- a/include/asm-x86/features_64.h
+++ b/include/asm-x86/features_64.h
@@ -41,5 +41,6 @@ static inline const char *get_feature_label (unsigned feature)
 
 #define XNARCH_HAVE_LLMULSHFT    1
 #define XNARCH_HAVE_NODIV_LLIMD  1
+#define XNARCH_HAVE_NONPRIV_TSC  1
 
 #endif /* !_XENO_ASM_X86_FEATURES_64_H */
diff --git a/include/asm-x86/syscall_32.h b/include/asm-x86/syscall_32.h
index 210e164..a91805e 100644
--- a/include/asm-x86/syscall_32.h
+++ b/include/asm-x86/syscall_32.h
@@ -211,10 +211,7 @@ asm (".L__X'%ebx = 1\n\t"
 #define XENOMAI_SKINCALL4(id,op,a1,a2,a3,a4)    
XENOMAI_SKIN_MUX(4,id,op,a1,a2,a3,a4)
 #define XENOMAI_SKINCALL5(id,op,a1,a2,a3,a4,a5) 
XENOMAI_SKIN_MUX(5,id,op,a1,a2,a3,a4,a5)
 
-#ifdef CONFIG_X86_TSC
-
-#define CONFIG_XENO_HW_DIRECT_TSC 1
-
+#ifdef XNARCH_HAVE_NONPRIV_TSC
 static inline unsigned long long __xn_rdtsc (void)
 
 {
@@ -222,8 +219,7 @@ static inline unsigned long long __xn_rdtsc (void)
     __asm__ __volatile__( "rdtsc" : "=A" (t));
     return t;
 }
-
-#endif  /* CONFIG_X86_TSC */
+#endif  /* XNARCH_HAVE_NONPRIV_TSC */
 
 #endif /* __KERNEL__ */
 
diff --git a/include/asm-x86/syscall_64.h b/include/asm-x86/syscall_64.h
index e8f3726..adaa40b 100644
--- a/include/asm-x86/syscall_64.h
+++ b/include/asm-x86/syscall_64.h
@@ -159,8 +159,6 @@ static inline int __xn_interrupted_p(struct pt_regs *regs)
 #define XENOMAI_SKINCALL4(id,op,a1,a2,a3,a4)    
XENOMAI_SKIN_MUX(4,id,op,a1,a2,a3,a4)
 #define XENOMAI_SKINCALL5(id,op,a1,a2,a3,a4,a5) 
XENOMAI_SKIN_MUX(5,id,op,a1,a2,a3,a4,a5)
 
-#define CONFIG_XENO_HW_DIRECT_TSC 1 /* x86_64 always has a TSC */
-
 static inline unsigned long long __xn_rdtsc(void)
 {
        unsigned long long t;
diff --git a/src/skins/native/timer.c b/src/skins/native/timer.c
index e1be37b..45a1e17 100644
--- a/src/skins/native/timer.c
+++ b/src/skins/native/timer.c
@@ -56,11 +56,11 @@ RTIME rt_timer_tsc(void)
 {
        RTIME tsc;
 
-#ifdef CONFIG_XENO_HW_DIRECT_TSC
+#ifdef XNARCH_HAVE_NONPRIV_TSC
        tsc = __xn_rdtsc();
-#else /* !CONFIG_XENO_HW_DIRECT_TSC */
+#else /* !XNARCH_HAVE_NONPRIV_TSC */
        XENOMAI_SKINCALL1(__native_muxid, __native_timer_tsc, &tsc);
-#endif /* CONFIG_XENO_HW_DIRECT_TSC */
+#endif /* XNARCH_HAVE_NONPRIV_TSC */
 
        return tsc;
 }
diff --git a/src/skins/posix/clock.c b/src/skins/posix/clock.c
index be75066..dc9a793 100644
--- a/src/skins/posix/clock.c
+++ b/src/skins/posix/clock.c
@@ -27,7 +27,7 @@
 
 extern int __pse51_muxid;
 
-#ifdef CONFIG_XENO_HW_DIRECT_TSC
+#ifdef XNARCH_HAVE_NONPRIV_TSC
 static xnsysinfo_t sysinfo;
 
 void pse51_clock_init(int muxid)
@@ -39,7 +39,7 @@ void pse51_clock_init(int muxid)
                exit(EXIT_FAILURE);
        }
 }
-#endif /* CONFIG_XENO_HW_DIRECT_TSC */
+#endif /* XNARCH_HAVE_NONPRIV_TSC */
 
 int __wrap_clock_getres(clockid_t clock_id, struct timespec *tp)
 {
@@ -58,7 +58,7 @@ int __wrap_clock_getres(clockid_t clock_id, struct timespec 
*tp)
 int __wrap_clock_gettime(clockid_t clock_id, struct timespec *tp)
 {
        int err;
-#ifdef CONFIG_XENO_HW_DIRECT_TSC
+#ifdef XNARCH_HAVE_NONPRIV_TSC
        if (clock_id == CLOCK_MONOTONIC && sysinfo.tickval == 1) {
                unsigned long long tsc;
                unsigned long rem;
@@ -70,7 +70,7 @@ int __wrap_clock_gettime(clockid_t clock_id, struct timespec 
*tp)
                tp->tv_nsec = xnarch_imuldiv(rem, 1000000000, sysinfo.cpufreq);
                return 0;
        }
-#endif /* CONFIG_XENO_HW_DIRECT_TSC */
+#endif /* XNARCH_HAVE_NONPRIV_TSC */
 
        err = -XENOMAI_SKINCALL2(__pse51_muxid,
                                 __pse51_clock_gettime,
diff --git a/src/skins/posix/init.c b/src/skins/posix/init.c
index b17d558..9c58c9b 100644
--- a/src/skins/posix/init.c
+++ b/src/skins/posix/init.c
@@ -55,9 +55,9 @@ void __init_posix_interface(void)
        muxid =
            xeno_bind_skin(PSE51_SKIN_MAGIC, "POSIX", "xeno_posix");
 
-#ifdef CONFIG_XENO_HW_DIRECT_TSC
+#ifdef XNARCH_HAVE_NONPRIV_TSC
        pse51_clock_init(muxid);
-#endif /* CONFIG_XENO_HW_DIRECT_TSC */
+#endif /* XNARCH_HAVE_NONPRIV_TSC */
 
        __pse51_muxid = __xn_mux_shifted_id(muxid);
 


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

Reply via email to