blob: 9e9b837417eb5b302d685303e5e2ce7a785b8d2d [file] [log] [blame]
Martin Rothf6ca89c2023-08-04 12:06:21 -06001## SPDX-License-Identifier: GPL-2.0-only
2
Felix Held39789eb2021-10-23 00:45:40 +02003subdirs-y += lapic
Felix Held2d4986c2021-10-22 22:07:43 +02004subdirs-y += mtrr
Aaron Durbin7f5e7342018-04-17 10:55:14 -06005subdirs-y += pae
Arthur Heymans6419cd32020-10-14 11:35:51 +02006subdirs-$(CONFIG_HAVE_SMI_HANDLER) += smm
Angel Pons44985ae752021-09-07 11:39:26 +02007subdirs-$(CONFIG_UDELAY_TSC) += tsc
Arthur Heymans34f5cd92022-04-21 12:00:21 +02008# Use ARCH_BOOTBLOCK_X86_64 as a proxy for knowing if 64bit is going to be used
9subdirs-$(CONFIG_ARCH_BOOTBLOCK_X86_64) += 64bit
Arthur Heymans3134a812019-11-25 12:20:01 +010010subdirs-y += cache
Patrick Rudolph7a359492020-11-30 15:56:59 +010011
Aaron Durbine0785c02013-10-21 12:15:29 -050012subdirs-$(CONFIG_PARALLEL_MP) += name
Arthur Heymans71bc9f02022-05-24 08:46:09 +020013
14ifeq ($(CONFIG_HAVE_SMI_HANDLER),y)
15$(obj)/ramstage/cpu/x86/smm_start32_offset.h: $(dir)/smm_start32_offset.h.template $(obj)/smmstub/smmstub.elf
16 cp $< $@.temp
17 sed -i 's/##START32_OFFSET##/0x'$$($(NM_smmstub) -an $(obj)/smmstub/smmstub.elf | grep smm_trampolin | cut -d' ' -f1)'/' $@.temp
18 mv $@.temp $@
19else
20$(obj)/ramstage/cpu/x86/smm_start32_offset.h: $(dir)/smm_start32_offset.h.template
21 cp $< $@.temp
22 sed -i 's/##START32_OFFSET##/0x0/' $@.temp
23 mv $@.temp $@
24endif
25
26$(call src-to-obj,ramstage,$(dir)/mp_init.c): $(obj)/ramstage/cpu/x86/smm_start32_offset.h
Aaron Durbine0785c02013-10-21 12:15:29 -050027ramstage-$(CONFIG_PARALLEL_MP) += mp_init.c
Arthur Heymans16fa3392021-12-06 12:21:33 +010028
Aaron Durbind87c7bc2016-04-30 15:14:18 -050029ramstage-y += backup_default_smm.c
Arthur Heymans16fa3392021-12-06 12:21:33 +010030ramstage-y += smi_trigger.c
31smm-y += smi_trigger.c
Aaron Durbine0785c02013-10-21 12:15:29 -050032
Kyösti Mälkkif5c0d612019-08-14 13:02:41 +030033subdirs-$(CONFIG_CPU_INTEL_COMMON_SMM) += ../intel/smm
34
Kyösti Mälkki47d58e52020-11-22 00:55:31 +020035bootblock-y += entry32.S
Kyösti Mälkki03083132020-11-22 00:34:13 +020036bootblock-y += entry16.S
Kyösti Mälkki404c0c42020-11-22 00:47:04 +020037bootblock-y += reset16.S
Kyösti Mälkki03083132020-11-22 00:34:13 +020038
Nico Huber98fc4262016-01-23 01:24:33 +010039additional-dirs += $(obj)/cpu/x86
40
Aaron Durbine0785c02013-10-21 12:15:29 -050041SIPI_ELF=$(obj)/cpu/x86/sipi_vector.elf
Aaron Durbin3eb8eb72014-03-10 16:13:58 -050042SIPI_RMOD=$(SIPI_ELF).rmod
Aaron Durbine0785c02013-10-21 12:15:29 -050043SIPI_BIN=$(SIPI_ELF:.elf=)
44SIPI_DOTO=$(SIPI_ELF:.elf=.o)
45
Subrata Banikb5962a92019-06-08 12:29:02 +053046ifeq ($(CONFIG_HAVE_RAMSTAGE),y)
47TARGET_STAGE=ramstage
48else ifeq ($(CONFIG_RAMPAYLOAD),y)
49TARGET_STAGE=postcar
Stefan Reinauer181b7732015-03-15 19:23:50 +010050else
Subrata Banikb5962a92019-06-08 12:29:02 +053051$(error Halting the build due to unknown TARGET_STAGE select)
Stefan Reinauer181b7732015-03-15 19:23:50 +010052endif
Aaron Durbine0785c02013-10-21 12:15:29 -050053
Subrata Banikb5962a92019-06-08 12:29:02 +053054ifeq ($(CONFIG_PARALLEL_MP),y)
55$(TARGET_STAGE)-srcs += $(SIPI_BIN).manual
56endif
57rmodules_$(ARCH-$(TARGET_STAGE)-y)-$(CONFIG_PARALLEL_MP) += sipi_vector.S
58
59$(SIPI_DOTO): $(call src-to-obj,rmodules_$(ARCH-$(TARGET_STAGE)-y),src/cpu/x86/sipi_vector.S)
Arthur Heymansb49e2102019-11-25 11:29:33 +010060 $(LD_rmodules_$(ARCH-$(TARGET_STAGE)-y)) -nostdlib -r -o $@ $^
Subrata Banikb5962a92019-06-08 12:29:02 +053061
62$(eval $(call rmodule_link,$(SIPI_ELF), $(SIPI_DOTO), 0,$(ARCH-$(TARGET_STAGE)-y)))
63
Aaron Durbin3eb8eb72014-03-10 16:13:58 -050064$(SIPI_BIN): $(SIPI_RMOD)
Subrata Banikb5962a92019-06-08 12:29:02 +053065 $(OBJCOPY_$(TARGET_STAGE)) -O binary $< $@
Aaron Durbine0785c02013-10-21 12:15:29 -050066
Subrata Banikb5962a92019-06-08 12:29:02 +053067$(call src-to-obj,$(TARGET_STAGE),$(SIPI_BIN).manual): $(SIPI_BIN)
Aaron Durbine0785c02013-10-21 12:15:29 -050068 @printf " OBJCOPY $(subst $(obj)/,,$(@))\n"
Subrata Banikb5962a92019-06-08 12:29:02 +053069 cd $(dir $<); $(OBJCOPY_rmodules_$(ARCH-$(TARGET_STAGE)-y)) -I binary $(notdir $<) $(target-objcopy) $(abspath $@)
Arthur Heymans177e1352022-11-04 13:03:23 +010070
71ramstage-y += topology.c