summaryrefslogtreecommitdiffstats
path: root/src/lib
diff options
context:
space:
mode:
authorJeremy Compostella <jeremy.compostella@intel.com>2022-11-30 19:26:01 -0700
committerMartin L Roth <gaumless@gmail.com>2022-12-17 20:48:06 +0000
commitfa83887e48f196cfa303ce6de32acf1dfec7cad9 (patch)
tree1eb1a776d3e3e02c182db936dc9e6ad38529bf9b /src/lib
parente6b96dceabb9cc4e79653c7992b8c16ac3d234ce (diff)
downloadcoreboot-fa83887e48f196cfa303ce6de32acf1dfec7cad9.tar.gz
coreboot-fa83887e48f196cfa303ce6de32acf1dfec7cad9.tar.bz2
coreboot-fa83887e48f196cfa303ce6de32acf1dfec7cad9.zip
Add option to use Ada code in romstage
If selected, libgnat is linked into romstage. In addition, a call to romstage_adainit() is added to support Ada program data initialization. BUG=b:252792591 BRANCH=firmware-brya-14505.B TEST=Ada code compiles for romstage and loads successfully Change-Id: I74f0460f6b14fde2b4bd6391e1782b2e5b217707 Signed-off-by: Jeremy Compostella <jeremy.compostella@intel.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/70274 Reviewed-by: Tarun Tuli <taruntuli@google.com> Reviewed-by: Nick Vaccaro <nvaccaro@google.com> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/Kconfig5
-rw-r--r--src/lib/Makefile.inc1
-rw-r--r--src/lib/gnat/Makefile.inc3
3 files changed, 9 insertions, 0 deletions
diff --git a/src/lib/Kconfig b/src/lib/Kconfig
index ae96fc61eeb9..d108962bac1e 100644
--- a/src/lib/Kconfig
+++ b/src/lib/Kconfig
@@ -5,6 +5,11 @@ config MISSING_BOARD_RESET
implementation. This activates a stub that logs the missing
board reset and halts execution.
+config ROMSTAGE_ADA
+ bool
+ help
+ Selected by features that use Ada code in romstage.
+
config RAMSTAGE_ADA
bool
help
diff --git a/src/lib/Makefile.inc b/src/lib/Makefile.inc
index 1c7bc22c1ef6..3e5b151b1391 100644
--- a/src/lib/Makefile.inc
+++ b/src/lib/Makefile.inc
@@ -339,6 +339,7 @@ $(objcbfs)/%.debug.rmod: $(objcbfs)/%.debug | $(RMODTOOL)
$(obj)/%.elf.rmod: $(obj)/%.elf | $(RMODTOOL)
$(RMODTOOL) -i $< -o $@
+romstage-$(CONFIG_ROMSTAGE_ADA) += cb.ads
ramstage-$(CONFIG_RAMSTAGE_ADA) += cb.ads
ifeq ($(CONFIG_RAMSTAGE_LIBHWBASE),y)
diff --git a/src/lib/gnat/Makefile.inc b/src/lib/gnat/Makefile.inc
index 065ba7140426..150a715067ac 100644
--- a/src/lib/gnat/Makefile.inc
+++ b/src/lib/gnat/Makefile.inc
@@ -51,6 +51,9 @@ $(foreach arch,$(standard-archs), \
$(foreach arch,$(standard-archs), \
$(eval $(call libgnat-template,$(arch))))
+ifeq ($(CONFIG_ROMSTAGE_ADA),y)
+romstage-libs += $(obj)/libgnat-$(ARCH-romstage-y)/libgnat.a
+endif
ifeq ($(CONFIG_RAMSTAGE_ADA),y)
ramstage-libs += $(obj)/libgnat-$(ARCH-ramstage-y)/libgnat.a
endif