xref: /rk3399_rockchip-uboot/arch/arm/include/asm/unified.h (revision dc557e9a1fe00ca9d884bd88feef5bebf23fede4)
1*c0db6f8dSMarek Vasut /*
2*c0db6f8dSMarek Vasut  * include/asm-arm/unified.h - Unified Assembler Syntax helper macros
3*c0db6f8dSMarek Vasut  *
4*c0db6f8dSMarek Vasut  * Copyright (C) 2008 ARM Limited
5*c0db6f8dSMarek Vasut  *
6*c0db6f8dSMarek Vasut  * SPDX-License-Identifier:	GPL-2.0
7*c0db6f8dSMarek Vasut  */
8*c0db6f8dSMarek Vasut 
9*c0db6f8dSMarek Vasut #ifndef __ASM_UNIFIED_H
10*c0db6f8dSMarek Vasut #define __ASM_UNIFIED_H
11*c0db6f8dSMarek Vasut 
12*c0db6f8dSMarek Vasut #if defined(__ASSEMBLY__) && defined(CONFIG_ARM_ASM_UNIFIED)
13*c0db6f8dSMarek Vasut 	.syntax unified
14*c0db6f8dSMarek Vasut #endif
15*c0db6f8dSMarek Vasut 
16*c0db6f8dSMarek Vasut #ifdef CONFIG_CPU_V7M
17*c0db6f8dSMarek Vasut #define AR_CLASS(x...)
18*c0db6f8dSMarek Vasut #define M_CLASS(x...)	x
19*c0db6f8dSMarek Vasut #else
20*c0db6f8dSMarek Vasut #define AR_CLASS(x...)	x
21*c0db6f8dSMarek Vasut #define M_CLASS(x...)
22*c0db6f8dSMarek Vasut #endif
23*c0db6f8dSMarek Vasut 
24*c0db6f8dSMarek Vasut #ifdef CONFIG_THUMB2_KERNEL
25*c0db6f8dSMarek Vasut 
26*c0db6f8dSMarek Vasut #if __GNUC__ < 4
27*c0db6f8dSMarek Vasut #error Thumb-2 kernel requires gcc >= 4
28*c0db6f8dSMarek Vasut #endif
29*c0db6f8dSMarek Vasut 
30*c0db6f8dSMarek Vasut /* The CPSR bit describing the instruction set (Thumb) */
31*c0db6f8dSMarek Vasut #define PSR_ISETSTATE	PSR_T_BIT
32*c0db6f8dSMarek Vasut 
33*c0db6f8dSMarek Vasut #define ARM(x...)
34*c0db6f8dSMarek Vasut #define THUMB(x...)	x
35*c0db6f8dSMarek Vasut #ifdef __ASSEMBLY__
36*c0db6f8dSMarek Vasut #define W(instr)	instr.w
37*c0db6f8dSMarek Vasut #else
38*c0db6f8dSMarek Vasut #define WASM(instr)	#instr ".w"
39*c0db6f8dSMarek Vasut #endif
40*c0db6f8dSMarek Vasut 
41*c0db6f8dSMarek Vasut #else	/* !CONFIG_THUMB2_KERNEL */
42*c0db6f8dSMarek Vasut 
43*c0db6f8dSMarek Vasut /* The CPSR bit describing the instruction set (ARM) */
44*c0db6f8dSMarek Vasut #define PSR_ISETSTATE	0
45*c0db6f8dSMarek Vasut 
46*c0db6f8dSMarek Vasut #define ARM(x...)	x
47*c0db6f8dSMarek Vasut #define THUMB(x...)
48*c0db6f8dSMarek Vasut #ifdef __ASSEMBLY__
49*c0db6f8dSMarek Vasut #define W(instr)	instr
50*c0db6f8dSMarek Vasut #else
51*c0db6f8dSMarek Vasut #define WASM(instr)	#instr
52*c0db6f8dSMarek Vasut #endif
53*c0db6f8dSMarek Vasut 
54*c0db6f8dSMarek Vasut #endif	/* CONFIG_THUMB2_KERNEL */
55*c0db6f8dSMarek Vasut 
56*c0db6f8dSMarek Vasut #ifndef CONFIG_ARM_ASM_UNIFIED
57*c0db6f8dSMarek Vasut 
58*c0db6f8dSMarek Vasut /*
59*c0db6f8dSMarek Vasut  * If the unified assembly syntax isn't used (in ARM mode), these
60*c0db6f8dSMarek Vasut  * macros expand to an empty string
61*c0db6f8dSMarek Vasut  */
62*c0db6f8dSMarek Vasut #ifdef __ASSEMBLY__
63*c0db6f8dSMarek Vasut 	.macro	it, cond
64*c0db6f8dSMarek Vasut 	.endm
65*c0db6f8dSMarek Vasut 	.macro	itt, cond
66*c0db6f8dSMarek Vasut 	.endm
67*c0db6f8dSMarek Vasut 	.macro	ite, cond
68*c0db6f8dSMarek Vasut 	.endm
69*c0db6f8dSMarek Vasut 	.macro	ittt, cond
70*c0db6f8dSMarek Vasut 	.endm
71*c0db6f8dSMarek Vasut 	.macro	itte, cond
72*c0db6f8dSMarek Vasut 	.endm
73*c0db6f8dSMarek Vasut 	.macro	itet, cond
74*c0db6f8dSMarek Vasut 	.endm
75*c0db6f8dSMarek Vasut 	.macro	itee, cond
76*c0db6f8dSMarek Vasut 	.endm
77*c0db6f8dSMarek Vasut 	.macro	itttt, cond
78*c0db6f8dSMarek Vasut 	.endm
79*c0db6f8dSMarek Vasut 	.macro	ittte, cond
80*c0db6f8dSMarek Vasut 	.endm
81*c0db6f8dSMarek Vasut 	.macro	ittet, cond
82*c0db6f8dSMarek Vasut 	.endm
83*c0db6f8dSMarek Vasut 	.macro	ittee, cond
84*c0db6f8dSMarek Vasut 	.endm
85*c0db6f8dSMarek Vasut 	.macro	itett, cond
86*c0db6f8dSMarek Vasut 	.endm
87*c0db6f8dSMarek Vasut 	.macro	itete, cond
88*c0db6f8dSMarek Vasut 	.endm
89*c0db6f8dSMarek Vasut 	.macro	iteet, cond
90*c0db6f8dSMarek Vasut 	.endm
91*c0db6f8dSMarek Vasut 	.macro	iteee, cond
92*c0db6f8dSMarek Vasut 	.endm
93*c0db6f8dSMarek Vasut #else	/* !__ASSEMBLY__ */
94*c0db6f8dSMarek Vasut __asm__(
95*c0db6f8dSMarek Vasut "	.macro	it, cond\n"
96*c0db6f8dSMarek Vasut "	.endm\n"
97*c0db6f8dSMarek Vasut "	.macro	itt, cond\n"
98*c0db6f8dSMarek Vasut "	.endm\n"
99*c0db6f8dSMarek Vasut "	.macro	ite, cond\n"
100*c0db6f8dSMarek Vasut "	.endm\n"
101*c0db6f8dSMarek Vasut "	.macro	ittt, cond\n"
102*c0db6f8dSMarek Vasut "	.endm\n"
103*c0db6f8dSMarek Vasut "	.macro	itte, cond\n"
104*c0db6f8dSMarek Vasut "	.endm\n"
105*c0db6f8dSMarek Vasut "	.macro	itet, cond\n"
106*c0db6f8dSMarek Vasut "	.endm\n"
107*c0db6f8dSMarek Vasut "	.macro	itee, cond\n"
108*c0db6f8dSMarek Vasut "	.endm\n"
109*c0db6f8dSMarek Vasut "	.macro	itttt, cond\n"
110*c0db6f8dSMarek Vasut "	.endm\n"
111*c0db6f8dSMarek Vasut "	.macro	ittte, cond\n"
112*c0db6f8dSMarek Vasut "	.endm\n"
113*c0db6f8dSMarek Vasut "	.macro	ittet, cond\n"
114*c0db6f8dSMarek Vasut "	.endm\n"
115*c0db6f8dSMarek Vasut "	.macro	ittee, cond\n"
116*c0db6f8dSMarek Vasut "	.endm\n"
117*c0db6f8dSMarek Vasut "	.macro	itett, cond\n"
118*c0db6f8dSMarek Vasut "	.endm\n"
119*c0db6f8dSMarek Vasut "	.macro	itete, cond\n"
120*c0db6f8dSMarek Vasut "	.endm\n"
121*c0db6f8dSMarek Vasut "	.macro	iteet, cond\n"
122*c0db6f8dSMarek Vasut "	.endm\n"
123*c0db6f8dSMarek Vasut "	.macro	iteee, cond\n"
124*c0db6f8dSMarek Vasut "	.endm\n");
125*c0db6f8dSMarek Vasut #endif	/* __ASSEMBLY__ */
126*c0db6f8dSMarek Vasut 
127*c0db6f8dSMarek Vasut #endif	/* CONFIG_ARM_ASM_UNIFIED */
128*c0db6f8dSMarek Vasut 
129*c0db6f8dSMarek Vasut #endif	/* !__ASM_UNIFIED_H */
130