/usr/include/xenomai/asm-arm/features.h is in libxenomai-dev 2.6.4+dfsg-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 | /*
* Copyright (C) 2005 Philippe Gerum <rpm@xenomai.org>.
*
* ARM port
* Copyright (C) 2005 Stelian Pop
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
*/
#ifndef _XENO_ASM_ARM_FEATURES_H
#define _XENO_ASM_ARM_FEATURES_H
#define __XN_TSC_TYPE_NONE 0
#define __XN_TSC_TYPE_KUSER 1
#define __XN_TSC_TYPE_FREERUNNING 2
#define __XN_TSC_TYPE_DECREMENTER 3
#define __XN_TSC_TYPE_FREERUNNING_FAST_WRAP 4
#define __XN_TSC_TYPE_FREERUNNING_COUNTDOWN 5
#ifdef __KERNEL__
#if defined(CONFIG_CPU_SA1100) || defined(CONFIG_CPU_SA110)
#define CONFIG_XENO_ARM_SA1000 1
#endif
#ifdef CONFIG_AEABI
#define CONFIG_XENO_ARM_EABI 1
#endif
#ifdef CONFIG_IPIPE_ARM_KUSER_TSC
#define CONFIG_XENO_ARM_KUSER_TSC 1
#endif
#define XNARCH_HAVE_NONPRIV_TSC 1
#else /* !__KERNEL__ */
#include <xeno_config.h>
#ifdef __ARM_EABI__
#define CONFIG_XENO_ARM_EABI 1
#endif
#if defined(__ARM_ARCH_4__) || defined(__ARM_ARCH_4T__)
#define __LINUX_ARM_ARCH__ 4
#endif /* armv4 */
#if defined(__ARM_ARCH_5__) || defined(__ARM_ARCH_5T__) || \
defined(__ARM_ARCH_5E__) || defined(__ARM_ARCH_5TE__) || \
defined(__ARM_ARCH_5TEJ__)
#define __LINUX_ARM_ARCH__ 5
#endif /* armv5 */
#if defined(__ARM_ARCH_6__) || defined(__ARM_ARCH_6K__) || \
defined(__ARM_ARCH_6Z__) || defined(__ARM_ARCH_6ZK__)
#define __LINUX_ARM_ARCH__ 6
#endif /* armv6 */
#if defined(__ARM_ARCH_7A__)
#define __LINUX_ARM_ARCH__ 7
#endif /* armv7 */
#ifndef __LINUX_ARM_ARCH__
#error "Could not find current ARM architecture"
#endif
#define CONFIG_XENO_FASTSYNCH 1
#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_MAN \
(__xn_feat_generic_man_mask | __xn_feat_arm_tsc)
static inline int check_abi_revision(unsigned long abirev)
{
return abirev == XENOMAI_ABI_REV;
}
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);
}
}
#define XNARCH_HAVE_LLMULSHFT 1
#define XNARCH_HAVE_NODIV_LLIMD 1
#endif /* !_XENO_ASM_ARM_FEATURES_H */
|