xref: /netbsd-src/sys/arch/arm/include/cdefs.h (revision e092cf89bfc3d2076ed83f40e35532adc8d978a1)
1*e092cf89Srin /*	$NetBSD: cdefs.h,v 1.19 2020/12/01 02:43:14 rin Exp $	*/
229de7da7Sbjh21 
306340da9Smatt #ifndef	_ARM_CDEFS_H_
406340da9Smatt #define	_ARM_CDEFS_H_
529de7da7Sbjh21 
6a7a76504Schristos #ifndef __lint__
708e0bc25Smatt #if (__GNUC__ == 4 && __GNUC_MINOR__ < 1) || __GNUC__ < 4
8578ed603Smatt #error GCC 4.1 or compatible required.
9578ed603Smatt #endif
10a7a76504Schristos #endif
11578ed603Smatt 
12058bd287Sskrll 
1322966387Sskrll #if defined (__ARM_ARCH_8A__) || defined (__ARM_ARCH_8A) || \
1422966387Sskrll     __ARM_ARCH == 8
15058bd287Sskrll 	/* __ARM_ARCH_8A__ is a typo */
16058bd287Sskrll #define _ARM_ARCH_8
17a3ca4f6fSmatt #endif
18a3ca4f6fSmatt 
19a3ca4f6fSmatt #if defined (_ARM_ARCH_8) || defined (__ARM_ARCH_7__) || \
20a3ca4f6fSmatt     defined (__ARM_ARCH_7A__) || defined (__ARM_ARCH_7R__) || \
21a3ca4f6fSmatt     defined (__ARM_ARCH_7M__) || defined (__ARM_ARCH_7EM__)
22a3ca4f6fSmatt 	/* 7R, 7M, 7EM are for non MMU arms */
23d641e763Smatt #define _ARM_ARCH_7
24d641e763Smatt #endif
25d641e763Smatt 
2606340da9Smatt #if defined (_ARM_ARCH_7) || defined (__ARM_ARCH_6T2__)
2706340da9Smatt #define _ARM_ARCH_T2		/* Thumb2 */
2806340da9Smatt #endif
2906340da9Smatt 
3006340da9Smatt #if defined (_ARM_ARCH_T2) || defined (__ARM_ARCH_6__) || \
313dbc6e4cSjoerg     defined (__ARM_ARCH_6J__) || \
323dbc6e4cSjoerg     defined (__ARM_ARCH_6K__) || defined (__ARM_ARCH_6KZ__) || \
33d641e763Smatt     defined (__ARM_ARCH_6Z__) || defined (__ARM_ARCH_6ZK__) || \
3406340da9Smatt     defined (__ARM_ARCH_6ZM__)
35cf57b757Smatt #define _ARM_ARCH_6
36cf57b757Smatt #endif
37cf57b757Smatt 
38954df097Smatt #if defined (_ARM_ARCH_6) || defined (__ARM_ARCH_5T__) || \
39954df097Smatt     defined (__ARM_ARCH_5TE__) || defined (__ARM_ARCH_5TEJ__)
40954df097Smatt #define _ARM_ARCH_5T
41954df097Smatt #endif
42954df097Smatt 
43954df097Smatt #if defined (_ARM_ARCH_6) || defined (_ARM_ARCH_5T) || defined (__ARM_ARCH_5__)
44cf57b757Smatt #define _ARM_ARCH_5
45cf57b757Smatt #endif
46cf57b757Smatt 
47cf57b757Smatt #if defined (_ARM_ARCH_5) || defined (__ARM_ARCH_4T__)
48cf57b757Smatt #define _ARM_ARCH_4T
49cf57b757Smatt #endif
5029de7da7Sbjh21 
5106340da9Smatt #if defined (_ARM_ARCH_T2) || \
5206340da9Smatt     (!defined (__thumb__) && \
5306340da9Smatt      (defined (_ARM_ARCH_6) || defined (__ARM_ARCH_5TE__) || \
5406340da9Smatt       defined (__ARM_ARCH_5TEJ__)))
5572be8acdSmatt #define	_ARM_ARCH_DWORD_OK
5672be8acdSmatt #endif
5772be8acdSmatt 
58*e092cf89Srin #if defined (__ARMEB__) && defined (_ARM_ARCH_6)
59*e092cf89Srin #define	_ARM_ARCH_BE8
60*e092cf89Srin #endif
61*e092cf89Srin 
62eec17c6eSmatt #if defined(__ARM_PCS_AAPCS64)
63eec17c6eSmatt #define __ALIGNBYTES		(sizeof(__int128_t) - 1)
64eec17c6eSmatt #elif defined(__ARM_EABI__)
65eec17c6eSmatt #define __ALIGNBYTES		(sizeof(long long) - 1)
6624fbba2dSmatt #else
67e8bec33bSjoerg #define __ALIGNBYTES		(sizeof(int) - 1)
6824fbba2dSmatt #endif
69e8bec33bSjoerg 
7006340da9Smatt #endif /* !_ARM_CDEFS_H_ */
71