Tue Nov 3 08:34:17 2020 UTC ()
The ARM C Language Extenstion document defines __ARCH_ARM as the integer
macro indicating the current ARM instruction set.  Let's use it.

PR/55778: evbarm64 GENERIC64 kernel fails to build with clang

XXX Handle the fact that for an ARM architecture ARMvX.Y then,
XXX __ARM_ARCH= X * 100 + Y. E.g. for ARMv8.1 __ARM_ARCH = 801.


(skrll)
diff -r1.17 -r1.18 src/sys/arch/arm/include/cdefs.h

cvs diff -r1.17 -r1.18 src/sys/arch/arm/include/cdefs.h (switch to unified diff)

--- src/sys/arch/arm/include/cdefs.h 2020/10/11 16:22:02 1.17
+++ src/sys/arch/arm/include/cdefs.h 2020/11/03 08:34:17 1.18
@@ -1,65 +1,66 @@ @@ -1,65 +1,66 @@
1/* $NetBSD: cdefs.h,v 1.17 2020/10/11 16:22:02 skrll Exp $ */ 1/* $NetBSD: cdefs.h,v 1.18 2020/11/03 08:34:17 skrll Exp $ */
2 2
3#ifndef _ARM_CDEFS_H_ 3#ifndef _ARM_CDEFS_H_
4#define _ARM_CDEFS_H_ 4#define _ARM_CDEFS_H_
5 5
6#ifndef __lint__ 6#ifndef __lint__
7#if (__GNUC__ == 4 && __GNUC_MINOR__ < 1) || __GNUC__ < 4 7#if (__GNUC__ == 4 && __GNUC_MINOR__ < 1) || __GNUC__ < 4
8#error GCC 4.1 or compatible required. 8#error GCC 4.1 or compatible required.
9#endif 9#endif
10#endif 10#endif
11 11
12 12
13#if defined (__ARM_ARCH_8A__) || defined (__ARM_ARCH_8A) 13#if defined (__ARM_ARCH_8A__) || defined (__ARM_ARCH_8A) || \
 14 __ARM_ARCH == 8
14 /* __ARM_ARCH_8A__ is a typo */ 15 /* __ARM_ARCH_8A__ is a typo */
15#define _ARM_ARCH_8 16#define _ARM_ARCH_8
16#endif 17#endif
17 18
18#if defined (_ARM_ARCH_8) || defined (__ARM_ARCH_7__) || \ 19#if defined (_ARM_ARCH_8) || defined (__ARM_ARCH_7__) || \
19 defined (__ARM_ARCH_7A__) || defined (__ARM_ARCH_7R__) || \ 20 defined (__ARM_ARCH_7A__) || defined (__ARM_ARCH_7R__) || \
20 defined (__ARM_ARCH_7M__) || defined (__ARM_ARCH_7EM__) 21 defined (__ARM_ARCH_7M__) || defined (__ARM_ARCH_7EM__)
21 /* 7R, 7M, 7EM are for non MMU arms */ 22 /* 7R, 7M, 7EM are for non MMU arms */
22#define _ARM_ARCH_7 23#define _ARM_ARCH_7
23#endif 24#endif
24 25
25#if defined (_ARM_ARCH_7) || defined (__ARM_ARCH_6T2__) 26#if defined (_ARM_ARCH_7) || defined (__ARM_ARCH_6T2__)
26#define _ARM_ARCH_T2 /* Thumb2 */ 27#define _ARM_ARCH_T2 /* Thumb2 */
27#endif 28#endif
28 29
29#if defined (_ARM_ARCH_T2) || defined (__ARM_ARCH_6__) || \ 30#if defined (_ARM_ARCH_T2) || defined (__ARM_ARCH_6__) || \
30 defined (__ARM_ARCH_6J__) || \ 31 defined (__ARM_ARCH_6J__) || \
31 defined (__ARM_ARCH_6K__) || defined (__ARM_ARCH_6KZ__) || \ 32 defined (__ARM_ARCH_6K__) || defined (__ARM_ARCH_6KZ__) || \
32 defined (__ARM_ARCH_6Z__) || defined (__ARM_ARCH_6ZK__) || \ 33 defined (__ARM_ARCH_6Z__) || defined (__ARM_ARCH_6ZK__) || \
33 defined (__ARM_ARCH_6ZM__) 34 defined (__ARM_ARCH_6ZM__)
34#define _ARM_ARCH_6 35#define _ARM_ARCH_6
35#endif 36#endif
36 37
37#if defined (_ARM_ARCH_6) || defined (__ARM_ARCH_5T__) || \ 38#if defined (_ARM_ARCH_6) || defined (__ARM_ARCH_5T__) || \
38 defined (__ARM_ARCH_5TE__) || defined (__ARM_ARCH_5TEJ__) 39 defined (__ARM_ARCH_5TE__) || defined (__ARM_ARCH_5TEJ__)
39#define _ARM_ARCH_5T 40#define _ARM_ARCH_5T
40#endif 41#endif
41 42
42#if defined (_ARM_ARCH_6) || defined (_ARM_ARCH_5T) || defined (__ARM_ARCH_5__) 43#if defined (_ARM_ARCH_6) || defined (_ARM_ARCH_5T) || defined (__ARM_ARCH_5__)
43#define _ARM_ARCH_5 44#define _ARM_ARCH_5
44#endif 45#endif
45 46
46#if defined (_ARM_ARCH_5) || defined (__ARM_ARCH_4T__) 47#if defined (_ARM_ARCH_5) || defined (__ARM_ARCH_4T__)
47#define _ARM_ARCH_4T 48#define _ARM_ARCH_4T
48#endif 49#endif
49 50
50#if defined (_ARM_ARCH_T2) || \ 51#if defined (_ARM_ARCH_T2) || \
51 (!defined (__thumb__) && \ 52 (!defined (__thumb__) && \
52 (defined (_ARM_ARCH_6) || defined (__ARM_ARCH_5TE__) || \ 53 (defined (_ARM_ARCH_6) || defined (__ARM_ARCH_5TE__) || \
53 defined (__ARM_ARCH_5TEJ__))) 54 defined (__ARM_ARCH_5TEJ__)))
54#define _ARM_ARCH_DWORD_OK 55#define _ARM_ARCH_DWORD_OK
55#endif 56#endif
56 57
57#if defined(__ARM_PCS_AAPCS64) 58#if defined(__ARM_PCS_AAPCS64)
58#define __ALIGNBYTES (sizeof(__int128_t) - 1) 59#define __ALIGNBYTES (sizeof(__int128_t) - 1)
59#elif defined(__ARM_EABI__) 60#elif defined(__ARM_EABI__)
60#define __ALIGNBYTES (sizeof(long long) - 1) 61#define __ALIGNBYTES (sizeof(long long) - 1)
61#else 62#else
62#define __ALIGNBYTES (sizeof(int) - 1) 63#define __ALIGNBYTES (sizeof(int) - 1)
63#endif 64#endif
64 65
65#endif /* !_ARM_CDEFS_H_ */ 66#endif /* !_ARM_CDEFS_H_ */