mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-23 01:59:42 +07:00
75fea300d7
The GNU assembler has implemented the "unified syntax" parsing since 2005. This "unified" syntax is required when the kernel is built in Thumb2 mode. However the "unified" syntax is a mixed bag of features, including not requiring a `#' prefix with immediate operands. This leads to situations where some code builds just fine in Thumb2 mode and fails to build in ARM mode if that prefix is missing. This behavior discrepancy makes build tests less valuable, forcing both ARM and Thumb2 builds for proper coverage. Let's "fix" this issue by always using the "unified" syntax for both ARM and Thumb2 mode. Given that the documented minimum binutils version that properly builds the kernel is version 2.20 released in 2010, we can assume that any toolchain capable of building the latest kernel is also "unified syntax" capable. Whith this, a bunch of macros used to mask some differences between both syntaxes can be removed, with the side effect of making LTO easier. Suggested-by: Robin Murphy <robin.murphy@arm.com> Signed-off-by: Nicolas Pitre <nico@linaro.org> Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
70 lines
1.6 KiB
C
70 lines
1.6 KiB
C
/*
|
|
* include/asm-arm/unified.h - Unified Assembler Syntax helper macros
|
|
*
|
|
* Copyright (C) 2008 ARM Limited
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License version 2 as
|
|
* published by the Free Software Foundation.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program; if not, write to the Free Software
|
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
*/
|
|
|
|
#ifndef __ASM_UNIFIED_H
|
|
#define __ASM_UNIFIED_H
|
|
|
|
#if defined(__ASSEMBLY__)
|
|
.syntax unified
|
|
#else
|
|
__asm__(".syntax unified");
|
|
#endif
|
|
|
|
#ifdef CONFIG_CPU_V7M
|
|
#define AR_CLASS(x...)
|
|
#define M_CLASS(x...) x
|
|
#else
|
|
#define AR_CLASS(x...) x
|
|
#define M_CLASS(x...)
|
|
#endif
|
|
|
|
#ifdef CONFIG_THUMB2_KERNEL
|
|
|
|
#if __GNUC__ < 4
|
|
#error Thumb-2 kernel requires gcc >= 4
|
|
#endif
|
|
|
|
/* The CPSR bit describing the instruction set (Thumb) */
|
|
#define PSR_ISETSTATE PSR_T_BIT
|
|
|
|
#define ARM(x...)
|
|
#define THUMB(x...) x
|
|
#ifdef __ASSEMBLY__
|
|
#define W(instr) instr.w
|
|
#else
|
|
#define WASM(instr) #instr ".w"
|
|
#endif
|
|
|
|
#else /* !CONFIG_THUMB2_KERNEL */
|
|
|
|
/* The CPSR bit describing the instruction set (ARM) */
|
|
#define PSR_ISETSTATE 0
|
|
|
|
#define ARM(x...) x
|
|
#define THUMB(x...)
|
|
#ifdef __ASSEMBLY__
|
|
#define W(instr) instr
|
|
#else
|
|
#define WASM(instr) #instr
|
|
#endif
|
|
|
|
#endif /* CONFIG_THUMB2_KERNEL */
|
|
|
|
#endif /* !__ASM_UNIFIED_H */
|