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