Module: xenomai-forge
Branch: master
Commit: 545aaa620c201f785dc1da0e4f80dcce24f7e721
URL:    
http://git.xenomai.org/?p=xenomai-forge.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

Reply via email to