From d3634c108d63d07ce004a66e3abb05e8da57d65b Mon Sep 17 00:00:00 2001 From: Julius Werner Date: Fri, 13 Nov 2015 13:28:41 -0800 Subject: rules.h: Add ENV_ macros to detect current architecture MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This patch expands the existing ENV_ macros in with a set of ENV_ macros which can be used to detect which architecture the current compilation unit is built for. These are more consistent than compiler-defined macros (like '#ifdef __arm__') and will make it easier to write small, architecture-dependent differences in common code (where we currently often use IS_ENABLED(CONFIG_ARCH_...), which is technically incorrect in a world where every stage can run on a different architecture, and merely kinda happened to work out for now). Also remove a vestigal from ARM64 which was no longer used, and genericise ARM subarchitecture Makefiles a little to make things like __COREBOOT_ARM_ARCH__ available from all file types (including .ld). BUG=None TEST=Compiled Falco, Blaze, Jerry and Smaug. Change-Id: Id51aeb290b5c215c653e42a51919d0838e28621f Signed-off-by: Julius Werner Reviewed-on: http://review.coreboot.org/12433 Tested-by: build bot (Jenkins) Reviewed-by: Aaron Durbin Reviewed-by: Kyösti Mälkki Tested-by: Raptor Engineering Automated Test Stand --- src/include/rules.h | 100 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 100 insertions(+) (limited to 'src/include/rules.h') diff --git a/src/include/rules.h b/src/include/rules.h index 315a65e5d1..debb200a06 100644 --- a/src/include/rules.h +++ b/src/include/rules.h @@ -94,4 +94,104 @@ #define __SIMPLE_DEVICE__ #endif +/* Define helpers about the current architecture, based on toolchain.inc. */ + +#if defined(__ARCH_arm__) +#define ENV_ARM 1 +#define ENV_ARM64 0 +#if __COREBOOT_ARM_ARCH__ == 4 +#define ENV_ARMV4 1 +#define ENV_ARMV7 0 +#elif __COREBOOT_ARM_ARCH__ == 7 +#define ENV_ARMV4 0 +#define ENV_ARMV7 1 +#else +#define ENV_ARMV4 0 +#define ENV_ARMV7 0 +#endif +#define ENV_ARMV8 0 +#define ENV_MIPS 0 +#define ENV_RISCV 0 +#define ENV_X86 0 +#define ENV_X86_32 0 +#define ENV_X86_64 0 + +#elif defined(__ARCH_arm64__) +#define ENV_ARM 0 +#define ENV_ARM64 1 +#define ENV_ARMV4 0 +#define ENV_ARMV7 0 +#if __COREBOOT_ARM_ARCH__ == 8 +#define ENV_ARMV8 1 +#else +#define ENV_ARMV8 0 +#endif +#define ENV_MIPS 0 +#define ENV_RISCV 0 +#define ENV_X86 0 +#define ENV_X86_32 0 +#define ENV_X86_64 0 + +#elif defined(__ARCH_mips__) +#define ENV_ARM 0 +#define ENV_ARM64 0 +#define ENV_ARMV4 0 +#define ENV_ARMV7 0 +#define ENV_ARMV8 0 +#define ENV_MIPS 1 +#define ENV_RISCV 0 +#define ENV_X86 0 +#define ENV_X86_32 0 +#define ENV_X86_64 0 + +#elif defined(__ARCH_riscv__) +#define ENV_ARM 0 +#define ENV_ARM64 0 +#define ENV_ARMV4 0 +#define ENV_ARMV7 0 +#define ENV_ARMV8 0 +#define ENV_MIPS 0 +#define ENV_RISCV 1 +#define ENV_X86 0 +#define ENV_X86_32 0 +#define ENV_X86_64 0 + +#elif defined(__ARCH_x86_32__) +#define ENV_ARM 0 +#define ENV_ARM64 0 +#define ENV_ARMV4 0 +#define ENV_ARMV7 0 +#define ENV_ARMV8 0 +#define ENV_MIPS 0 +#define ENV_RISCV 0 +#define ENV_X86 1 +#define ENV_X86_32 1 +#define ENV_X86_64 0 + +#elif defined(__ARCH_x86_64__) +#define ENV_ARM 0 +#define ENV_ARM64 0 +#define ENV_ARMV4 0 +#define ENV_ARMV7 0 +#define ENV_ARMV8 0 +#define ENV_MIPS 0 +#define ENV_RISCV 0 +#define ENV_X86 1 +#define ENV_X86_32 0 +#define ENV_X86_64 1 + +#else +#define ENV_ARM 0 +#define ENV_ARM64 0 +#define ENV_ARMV4 0 +#define ENV_ARMV7 0 +#define ENV_ARMV8 0 +#define ENV_MIPS 0 +#define ENV_RISCV 0 +#define ENV_X86 0 +#define ENV_X86_32 0 +#define ENV_X86_64 0 + +#endif + #endif /* _RULES_H */ -- cgit v1.2.3