1 /* 2 * Copyright (c) 2008-2012 Travis Geiselbrecht 3 * 4 * Use of this source code is governed by a MIT-style 5 * license that can be found in the LICENSE file or at 6 * https://opensource.org/licenses/MIT 7 */ 8 #ifndef __ARM_CORES_H 9 #define __ARM_CORES_H 10 11 /* 12 * make the gcc built in define a little easier to deal with 13 * to decide what core it is generating code for 14 * 15 * ARM_ARCH_LEVEL gets assigned a numeric value of the general family 16 * 17 * ARM_ARCH_* gets defined for each feature recursively 18 */ 19 20 /* echo | gcc -E -dM - to dump builtin defines */ 21 22 #if defined(__ARM_ARCH_7EM__) 23 #define ARM_ARCH_7EM 1 24 #endif 25 #if defined(__ARM_ARCH_7M__) || defined(ARM_ARCH_7EM) 26 #define ARM_ARCH_7M 1 27 #endif 28 #if defined(__ARM_ARCH_7R__) 29 #define ARM_ARCH_7R 1 30 #endif 31 #if defined(__ARM_ARCH_7A__) || defined(ARM_ARCH_7R) 32 #define ARM_ARCH_7A 1 33 #endif 34 #if defined(__ARM_ARCH_7__) || defined(ARM_ARCH_7A) || defined(ARM_ARCH_7M) 35 #define ARM_ARCH_7 1 36 #ifndef ARM_ARCH_LEVEL 37 #define ARM_ARCH_LEVEL 7 38 #endif 39 #endif 40 41 #if defined(__ARM_ARCH_6M__) 42 #define ARM_ARCH_6M 1 43 #endif 44 #if defined(__ARM_ARCH_6T2__) || defined(ARM_ARCH_7) 45 #define ARM_ARCH_6T2 1 46 #endif 47 #if defined(__ARM_ARCH_6ZK__) 48 #define ARM_ARCH_6ZK 1 49 #endif 50 #if defined(__ARM_ARCH_6Z__) || defined(ARM_ARCH_6ZK) 51 #define ARM_ARCH_6Z 1 52 #endif 53 #if defined(__ARM_ARCH_6K__) || defined(ARM_ARCH_6ZK) || defined(ARM_ARCH_7) 54 #define ARM_ARCH_6K 1 55 #endif 56 #if defined(__ARM_ARCH_6J__) 57 #define ARM_ARCH_6J 1 58 #endif 59 #if defined(__ARM_ARCH_6__) || defined(ARM_ARCH_6J) || defined(ARM_ARCH_6K) || defined(ARM_ARCH_6Z) || defined(ARM_ARCH_6T2) || defined(ARM_ARCH_6M) 60 #define ARM_ARCH_6 1 61 #ifndef ARM_ARCH_LEVEL 62 #define ARM_ARCH_LEVEL 6 63 #endif 64 #endif 65 66 #if defined(__ARM_ARCH_5TEJ__) 67 #define ARM_ARCH_5TEJ 1 68 #endif 69 #if defined(__ARM_ARCH_5TE__) || defined(ARM_ARCH_5TEJ) || defined(ARM_ARCH_6) 70 #define ARM_ARCH_5TE 1 71 #endif 72 #if defined(__ARM_ARCH_5E__) || defined(ARM_ARCH_5TE) 73 #define ARM_ARCH_5E 1 74 #endif 75 #if defined(__ARM_ARCH_5T__) || defined(ARM_ARCH_5TE) 76 #define ARM_ARCH_5T 1 77 #endif 78 #if defined(__ARM_ARCH_5__) || defined(ARM_ARCH_5E) || defined(ARM_ARCH_5T) 79 #define ARM_ARCH_5 1 80 #ifndef ARM_ARCH_LEVEL 81 #define ARM_ARCH_LEVEL 5 82 #endif 83 #endif 84 85 #if defined(__ARM_ARCH_4T__) || defined(ARM_ARCH_5T) 86 #define ARM_ARCH_4T 1 87 #endif 88 #if defined(__ARM_ARCH_4__) || defined(ARM_ARCH_4T) || defined(ARM_ARCH_5) 89 #define ARM_ARCH_4 1 90 #ifndef ARM_ARCH_LEVEL 91 #define ARM_ARCH_LEVEL 4 92 #endif 93 #endif 94 95 #if 0 96 /* test */ 97 #if ARM_ARCH_LEVEL >= 7 98 #warning ARM_ARCH_LEVEL >= 7 99 #endif 100 #if ARM_ARCH_LEVEL >= 6 101 #warning ARM_ARCH_LEVEL >= 6 102 #endif 103 #if ARM_ARCH_LEVEL >= 5 104 #warning ARM_ARCH_LEVEL >= 5 105 #endif 106 #if ARM_ARCH_LEVEL >= 4 107 #warning ARM_ARCH_LEVEL >= 4 108 #endif 109 #endif 110 111 #endif 112 113