1 /* 2 * Track misc arch-specific features that aren't config options 3 */ 4 5 #ifndef _BITS_UCLIBC_ARCH_FEATURES_H 6 #define _BITS_UCLIBC_ARCH_FEATURES_H 7 8 /* instruction used when calling abort() to kill yourself */ 9 #define __UCLIBC_ABORT_INSTRUCTION__ "bl abort" 10 11 /* can your target use syscall6() for mmap ? */ 12 #undef __UCLIBC_MMAP_HAS_6_ARGS__ 13 14 /* does your target align 64bit values in register pairs ? (32bit arches only) */ 15 #ifdef __ARM_EABI__ 16 #define __UCLIBC_SYSCALL_ALIGN_64BIT__ 17 #else 18 #undef __UCLIBC_SYSCALL_ALIGN_64BIT__ 19 #endif 20 21 /* does your target have a broken create_module() ? */ 22 #define __UCLIBC_BROKEN_CREATE_MODULE__ 23 24 /* does your target have to worry about older [gs]etrlimit() ? */ 25 #undef __UCLIBC_HANDLE_OLDER_RLIMIT__ 26 27 /* does your target have an asm .set ? */ 28 #define __UCLIBC_HAVE_ASM_SET_DIRECTIVE__ 29 30 /* define if target supports .weak */ 31 #define __UCLIBC_HAVE_ASM_WEAK_DIRECTIVE__ 32 33 /* define if target supports .weakext */ 34 #undef __UCLIBC_HAVE_ASM_WEAKEXT_DIRECTIVE__ 35 36 /* define if target supports CFI pseudo ops */ 37 #undef __UCLIBC_HAVE_ASM_CFI_DIRECTIVES__ 38 39 /* define if target supports IEEE signed zero floats */ 40 #define __UCLIBC_HAVE_SIGNED_ZERO__ 41 42 /* only weird assemblers generally need this */ 43 #undef __UCLIBC_ASM_LINE_SEP__ 44 45 46 /* The __ARM_ARCH define is provided by gcc 4.8. Construct it otherwise. */ 47 #ifndef __ARM_ARCH 48 # ifdef __ARM_ARCH_2__ 49 # define __ARM_ARCH 2 50 # elif defined (__ARM_ARCH_3__) || defined (__ARM_ARCH_3M__) 51 # define __ARM_ARCH 3 52 # elif defined (__ARM_ARCH_4__) || defined (__ARM_ARCH_4T__) 53 # define __ARM_ARCH 4 54 # elif defined (__ARM_ARCH_5__) || defined (__ARM_ARCH_5E__) \ 55 || defined(__ARM_ARCH_5T__) || defined(__ARM_ARCH_5TE__) \ 56 || defined(__ARM_ARCH_5TEJ__) 57 # define __ARM_ARCH 5 58 # elif defined (__ARM_ARCH_6__) || defined(__ARM_ARCH_6J__) \ 59 || defined (__ARM_ARCH_6Z__) || defined(__ARM_ARCH_6ZK__) \ 60 || defined (__ARM_ARCH_6K__) || defined(__ARM_ARCH_6T2__) 61 # define __ARM_ARCH 6 62 # elif defined (__ARM_ARCH_7__) || defined(__ARM_ARCH_7A__) \ 63 || defined(__ARM_ARCH_7R__) || defined(__ARM_ARCH_7M__) \ 64 || defined(__ARM_ARCH_7EM__) 65 # define __ARM_ARCH 7 66 # else 67 # error unknown arm architecture 68 # endif 69 #endif 70 71 #ifdef __GNUC__ 72 # define __need_uClibc_config_h 73 # include <bits/uClibc_config.h> 74 # undef __need_uClibc_config_h 75 # if defined __CONFIG_ARM_EABI__ && !defined __ARM_EABI__ 76 # error Your toolchain does not support EABI 77 # elif !defined __CONFIG_ARM_EABI__ && defined __ARM_EABI__ 78 # error Your toolchain was built for EABI, but you have chosen OABI 79 # endif 80 #endif 81 82 #endif /* _BITS_UCLIBC_ARCH_FEATURES_H */ 83