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