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