1 /* 2 * Copyright (c) 2008-2012 Travis Geiselbrecht 3 * 4 * Permission is hereby granted, free of charge, to any person obtaining 5 * a copy of this software and associated documentation files 6 * (the "Software"), to deal in the Software without restriction, 7 * including without limitation the rights to use, copy, modify, merge, 8 * publish, distribute, sublicense, and/or sell copies of the Software, 9 * and to permit persons to whom the Software is furnished to do so, 10 * subject to the following conditions: 11 * 12 * The above copyright notice and this permission notice shall be 13 * included in all copies or substantial portions of the Software. 14 * 15 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 16 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 17 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 18 * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 19 * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 20 * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 21 * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 22 */ 23 #ifndef __ARM_CORES_H 24 #define __ARM_CORES_H 25 26 /* 27 * make the gcc built in define a little easier to deal with 28 * to decide what core it is generating code for 29 * 30 * ARM_ARCH_LEVEL gets assigned a numeric value of the general family 31 * 32 * ARM_ARCH_* gets defined for each feature recursively 33 */ 34 35 /* echo | gcc -E -dM - to dump builtin defines */ 36 37 #if defined(__ARM_ARCH_8A__) 38 #ifndef ARM_ARCH_LEVEL 39 #define ARM_ARCH_LEVEL 8 40 #endif 41 #endif 42 43 #if defined(__ARM_ARCH_7EM__) 44 #define ARM_ARCH_7EM 1 45 #endif 46 #if defined(__ARM_ARCH_7M__) || defined(ARM_ARCH_7EM) 47 #define ARM_ARCH_7M 1 48 #endif 49 #if defined(__ARM_ARCH_7R__) 50 #define ARM_ARCH_7R 1 51 #endif 52 #if defined(__ARM_ARCH_7A__) || defined(ARM_ARCH_7R) 53 #define ARM_ARCH_7A 1 54 #endif 55 #if defined(__ARM_ARCH_7__) || defined(ARM_ARCH_7A) || defined(ARM_ARCH_7M) 56 #define ARM_ARCH_7 1 57 #ifndef ARM_ARCH_LEVEL 58 #define ARM_ARCH_LEVEL 7 59 #endif 60 #endif 61 62 #if defined(__ARM_ARCH_6M__) 63 #define ARM_ARCH_6M 1 64 #endif 65 #if defined(__ARM_ARCH_6T2__) || defined(ARM_ARCH_7) 66 #define ARM_ARCH_6T2 1 67 #endif 68 #if defined(__ARM_ARCH_6ZK__) 69 #define ARM_ARCH_6ZK 1 70 #endif 71 #if defined(__ARM_ARCH_6Z__) || defined(ARM_ARCH_6ZK) 72 #define ARM_ARCH_6Z 1 73 #endif 74 #if defined(__ARM_ARCH_6K__) || defined(ARM_ARCH_6ZK) || defined(ARM_ARCH_7) 75 #define ARM_ARCH_6K 1 76 #endif 77 #if defined(__ARM_ARCH_6J__) 78 #define ARM_ARCH_6J 1 79 #endif 80 #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) 81 #define ARM_ARCH_6 1 82 #ifndef ARM_ARCH_LEVEL 83 #define ARM_ARCH_LEVEL 6 84 #endif 85 #endif 86 87 #if defined(__ARM_ARCH_5TEJ__) 88 #define ARM_ARCH_5TEJ 1 89 #endif 90 #if defined(__ARM_ARCH_5TE__) || defined(ARM_ARCH_5TEJ) || defined(ARM_ARCH_6) 91 #define ARM_ARCH_5TE 1 92 #endif 93 #if defined(__ARM_ARCH_5E__) || defined(ARM_ARCH_5TE) 94 #define ARM_ARCH_5E 1 95 #endif 96 #if defined(__ARM_ARCH_5T__) || defined(ARM_ARCH_5TE) 97 #define ARM_ARCH_5T 1 98 #endif 99 #if defined(__ARM_ARCH_5__) || defined(ARM_ARCH_5E) || defined(ARM_ARCH_5T) 100 #define ARM_ARCH_5 1 101 #ifndef ARM_ARCH_LEVEL 102 #define ARM_ARCH_LEVEL 5 103 #endif 104 #endif 105 106 #if defined(__ARM_ARCH_4T__) || defined(ARM_ARCH_5T) 107 #define ARM_ARCH_4T 1 108 #endif 109 #if defined(__ARM_ARCH_4__) || defined(ARM_ARCH_4T) || defined(ARM_ARCH_5) 110 #define ARM_ARCH_4 1 111 #ifndef ARM_ARCH_LEVEL 112 #define ARM_ARCH_LEVEL 4 113 #endif 114 #endif 115 116 #if 0 117 /* test */ 118 #if ARM_ARCH_LEVEL >= 7 119 #warning ARM_ARCH_LEVEL >= 7 120 #endif 121 #if ARM_ARCH_LEVEL >= 6 122 #warning ARM_ARCH_LEVEL >= 6 123 #endif 124 #if ARM_ARCH_LEVEL >= 5 125 #warning ARM_ARCH_LEVEL >= 5 126 #endif 127 #if ARM_ARCH_LEVEL >= 4 128 #warning ARM_ARCH_LEVEL >= 4 129 #endif 130 #endif 131 132 #endif 133 134