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