rules.h: Add ENV_ macros to detect current architecture

This patch expands the existing ENV_<stage> macros in <rules.h> with a
set of ENV_<arch> 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 <arch/rules.h> 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 <jwerner@chromium.org>
Reviewed-on: http://review.coreboot.org/12433
Tested-by: build bot (Jenkins)
Reviewed-by: Aaron Durbin <adurbin@chromium.org>
Reviewed-by: Kyösti Mälkki <kyosti.malkki@gmail.com>
Tested-by: Raptor Engineering Automated Test Stand <noreply@raptorengineeringinc.com>
This commit is contained in:
Julius Werner
2015-11-13 13:28:41 -08:00
parent 0dc6a1e898
commit d3634c108d
6 changed files with 134 additions and 81 deletions

View File

@@ -19,8 +19,6 @@ subdirs-y += lib/
armv8_flags = -march=armv8-a -I$(src)/arch/arm64/include/armv8/ -D__COREBOOT_ARM_ARCH__=8
armv8_asm_flags = $(armv8_flags)
################################################################################
## bootblock
################################################################################
@@ -34,8 +32,7 @@ bootblock-y += cache_helpers.S
bootblock-y += cpu.S
bootblock-$(CONFIG_BOOTBLOCK_CONSOLE) += exception.c
bootblock-c-ccopts += $(armv8_flags)
bootblock-S-ccopts += $(armv8_asm_flags)
bootblock-generic-ccopts += $(armv8_flags)
# Required to access unaligned timestamp struct members before MMU is active
# (TODO: Maybe use explicit unaligned accesses in timestamp code instead, or
@@ -54,10 +51,8 @@ verstage-y += cpu.S
verstage-y += cache_helpers.S
verstage-y += exception.c
libverstage-c-ccopts += $(armv8_flags)
libverstage-S-ccopts += $(armv8_asm_flags)
verstage-c-ccopts += $(armv8_flags)
verstage-S-ccopts += $(armv8_asm_flags)
libverstage-generic-ccopts += $(armv8_flags)
verstage-generic-ccopts += $(armv8_flags)
endif
@@ -71,11 +66,9 @@ romstage-y += cache_helpers.S
romstage-y += cpu.S
romstage-y += exception.c
romstage-c-ccopts += $(armv8_flags)
romstage-S-ccopts += $(armv8_asm_flags)
romstage-generic-ccopts += $(armv8_flags)
rmodules_arm64-c-ccopts += $(armv8_flags)
rmodules_arm64-S-ccopts += $(armv8_asm_flags)
rmodules_arm64-generic-ccopts += $(armv8_flags)
endif
@@ -90,10 +83,8 @@ ramstage-y += cpu.S
ramstage-y += exception.c
ramstage-y += mmu.c
ramstage-c-ccopts += $(armv8_flags)
ramstage-S-ccopts += $(armv8_asm_flags)
ramstage-generic-ccopts += $(armv8_flags)
rmodules_arm64-c-ccopts += $(armv8_flags)
rmodules_arm64-S-ccopts += $(armv8_asm_flags)
rmodules_arm64-generic-ccopts += $(armv8_flags)
endif

View File

@@ -1,30 +0,0 @@
/*
* This file is part of the coreboot project.
*
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; version 2 of the License.
*
* 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.
*/
#ifndef _ARCH_RULES_H
#define _ARCH_RULES_H
/* For romstage and ramstage always build with simple device model, ie.
* PCI, PNP and CPU functions operate without use of devicetree.
*
* For ramstage individual source file may define __SIMPLE_DEVICE__
* before including any header files to force that particular source
* be built with simple device model.
*/
#if defined(__PRE_RAM__)
#define __SIMPLE_DEVICE__
#endif
#endif /* _ARCH_RULES_H */