Module: xenomai-gch Branch: for-forge Commit: 545aaa620c201f785dc1da0e4f80dcce24f7e721 URL: http://git.xenomai.org/?p=xenomai-gch.git;a=commit;h=545aaa620c201f785dc1da0e4f80dcce24f7e721
Author: Gilles Chanteperdrix <gilles.chanteperd...@xenomai.org> Date: Tue Nov 15 02:17:16 2011 +0100 cobalt/arm: simplify configuration All options are removed. The arm-quirks are no longer needed since we suppose that any arm provides atomic operations, as well as arch specific syscalls. We also assume an I-pipe patch with kuser_tsc, so no tsc configuration is required. --- configure | 122 +++++------------------------------------ configure.in | 68 ----------------------- include/asm-arm/bits/bind.h | 23 -------- include/asm-arm/bits/shadow.h | 72 ------------------------ include/asm-arm/features.h | 59 ++++---------------- include/asm-arm/syscall.h | 78 -------------------------- lib/include/xeno_config.h.in | 12 ---- 7 files changed, 26 insertions(+), 408 deletions(-) diff --git a/configure b/configure index 84359cb..627ee29 100755 --- a/configure +++ b/configure @@ -949,8 +949,6 @@ enable_pshared enable_registry enable_smp enable_x86_sep -enable_arm_tsc -enable_arm_quirks enable_doc_install enable_dox_doc enable_dbx @@ -1614,17 +1612,6 @@ Optional Features: --enable-registry Export real-time objects to a registry --enable-smp Enable SMP support --enable-x86-sep Enable x86 SEP instructions for issuing syscalls - --enable-arm-tsc You only need this option if you get the following - message when starting an application: Xenomai: - incompatible feature set (userland requires - "kuser_tsc ...", kernel provides "...", - missing="kuser_tsc"). In that case, this option - allows to select the machine for which a user-space - tsc emulation should be generated. Valid machines - are at91, kuser, imx, ixp4xx, omap, orion, pxa, - s3c24x, sa1100. - --enable-arm-quirks Enable quirks for specific systems. Currently - supported quirks are for sa1100 and xscale3. --disable-doc-install Do not install documentation --enable-dox-doc Build Doxygen documentation --enable-dbx Build Docbook XML documentation. @@ -6036,13 +6023,13 @@ if test "${lt_cv_nm_interface+set}" = set; then : else lt_cv_nm_interface="BSD nm" echo "int some_variable = 0;" > conftest.$ac_ext - (eval echo "\"\$as_me:6039: $ac_compile\"" >&5) + (eval echo "\"\$as_me:6026: $ac_compile\"" >&5) (eval "$ac_compile" 2>conftest.err) cat conftest.err >&5 - (eval echo "\"\$as_me:6042: $NM \\\"conftest.$ac_objext\\\"\"" >&5) + (eval echo "\"\$as_me:6029: $NM \\\"conftest.$ac_objext\\\"\"" >&5) (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) cat conftest.err >&5 - (eval echo "\"\$as_me:6045: output\"" >&5) + (eval echo "\"\$as_me:6032: output\"" >&5) cat conftest.out >&5 if $GREP 'External.*some_variable' conftest.out > /dev/null; then lt_cv_nm_interface="MS dumpbin" @@ -7247,7 +7234,7 @@ ia64-*-hpux*) ;; *-*-irix6*) # Find out which ABI we are using. - echo '#line 7250 "configure"' > conftest.$ac_ext + echo '#line 7237 "configure"' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? @@ -8609,11 +8596,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:8612: $lt_compile\"" >&5) + (eval echo "\"\$as_me:8599: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:8616: \$? = $ac_status" >&5 + echo "$as_me:8603: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. @@ -8948,11 +8935,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:8951: $lt_compile\"" >&5) + (eval echo "\"\$as_me:8938: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:8955: \$? = $ac_status" >&5 + echo "$as_me:8942: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. @@ -9053,11 +9040,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:9056: $lt_compile\"" >&5) + (eval echo "\"\$as_me:9043: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "$as_me:9060: \$? = $ac_status" >&5 + echo "$as_me:9047: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized @@ -9108,11 +9095,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:9111: $lt_compile\"" >&5) + (eval echo "\"\$as_me:9098: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "$as_me:9115: \$? = $ac_status" >&5 + echo "$as_me:9102: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized @@ -11492,7 +11479,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 11495 "configure" +#line 11482 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -11588,7 +11575,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 11591 "configure" +#line 11578 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -12110,70 +12097,6 @@ $as_echo "${CONFIG_XENO_X86_SEP:-no}" >&6; } fi -if test $XENO_TARGET_ARCH = arm ; then - - unset CONFIG_XENO_ARM_SA1100 - unset CONFIG_XENO_CPU_XSC3 - CONFIG_XENO_ARM_TSC_TYPE=__XN_TSC_TYPE_KUSER - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ARM tsc type" >&5 -$as_echo_n "checking for ARM tsc type... " >&6; } - # Check whether --enable-arm-tsc was given. -if test "${enable_arm_tsc+set}" = set; then : - enableval=$enable_arm_tsc; case "$enableval" in - at91*) CONFIG_XENO_ARM_TSC_TYPE=__XN_TSC_TYPE_FREERUNNING_FAST_WRAP;; - - integrator) unset tsc_type;; - - ixp4xx) CONFIG_XENO_ARM_TSC_TYPE=__XN_TSC_TYPE_FREERUNNING;; - - imx*|mx*) CONFIG_XENO_ARM_TSC_TYPE=__XN_TSC_TYPE_FREERUNNING;; - - kuser) CONFIG_XENO_ARM_TSC_TYPE=__XN_TSC_TYPE_KUSER;; - - omap*) CONFIG_XENO_ARM_TSC_TYPE=__XN_TSC_TYPE_FREERUNNING;; - - orion) CONFIG_XENO_ARM_TSC_TYPE=__XN_TSC_TYPE_FREERUNNING_COUNTDOWN;; - - pxa*) CONFIG_XENO_CPU_XSC3=y - CONFIG_XENO_ARM_TSC_TYPE=__XN_TSC_TYPE_FREERUNNING;; - - s3c24*) CONFIG_XENO_ARM_TSC_TYPE=__XN_TSC_TYPE_DECREMENTER;; - - sa1100) CONFIG_XENO_ARM_SA1100=y - CONFIG_XENO_ARM_TSC_TYPE=__XN_TSC_TYPE_FREERUNNING;; - - n | no) unset CONFIG_XENO_ARM_TSC_TYPE;; - - *)as_fn_error $? "Invalid SOC selected: \"$enableval\"" "$LINENO" 5 ;; - esac -fi - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${enable_arm_tsc:-kuser}" >&5 -$as_echo "${enable_arm_tsc:-kuser}" >&6; } - - # Check whether --enable-arm-quirks was given. -if test "${enable_arm_quirks+set}" = set; then : - enableval=$enable_arm_quirks; case "$enableval" in - sa1100) CONFIG_XENO_ARM_SA1100=y;; - xscale3) CONFIG_XENO_CPU_XSC3=y;; - *)as_fn_error $? "Invalid SOC selected: \"$enableval\"" "$LINENO" 5 ;; - esac -fi - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ARM SA1100 architecture" >&5 -$as_echo_n "checking for ARM SA1100 architecture... " >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${CONFIG_XENO_ARM_SA1100:-no}" >&5 -$as_echo "${CONFIG_XENO_ARM_SA1100:-no}" >&6; } - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ARM Xscale3 architecture" >&5 -$as_echo_n "checking for ARM Xscale3 architecture... " >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${CONFIG_XENO_CPU_XSC3:-no}" >&5 -$as_echo "${CONFIG_XENO_CPU_XSC3:-no}" >&6; } -fi - - if test x"$docdir" = x; then docdir=$datadir/doc/$PACKAGE-$VERSION fi @@ -12678,23 +12601,6 @@ test x$ac_cv_func_fork = xyes && $as_echo "#define CONFIG_MMU 1" >>confdefs.h -test -n "$CONFIG_XENO_ARM_ARCH" && -cat >>confdefs.h <<_ACEOF -#define CONFIG_XENO_ARM_ARCH $CONFIG_XENO_ARM_ARCH -_ACEOF - - -test x$CONFIG_XENO_ARM_SA1100 = xy && -$as_echo "#define CONFIG_XENO_ARM_SA1100 1" >>confdefs.h - -test x$CONFIG_XENO_CPU_XSC3 = xy && -$as_echo "#define CONFIG_XENO_CPU_XSC3 1" >>confdefs.h - -test $CONFIG_XENO_ARM_TSC_TYPE && -cat >>confdefs.h <<_ACEOF -#define CONFIG_XENO_ARM_TSC_TYPE $CONFIG_XENO_ARM_TSC_TYPE -_ACEOF - if test "$enable_shared" = 'yes'; then CONFIG_XENO_SHARED_TRUE= CONFIG_XENO_SHARED_FALSE='#' diff --git a/configure.in b/configure.in index 217fb91..f1524cb 100644 --- a/configure.in +++ b/configure.in @@ -310,69 +310,6 @@ if test $XENO_TARGET_ARCH = x86; then AC_MSG_RESULT(${CONFIG_XENO_X86_SEP:-no}) fi -dnl ARCH support for ARM (default: 4) - -if test $XENO_TARGET_ARCH = arm ; then - - unset CONFIG_XENO_ARM_SA1100 - unset CONFIG_XENO_CPU_XSC3 - CONFIG_XENO_ARM_TSC_TYPE=__XN_TSC_TYPE_KUSER - - AC_MSG_CHECKING(for ARM tsc type) - AC_ARG_ENABLE(arm-tsc, - AS_HELP_STRING([--enable-arm-tsc], [You only need this option - if you get the following message when starting an application: -Xenomai: incompatible feature set -(userland requires "kuser_tsc ...", kernel provides "...", missing="kuser_tsc"). -In that case, this option allows to select the machine for which a -user-space tsc emulation should be generated. Valid machines are at91, -kuser, imx, ixp4xx, omap, orion, pxa, s3c24x, sa1100.]), - [case "$enableval" in - at91*) CONFIG_XENO_ARM_TSC_TYPE=__XN_TSC_TYPE_FREERUNNING_FAST_WRAP;; - - integrator) unset tsc_type;; - - ixp4xx) CONFIG_XENO_ARM_TSC_TYPE=__XN_TSC_TYPE_FREERUNNING;; - - imx*|mx*) CONFIG_XENO_ARM_TSC_TYPE=__XN_TSC_TYPE_FREERUNNING;; - - kuser) CONFIG_XENO_ARM_TSC_TYPE=__XN_TSC_TYPE_KUSER;; - - omap*) CONFIG_XENO_ARM_TSC_TYPE=__XN_TSC_TYPE_FREERUNNING;; - - orion) CONFIG_XENO_ARM_TSC_TYPE=__XN_TSC_TYPE_FREERUNNING_COUNTDOWN;; - - pxa*) CONFIG_XENO_CPU_XSC3=y - CONFIG_XENO_ARM_TSC_TYPE=__XN_TSC_TYPE_FREERUNNING;; - - s3c24*) CONFIG_XENO_ARM_TSC_TYPE=__XN_TSC_TYPE_DECREMENTER;; - - sa1100) CONFIG_XENO_ARM_SA1100=y - CONFIG_XENO_ARM_TSC_TYPE=__XN_TSC_TYPE_FREERUNNING;; - - n | no) unset CONFIG_XENO_ARM_TSC_TYPE;; - - *)AC_MSG_ERROR([Invalid SOC selected: "$enableval"]);; - esac]) - AC_MSG_RESULT(${enable_arm_tsc:-kuser}) - - AC_ARG_ENABLE(arm-quirks, - AS_HELP_STRING([--enable-arm-quirks], [Enable quirks for - specific systems. Currently supported quirks are for sa1100 and - xscale3.]), - [case "$enableval" in - sa1100) CONFIG_XENO_ARM_SA1100=y;; - xscale3) CONFIG_XENO_CPU_XSC3=y;; - *)AC_MSG_ERROR([Invalid SOC selected: "$enableval"]);; - esac]) - - AC_MSG_CHECKING(for ARM SA1100 architecture) - AC_MSG_RESULT(${CONFIG_XENO_ARM_SA1100:-no}) - - AC_MSG_CHECKING(for ARM Xscale3 architecture) - AC_MSG_RESULT(${CONFIG_XENO_CPU_XSC3:-no}) -fi - dnl Documentation package. if test x"$docdir" = x; then @@ -487,11 +424,6 @@ dnl For now, we assume that having fork() means having an MMU. dnl test x$ac_cv_func_fork = xyes && AC_DEFINE(CONFIG_MMU,1,[config]) -test -n "$CONFIG_XENO_ARM_ARCH" && AC_DEFINE_UNQUOTED(CONFIG_XENO_ARM_ARCH,$CONFIG_XENO_ARM_ARCH,[config]) - -test x$CONFIG_XENO_ARM_SA1100 = xy && AC_DEFINE(CONFIG_XENO_ARM_SA1100,1,[config]) -test x$CONFIG_XENO_CPU_XSC3 = xy && AC_DEFINE(CONFIG_XENO_CPU_XSC3,1,[config]) -test $CONFIG_XENO_ARM_TSC_TYPE && AC_DEFINE_UNQUOTED(CONFIG_XENO_ARM_TSC_TYPE,$CONFIG_XENO_ARM_TSC_TYPE,[config]) AM_CONDITIONAL(CONFIG_XENO_SHARED,[test "$enable_shared" = 'yes']) # Default sampling period (ns) used in various tests diff --git a/include/asm-arm/bits/bind.h b/include/asm-arm/bits/bind.h index 78f0f68..44d5149 100644 --- a/include/asm-arm/bits/bind.h +++ b/include/asm-arm/bits/bind.h @@ -19,7 +19,6 @@ __attribute__((weak)) struct __xn_tscinfo __xn_tscinfo = { static inline void xeno_arm_features_check(struct xnfeatinfo *finfo) { -#ifdef CONFIG_XENO_ARM_TSC_TYPE unsigned long phys_addr; unsigned page_size; int err, fd; @@ -42,33 +41,12 @@ static inline void xeno_arm_features_check(struct xnfeatinfo *finfo) page_size = sysconf(_SC_PAGESIZE); switch(__xn_tscinfo.type) { -#if CONFIG_XENO_ARM_TSC_TYPE == __XN_TSC_TYPE_KUSER case __XN_TSC_TYPE_FREERUNNING: case __XN_TSC_TYPE_FREERUNNING_COUNTDOWN: case __XN_TSC_TYPE_FREERUNNING_FAST_WRAP: case __XN_TSC_TYPE_DECREMENTER: goto domap; -#elif CONFIG_XENO_ARM_TSC_TYPE == __XN_TSC_TYPE_FREERUNNING \ - || CONFIG_XENO_ARM_TSC_TYPE == __XN_TSC_TYPE_FREERUNNING_COUNTDOWN \ - || CONFIG_XENO_ARM_TSC_TYPE == __XN_TSC_TYPE_FREERUNNING_FAST_WRAP - case __XN_TSC_TYPE_FREERUNNING: - case __XN_TSC_TYPE_FREERUNNING_COUNTDOWN: -#if CONFIG_XENO_ARM_TSC_TYPE == __XN_TSC_TYPE_FREERUNNING_FAST_WRAP - if (__xn_tscinfo.mask >= ((1 << 28) - 1)) { - fprintf(stderr, "Hardware tsc is not a fast wrapping" - " one, select the correct platform, or fix\n" - "configure.in\n"); - exit(EXIT_FAILURE); - } -#endif /* __XN_TSC_TYPE_FREERUNNING_FAST_WRAP */ - goto domap; - -#elif CONFIG_XENO_ARM_TSC_TYPE == __XN_TSC_TYPE_DECREMENTER - case __XN_TSC_TYPE_DECREMENTER: - goto domap; - -#endif /* CONFIG_XENO_ARM_TSC_TYPE == __XN_TSC_TYPE_DECREMENTER */ case __XN_TSC_TYPE_NONE: error: fprintf(stderr, "Xenomai: Your board/configuration does not" @@ -100,7 +78,6 @@ static inline void xeno_arm_features_check(struct xnfeatinfo *finfo) perror("Xenomai init: close(/dev/mem)"); exit(EXIT_FAILURE); } -#endif /* CONFIG_XENO_ARM_TSC_TYPE */ } #define xeno_arch_features_check(finfo) xeno_arm_features_check(finfo) diff --git a/include/asm-arm/bits/shadow.h b/include/asm-arm/bits/shadow.h index 68a1e3a..0749ebf 100644 --- a/include/asm-arm/bits/shadow.h +++ b/include/asm-arm/bits/shadow.h @@ -58,78 +58,6 @@ int xnarch_local_syscall(unsigned long a1, unsigned long a2, int error = 0; switch (a1) { - case XENOMAI_SYSARCH_ATOMIC_ADD_RETURN:{ - int i; - atomic_t *v, val; - int ret; - unsigned long flags; - - local_irq_save_hw(flags); - __xn_get_user(i, (int *)a2); - __xn_get_user(v, (atomic_t **)a3); - if (__xn_copy_from_user(&val, v, sizeof(atomic_t))) { - error = -EFAULT; - goto unlock; - } - ret = atomic_add_return(i, &val); - if (__xn_copy_to_user(v, &val, sizeof(atomic_t))) { - error = -EFAULT; - goto unlock; - } - __xn_put_user(ret, (int *)a4); - unlock: - local_irq_restore_hw(flags); - break; - } - case XENOMAI_SYSARCH_ATOMIC_SET_MASK:{ - unsigned long mask; - unsigned long *addr, val; - unsigned long flags; - - local_irq_save_hw(flags); - __xn_get_user(mask, (unsigned long *)a2); - __xn_get_user(addr, (unsigned long **)a3); - __xn_get_user(val, (unsigned long *)addr); - val |= mask; - __xn_put_user(val, (unsigned long *)addr); - local_irq_restore_hw(flags); - break; - } - case XENOMAI_SYSARCH_ATOMIC_CLEAR_MASK:{ - unsigned long mask; - unsigned long *addr, val; - unsigned long flags; - - local_irq_save_hw(flags); - __xn_get_user(mask, (unsigned long *)a2); - __xn_get_user(addr, (unsigned long **)a3); - __xn_get_user(val, (unsigned long *)addr); - val &= ~mask; - __xn_put_user(val, (unsigned long *)addr); - local_irq_restore_hw(flags); - break; - } - case XENOMAI_SYSARCH_XCHG:{ - void *ptr; - unsigned long x; - unsigned int size; - unsigned long ret = 0; - unsigned long flags; - - local_irq_save_hw(flags); - __xn_get_user(ptr, (unsigned char **)a2); - __xn_get_user(x, (unsigned long *)a3); - __xn_get_user(size, (unsigned int *)a4); - if (size == 4) { - unsigned long val; - __xn_get_user(val, (unsigned long *)ptr); - ret = xnarch_atomic_xchg(&val, x); - } else - error = -EINVAL; - __xn_put_user(ret, (unsigned long *)a5); - local_irq_restore_hw(flags); - break; - } /* * If I-pipe supports user-space tsc emulation, add a syscall for * retrieving tsc infos. diff --git a/include/asm-arm/features.h b/include/asm-arm/features.h index d801d5e..c062420 100644 --- a/include/asm-arm/features.h +++ b/include/asm-arm/features.h @@ -39,8 +39,8 @@ #define CONFIG_XENO_ARM_EABI 1 #endif -#ifdef CONFIG_IPIPE_ARM_KUSER_TSC -#define CONFIG_XENO_ARM_KUSER_TSC 1 +#ifndef CONFIG_IPIPE_ARM_KUSER_TSC +#error "I-pipe patch with kuser tsc required" #endif #else /* !__KERNEL__ */ @@ -51,6 +51,14 @@ #define CONFIG_XENO_ARM_EABI 1 #endif +#if defined(__ARM_ARCH_2__) +#define __LINUX_ARM_ARCH__ 2 +#endif /* armv2 */ + +#if defined(__ARM_ARCH_3__) +#define __LINUX_ARM_ARCH__ 3 +#endif /* armv3 */ + #if defined(__ARM_ARCH_4__) || defined(__ARM_ARCH_4T__) #define __LINUX_ARM_ARCH__ 4 #endif /* armv4 */ @@ -72,51 +80,16 @@ #error "Could not find current ARM architecture" #endif -#if CONFIG_XENO_ARM_TSC_TYPE == __XN_TSC_TYPE_KUSER -#define CONFIG_XENO_ARM_KUSER_TSC 1 -#endif - #endif /* !__KERNEL__ */ #include <asm-generic/xenomai/features.h> -#define __xn_feat_arm_atomic_xchg 0x00000001 -#define __xn_feat_arm_atomic_atomic 0x00000002 -#define __xn_feat_arm_eabi 0x00000004 -#define __xn_feat_arm_tsc 0x00000008 - /* The ABI revision level we use on this arch. */ #define XENOMAI_ABI_REV 4UL -#if __LINUX_ARM_ARCH__ >= 6 -/* ARMv6 has both atomic xchg and atomic_inc/dec etc. */ -#define __xn_feat_arm_atomic_xchg_mask __xn_feat_arm_atomic_xchg -#define __xn_feat_arm_atomic_atomic_mask __xn_feat_arm_atomic_atomic -#else -/* ARM < v6 has only atomic xchg, except on SA1000 where it is buggy */ -#ifdef CONFIG_XENO_ARM_SA1100 -#define __xn_feat_arm_atomic_xchg_mask 0 -#else -#define __xn_feat_arm_atomic_xchg_mask __xn_feat_arm_atomic_xchg -#endif -#define __xn_feat_arm_atomic_atomic_mask 0 -#endif -#define __xn_feat_arm_eabi_mask __xn_feat_arm_eabi - -#ifdef CONFIG_XENO_ARM_KUSER_TSC -#define __xn_feat_arm_tsc_mask __xn_feat_arm_tsc -#else /* !CONFIG_XENO_ARM_KUSER_TSC */ -#define __xn_feat_arm_tsc_mask 0 -#endif /* !CONFIG_XENO_ARM_KUSER_TSC */ - -#define XENOMAI_FEAT_DEP ( __xn_feat_generic_mask | \ - __xn_feat_arm_atomic_xchg_mask | \ - __xn_feat_arm_atomic_atomic_mask | \ - __xn_feat_arm_eabi_mask | \ - __xn_feat_arm_tsc_mask) +#define XENOMAI_FEAT_DEP (__xn_feat_generic_mask) -#define XENOMAI_FEAT_MAN \ - (__xn_feat_generic_man_mask | __xn_feat_arm_tsc) +#define XENOMAI_FEAT_MAN (__xn_feat_generic_man_mask) static inline int check_abi_revision(unsigned long abirev) { @@ -126,14 +99,6 @@ static inline int check_abi_revision(unsigned long abirev) static inline const char *get_feature_label (unsigned feature) { switch (feature) { - case __xn_feat_arm_atomic_xchg: - return "sa1100"; - case __xn_feat_arm_atomic_atomic: - return "v6"; - case __xn_feat_arm_eabi: - return "eabi"; - case __xn_feat_arm_tsc: - return "kuser_tsc"; default: return get_generic_feature_label(feature); } diff --git a/include/asm-arm/syscall.h b/include/asm-arm/syscall.h index 0b1c05a..bc7d538 100644 --- a/include/asm-arm/syscall.h +++ b/include/asm-arm/syscall.h @@ -241,93 +241,15 @@ struct __xn_tscinfo { #ifndef __KERNEL__ extern struct __xn_tscinfo __xn_tscinfo; -#ifdef CONFIG_XENO_ARM_TSC_TYPE static inline unsigned long long __xn_rdtsc(void) { -#if CONFIG_XENO_ARM_TSC_TYPE == __XN_TSC_TYPE_KUSER typedef unsigned long long rdtsc_t(volatile unsigned *vaddr); rdtsc_t *const kuser_tsc_get = (rdtsc_t *)(0xffff1004 - ((*(unsigned *)(0xffff0ffc) + 3) << 5)); return kuser_tsc_get(__xn_tscinfo.counter); - -#elif CONFIG_XENO_ARM_TSC_TYPE == __XN_TSC_TYPE_FREERUNNING - volatile unsigned long long *const tscp = __xn_tscinfo.tsc; - volatile unsigned *const counterp = __xn_tscinfo.counter; - const unsigned mask = __xn_tscinfo.mask; - register unsigned long long result; - unsigned counter; - - __asm__ ("ldmia %1, %M0\n": "=r"(result): "r"(tscp), "m"(*tscp)); - __asm__ __volatile__ ("" : /* */ : /* */ : "memory"); - counter = *counterp; - - if ((counter & mask) < ((unsigned) result & mask)) - result += mask + 1ULL; - return (result & ~((unsigned long long) mask)) | (counter & mask); - -#elif CONFIG_XENO_ARM_TSC_TYPE == __XN_TSC_TYPE_FREERUNNING_COUNTDOWN - volatile unsigned long long *const tscp = __xn_tscinfo.tsc; - volatile unsigned *const counterp = __xn_tscinfo.counter; - const unsigned mask = __xn_tscinfo.mask; - register unsigned long long result; - unsigned counter; - - __asm__ ("ldmia %1, %M0\n": "=r"(result): "r"(tscp), "m"(*tscp)); - __asm__ __volatile__ ("" : /* */ : /* */ : "memory"); - counter = mask - *counterp; - - if ((counter & mask) > ((unsigned) result & mask)) - result += mask + 1ULL; - return (result & ~((unsigned long long) mask)) | (counter & mask); - -#elif CONFIG_XENO_ARM_TSC_TYPE == __XN_TSC_TYPE_FREERUNNING_FAST_WRAP - volatile unsigned long long *const tscp = __xn_tscinfo.tsc; - volatile unsigned *const counterp = __xn_tscinfo.counter; - const unsigned mask = __xn_tscinfo.mask; - register unsigned long long after, before; - unsigned counter; - - __asm__ ("ldmia %1, %M0\n": "=r"(after): "r"(tscp), "m"(*tscp)); - do { - before = after; - counter = *counterp; - __asm__ __volatile__ ("" : /* */ : /* */ : "memory"); - __asm__ ("ldmia %1, %M0\n" : "=r"(after): "r"(tscp), "m"(*tscp)); - } while (((unsigned) after) != ((unsigned) before)); - if ((counter & mask) < ((unsigned) before & mask)) - before += mask + 1; - return (before & ~((unsigned long long) mask)) | (counter & mask); - -#elif CONFIG_XENO_ARM_TSC_TYPE == __XN_TSC_TYPE_DECREMENTER - volatile unsigned long long *const tscp = __xn_tscinfo.tsc; - volatile unsigned *const counterp = __xn_tscinfo.counter; - volatile unsigned *const last_cntp = __xn_tscinfo.last_cnt; - const unsigned mask = __xn_tscinfo.mask; - register unsigned long long after, before; - unsigned counter, last_cnt; - - __asm__ ("ldmia %1, %M0\n": "=r"(after): "r"(tscp), "m"(*tscp)); - do { - before = after; - counter = *counterp; - last_cnt = *last_cntp; - /* compiler barrier. */ - __asm__ __volatile__ ("" : /* */ : /* */ : "memory"); - __asm__ ("ldmia %1, %M0\n": "=r"(after): "r"(tscp), "m"(*tscp)); - } while (after != before); - - counter &= mask; - last_cnt &= mask; - if (counter > last_cnt) - before += mask + 1ULL; - return (before + last_cnt - counter); - -#endif /* CONFIG_XENO_ARM_TSC_TYPE == __XN_TSC_TYPE_DECREMENTER */ } -#endif /* CONFIG_XENO_ARM_TSC_TYPE */ - #endif /* !__KERNEL__ */ #endif /* !_XENO_ASM_ARM_SYSCALL_H */ diff --git a/lib/include/xeno_config.h.in b/lib/include/xeno_config.h.in index d9d6d50..5e5c6d5 100644 --- a/lib/include/xeno_config.h.in +++ b/lib/include/xeno_config.h.in @@ -7,15 +7,6 @@ #undef CONFIG_SMP /* config */ -#undef CONFIG_XENO_ARM_ARCH - -/* config */ -#undef CONFIG_XENO_ARM_SA1100 - -/* config */ -#undef CONFIG_XENO_ARM_TSC_TYPE - -/* config */ #undef CONFIG_XENO_ASYNC_CANCEL /* Build system alias */ @@ -28,9 +19,6 @@ #undef CONFIG_XENO_COMPILER /* config */ -#undef CONFIG_XENO_CPU_XSC3 - -/* config */ #undef CONFIG_XENO_DEFAULT_PERIOD /* Host system alias */ _______________________________________________ Xenomai-git mailing list Xenomai-git@gna.org https://mail.gna.org/listinfo/xenomai-git