xref: /openbmc/linux/arch/arm/include/asm/unified.h (revision a44e4f3a)
1 /* SPDX-License-Identifier: GPL-2.0-only */
2 /*
3  * include/asm-arm/unified.h - Unified Assembler Syntax helper macros
4  *
5  * Copyright (C) 2008 ARM Limited
6  */
7 
8 #ifndef __ASM_UNIFIED_H
9 #define __ASM_UNIFIED_H
10 
11 #if defined(__ASSEMBLY__)
12 	.syntax unified
13 #else
14 __asm__(".syntax unified");
15 #endif
16 
17 #ifdef CONFIG_CPU_V7M
18 #define AR_CLASS(x...)
19 #define M_CLASS(x...)	x
20 #else
21 #define AR_CLASS(x...)	x
22 #define M_CLASS(x...)
23 #endif
24 
25 #ifdef CONFIG_THUMB2_KERNEL
26 
27 #if __GNUC__ < 4
28 #error Thumb-2 kernel requires gcc >= 4
29 #endif
30 
31 /* The CPSR bit describing the instruction set (Thumb) */
32 #define PSR_ISETSTATE	PSR_T_BIT
33 
34 #define ARM(x...)
35 #define THUMB(x...)	x
36 #ifdef __ASSEMBLY__
37 #define W(instr)	instr.w
38 #else
39 #define WASM(instr)	#instr ".w"
40 #endif
41 
42 #else	/* !CONFIG_THUMB2_KERNEL */
43 
44 /* The CPSR bit describing the instruction set (ARM) */
45 #define PSR_ISETSTATE	0
46 
47 #define ARM(x...)	x
48 #define THUMB(x...)
49 #ifdef __ASSEMBLY__
50 #define W(instr)	instr
51 #else
52 #define WASM(instr)	#instr
53 #endif
54 
55 #endif	/* CONFIG_THUMB2_KERNEL */
56 
57 #endif	/* !__ASM_UNIFIED_H */
58