1 ## SPDX-License-Identifier: GPL-2.0-only
3 ###############################################################################
5 ###############################################################################
7 ifeq ($(CONFIG_ARCH_RAMSTAGE_ARM
),y
)
8 check-ramstage-overlap-regions
+= postram_cbfs_cache stack ttb
11 ifeq ($(CONFIG_ARCH_ARM
),y
)
13 subdirs-y
+= armv4
/ armv7
/
15 stages_c
= $(src
)/arch
/arm
/stages.c
16 stages_o
= $(obj
)/arch
/arm
/stages.o
18 $(stages_o
): $(stages_c
) $(obj
)/config.h
19 @printf
" CC $(subst $(obj)/,,$(@))\n"
20 $(CC_arm
) -I.
$(CPPFLAGS_arm
) -c
-o
$@
$< -marm
22 # Clang LTO does not like the aliasing in here.
23 TARGETS
:= decompressor bootblock verstage romstage ramstage rmodules_arm
24 $(foreach target
,$(TARGETS
),$(eval
$(call src-to-obj
,$(target
),$(dir)/eabi_compat.c
): CFLAGS_
$(target
) += -fno-lto
))
26 endif # CONFIG_ARCH_ARM
28 ###############################################################################
30 ###############################################################################
32 ifeq ($(CONFIG_ARCH_BOOTBLOCK_ARM
),y
)
34 decompressor-y
+= boot.c
36 decompressor-y
+= div0.c
38 decompressor-y
+= eabi_compat.c
39 bootblock-y
+= eabi_compat.c
40 decompressor-y
+= memset.S
41 bootblock-y
+= memset.S
42 decompressor-y
+= memcpy.S
43 bootblock-y
+= memcpy.S
44 decompressor-y
+= memmove.S
45 bootblock-y
+= memmove.S
47 bootblock-y
+= clock.c
48 bootblock-y
+= stages.c
50 $(eval
$(call link_stage
,bootblock
))
51 $(eval
$(call link_stage
,decompressor
))
53 endif # CONFIG_ARCH_BOOTBLOCK_ARM
55 ###############################################################################
57 ###############################################################################
59 ifeq ($(CONFIG_ARCH_VERSTAGE_ARM
),y
)
61 $(eval
$(call link_stage
,verstage
))
65 verstage-y
+= eabi_compat.c
66 verstage-y
+= memset.S
67 verstage-y
+= memcpy.S
68 verstage-y
+= memmove.S
69 verstage-y
+= stages.c
71 endif # CONFIG_ARCH_VERSTAGE_ARM
73 ###############################################################################
75 ###############################################################################
77 ifeq ($(CONFIG_ARCH_ROMSTAGE_ARM
),y
)
80 romstage-y
+= stages.c
82 romstage-y
+= eabi_compat.c
83 romstage-y
+= memset.S
84 romstage-y
+= memcpy.S
85 romstage-y
+= memmove.S
87 rmodules_arm-y
+= memset.S
88 rmodules_arm-y
+= memcpy.S
89 rmodules_arm-y
+= memmove.S
90 rmodules_arm-y
+= eabi_compat.c
92 $(eval
$(call link_stage
,romstage
))
94 endif # CONFIG_ARCH_ROMSTAGE_ARM
96 ###############################################################################
98 ###############################################################################
100 ifeq ($(CONFIG_ARCH_RAMSTAGE_ARM
),y
)
102 ramstage-y
+= stages.c
104 ramstage-y
+= eabi_compat.c
106 ramstage-y
+= tables.c
107 ramstage-y
+= memset.S
108 ramstage-y
+= memcpy.S
109 ramstage-y
+= memmove.S
110 ramstage-y
+= clock.c
111 ramstage-y
+= boot_linux.S
112 ramstage-
$(CONFIG_PAYLOAD_FIT_SUPPORT
) += fit_payload.c
114 rmodules_arm-y
+= memset.S
115 rmodules_arm-y
+= memcpy.S
116 rmodules_arm-y
+= memmove.S
117 rmodules_arm-y
+= eabi_compat.c
118 ramstage-srcs
+= $(wildcard src
/mainboard
/$(MAINBOARDDIR
)/mainboard.c
)
120 $(eval
$(call link_stage
,ramstage
))
122 endif # CONFIG_ARCH_RAMSTAGE_ARM