Furquan Shaikh | 2af76f4 | 2014-04-28 16:39:40 -0700 | [diff] [blame] | 1 | ################################################################################ |
| 2 | ## |
| 3 | ## This file is part of the coreboot project. |
| 4 | ## |
| 5 | ## Copyright (C) 2014 Google Inc. |
| 6 | ## Copyright (C) 2012-2013 The ChromiumOS Authors |
| 7 | ## Copyright (C) 2012 Alexandru Gagniuc <mr.nuke.me@gmail.com> |
| 8 | ## Copyright (C) 2009-2010 coresystems GmbH |
| 9 | ## Copyright (C) 2009 Ronald G. Minnich |
| 10 | ## |
| 11 | ## This program is free software; you can redistribute it and/or modify |
| 12 | ## it under the terms of the GNU General Public License as published by |
| 13 | ## the Free Software Foundation; version 2 of the License. |
| 14 | ## |
| 15 | ## This program is distributed in the hope that it will be useful, |
| 16 | ## but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 17 | ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 18 | ## GNU General Public License for more details. |
| 19 | ## |
| 20 | ## You should have received a copy of the GNU General Public License |
| 21 | ## along with this program; if not, write to the Free Software |
Patrick Georgi | b890a12 | 2015-03-26 15:17:45 +0100 | [diff] [blame] | 22 | ## Foundation, Inc. |
Furquan Shaikh | 2af76f4 | 2014-04-28 16:39:40 -0700 | [diff] [blame] | 23 | ## |
| 24 | ################################################################################ |
| 25 | |
| 26 | ################################################################################ |
| 27 | # Take care of subdirectories |
| 28 | ################################################################################ |
| 29 | |
Furquan Shaikh | 36d3586 | 2015-03-27 22:55:59 -0700 | [diff] [blame] | 30 | subdirs-y += armv8/ cpu/ |
Furquan Shaikh | 2af76f4 | 2014-04-28 16:39:40 -0700 | [diff] [blame] | 31 | |
| 32 | ################################################################################ |
| 33 | # ARM specific options |
| 34 | ################################################################################ |
| 35 | |
| 36 | ifeq ($(CONFIG_ARCH_ROMSTAGE_ARM64),y) |
Julius Werner | efcee76 | 2014-11-10 13:14:24 -0800 | [diff] [blame] | 37 | CBFSTOOL_PRE1_OPTS = -m arm64 -s $(CONFIG_CBFS_SIZE) |
Furquan Shaikh | 2af76f4 | 2014-04-28 16:39:40 -0700 | [diff] [blame] | 38 | endif |
| 39 | |
Marc Jones | 17b9c19 | 2015-01-16 13:45:23 -0700 | [diff] [blame] | 40 | ifeq ($(CONFIG_ARCH_ARM64),y) |
| 41 | stages_c = $(src)/arch/arm64/stages.c |
| 42 | stages_o = $(obj)/arch/arm64/stages.o |
| 43 | |
| 44 | $(stages_o): $(stages_c) $(obj)/config.h |
| 45 | @printf " CC $(subst $(obj)/,,$(@))\n" |
| 46 | $(CC_arm) -I. $(CPPFLAGS_arm) -c -o $@ $< -marm |
| 47 | |
| 48 | endif |
| 49 | |
Furquan Shaikh | 2af76f4 | 2014-04-28 16:39:40 -0700 | [diff] [blame] | 50 | ################################################################################ |
| 51 | # bootblock |
| 52 | ################################################################################ |
| 53 | |
| 54 | ifeq ($(CONFIG_ARCH_BOOTBLOCK_ARM64),y) |
| 55 | |
| 56 | bootblock-y += div0.c |
Furquan Shaikh | 2af76f4 | 2014-04-28 16:39:40 -0700 | [diff] [blame] | 57 | bootblock-y += id.S |
| 58 | $(obj)/arch/arm64/id.bootblock.o: $(obj)/build.h |
| 59 | |
Aaron Durbin | b3847e6 | 2015-03-20 15:55:08 -0500 | [diff] [blame] | 60 | bootblock-y += boot.c |
Aaron Durbin | 30cda7e | 2014-07-15 10:25:48 -0500 | [diff] [blame] | 61 | bootblock-y += c_entry.c |
| 62 | bootblock-y += stage_entry.S |
Furquan Shaikh | 36d3586 | 2015-03-27 22:55:59 -0700 | [diff] [blame] | 63 | bootblock-y += cpu-stubs.c |
Furquan Shaikh | 2af76f4 | 2014-04-28 16:39:40 -0700 | [diff] [blame] | 64 | bootblock-y += stages.c |
| 65 | bootblock-y += eabi_compat.c |
Furquan Shaikh | 668316b | 2014-08-30 21:59:11 -0700 | [diff] [blame] | 66 | bootblock-y += transition.c transition_asm.S |
Furquan Shaikh | dbe5756 | 2014-10-14 15:25:39 -0700 | [diff] [blame] | 67 | bootblock-$(CONFIG_COLLECT_TIMESTAMPS) += timestamp.c |
Furquan Shaikh | 668316b | 2014-08-30 21:59:11 -0700 | [diff] [blame] | 68 | |
Aaron Durbin | 00263d0 | 2014-07-10 17:01:22 -0500 | [diff] [blame] | 69 | bootblock-y += ../../lib/memset.c |
| 70 | bootblock-y += ../../lib/memcpy.c |
| 71 | bootblock-y += ../../lib/memmove.c |
Furquan Shaikh | 2af76f4 | 2014-04-28 16:39:40 -0700 | [diff] [blame] | 72 | |
| 73 | # Build the bootblock |
| 74 | |
Julius Werner | ec5e5e0 | 2014-08-20 15:29:56 -0700 | [diff] [blame] | 75 | $(objcbfs)/bootblock.debug: $$(bootblock-objs) $(obj)/config.h |
Furquan Shaikh | 2af76f4 | 2014-04-28 16:39:40 -0700 | [diff] [blame] | 76 | @printf " LINK $(subst $(obj)/,,$(@))\n" |
Patrick Georgi | eec8dfb | 2015-05-07 22:24:41 +0200 | [diff] [blame] | 77 | $(LD_bootblock) --gc-sections -static -o $@ -L$(obj) --whole-archive --start-group $(filter-out %.ld,$(bootblock-objs)) --end-group -T $(obj)/mainboard/$(MAINBOARDDIR)/memlayout.bootblock.ld |
Furquan Shaikh | 2af76f4 | 2014-04-28 16:39:40 -0700 | [diff] [blame] | 78 | |
| 79 | endif # CONFIG_ARCH_BOOTBLOCK_ARM64 |
| 80 | |
Furquan Shaikh | 6f33f0a | 2014-10-02 16:43:19 -0700 | [diff] [blame] | 81 | ############################################################################### |
| 82 | # verification stage |
| 83 | ############################################################################### |
| 84 | |
| 85 | ifeq ($(CONFIG_ARCH_VERSTAGE_ARM64),y) |
| 86 | |
Aaron Durbin | bc40933 | 2015-05-08 15:52:52 -0500 | [diff] [blame] | 87 | $(objcbfs)/verstage.debug: $(objgenerated)/libverstage.a $$(verstage-objs) |
Furquan Shaikh | 6f33f0a | 2014-10-02 16:43:19 -0700 | [diff] [blame] | 88 | @printf " LINK $(subst $(obj)/,,$(@))\n" |
Patrick Georgi | eec8dfb | 2015-05-07 22:24:41 +0200 | [diff] [blame] | 89 | $(LD_verstage) --gc-sections -static -o $@ -L$(obj) --whole-archive --start-group $(objgenerated)/libverstage.a $$(verstage-objs) --end-group -T $(obj)/mainboard/$(MAINBOARDDIR)/memlayout.verstage.ld |
Furquan Shaikh | 6f33f0a | 2014-10-02 16:43:19 -0700 | [diff] [blame] | 90 | |
| 91 | verstage-$(CONFIG_EARLY_CONSOLE) += early_console.c |
Aaron Durbin | bc40933 | 2015-05-08 15:52:52 -0500 | [diff] [blame] | 92 | verstage-y += boot.c |
Furquan Shaikh | 6f33f0a | 2014-10-02 16:43:19 -0700 | [diff] [blame] | 93 | verstage-y += div0.c |
| 94 | verstage-y += eabi_compat.c |
| 95 | verstage-y += ../../lib/memset.c |
| 96 | verstage-y += ../../lib/memcpy.c |
| 97 | verstage-y += ../../lib/memmove.c |
| 98 | verstage-y += stages.c |
Furquan Shaikh | dbe5756 | 2014-10-14 15:25:39 -0700 | [diff] [blame] | 99 | verstage-$(CONFIG_COLLECT_TIMESTAMPS) += timestamp.c |
Furquan Shaikh | 6f33f0a | 2014-10-02 16:43:19 -0700 | [diff] [blame] | 100 | |
| 101 | endif # CONFIG_ARCH_VERSTAGE_ARM64 |
| 102 | |
Furquan Shaikh | 2af76f4 | 2014-04-28 16:39:40 -0700 | [diff] [blame] | 103 | ################################################################################ |
| 104 | # romstage |
| 105 | ################################################################################ |
| 106 | |
| 107 | ifeq ($(CONFIG_ARCH_ROMSTAGE_ARM64),y) |
| 108 | |
Aaron Durbin | b3847e6 | 2015-03-20 15:55:08 -0500 | [diff] [blame] | 109 | romstage-y += boot.c |
Aaron Durbin | 30cda7e | 2014-07-15 10:25:48 -0500 | [diff] [blame] | 110 | romstage-y += c_entry.c |
| 111 | romstage-y += stage_entry.S |
Furquan Shaikh | 36d3586 | 2015-03-27 22:55:59 -0700 | [diff] [blame] | 112 | romstage-y += cpu-stubs.c |
Furquan Shaikh | 2af76f4 | 2014-04-28 16:39:40 -0700 | [diff] [blame] | 113 | romstage-y += stages.c |
| 114 | romstage-y += div0.c |
Furquan Shaikh | 2af76f4 | 2014-04-28 16:39:40 -0700 | [diff] [blame] | 115 | romstage-y += eabi_compat.c |
Aaron Durbin | 00263d0 | 2014-07-10 17:01:22 -0500 | [diff] [blame] | 116 | romstage-y += ../../lib/memset.c |
| 117 | romstage-y += ../../lib/memcpy.c |
| 118 | romstage-y += ../../lib/memmove.c |
Furquan Shaikh | 2af76f4 | 2014-04-28 16:39:40 -0700 | [diff] [blame] | 119 | romstage-$(CONFIG_COLLECT_TIMESTAMPS) += timestamp.c |
Furquan Shaikh | 668316b | 2014-08-30 21:59:11 -0700 | [diff] [blame] | 120 | romstage-y += transition.c transition_asm.S |
Furquan Shaikh | 2af76f4 | 2014-04-28 16:39:40 -0700 | [diff] [blame] | 121 | |
Furquan Shaikh | a742ef1 | 2014-07-23 11:41:59 -0700 | [diff] [blame] | 122 | rmodules_arm64-y += ../../lib/memset.c |
| 123 | rmodules_arm64-y += ../../lib/memcpy.c |
| 124 | rmodules_arm64-y += ../../lib/memmove.c |
| 125 | rmodules_arm64-y += eabi_compat.c |
| 126 | |
Furquan Shaikh | 2af76f4 | 2014-04-28 16:39:40 -0700 | [diff] [blame] | 127 | # Build the romstage |
Marc Jones | 17b9c19 | 2015-01-16 13:45:23 -0700 | [diff] [blame] | 128 | VBOOT_STUB_DEPS += $(obj)/arch/arm/eabi_compat.rmodules_arm64.o |
Furquan Shaikh | 2af76f4 | 2014-04-28 16:39:40 -0700 | [diff] [blame] | 129 | |
Julius Werner | ec5e5e0 | 2014-08-20 15:29:56 -0700 | [diff] [blame] | 130 | $(objcbfs)/romstage.debug: $$(romstage-objs) |
Furquan Shaikh | 2af76f4 | 2014-04-28 16:39:40 -0700 | [diff] [blame] | 131 | @printf " LINK $(subst $(obj)/,,$(@))\n" |
Patrick Georgi | eec8dfb | 2015-05-07 22:24:41 +0200 | [diff] [blame] | 132 | $(LD_romstage) -nostdlib --gc-sections -static -o $@ -L$(obj) --whole-archive --start-group $(filter-out %.ld,$(romstage-objs)) --end-group -T $(obj)/mainboard/$(MAINBOARDDIR)/memlayout.romstage.ld |
Furquan Shaikh | 2af76f4 | 2014-04-28 16:39:40 -0700 | [diff] [blame] | 133 | |
| 134 | endif # CONFIG_ARCH_ROMSTAGE_ARM64 |
| 135 | |
| 136 | ################################################################################ |
| 137 | # ramstage |
| 138 | ################################################################################ |
| 139 | |
| 140 | ifeq ($(CONFIG_ARCH_RAMSTAGE_ARM64),y) |
| 141 | |
Aaron Durbin | 30cda7e | 2014-07-15 10:25:48 -0500 | [diff] [blame] | 142 | ramstage-y += c_entry.c |
Furquan Shaikh | 2af76f4 | 2014-04-28 16:39:40 -0700 | [diff] [blame] | 143 | ramstage-y += stages.c |
Furquan Shaikh | 9482498 | 2014-11-21 15:42:40 -0800 | [diff] [blame] | 144 | ramstage-y += startup.c |
Furquan Shaikh | 2af76f4 | 2014-04-28 16:39:40 -0700 | [diff] [blame] | 145 | ramstage-y += div0.c |
| 146 | ramstage-y += cpu.c |
Aaron Durbin | b30c9b1 | 2014-09-18 11:52:16 -0500 | [diff] [blame] | 147 | ramstage-y += cpu_ramstage.c |
Furquan Shaikh | 2af76f4 | 2014-04-28 16:39:40 -0700 | [diff] [blame] | 148 | ramstage-y += eabi_compat.c |
| 149 | ramstage-y += boot.c |
| 150 | ramstage-y += tables.c |
Aaron Durbin | 00263d0 | 2014-07-10 17:01:22 -0500 | [diff] [blame] | 151 | ramstage-y += ../../lib/memset.c |
| 152 | ramstage-y += ../../lib/memcpy.c |
| 153 | ramstage-y += ../../lib/memmove.c |
Aaron Durbin | 0df877a | 2014-07-10 12:40:30 -0500 | [diff] [blame] | 154 | ramstage-y += stage_entry.S |
Furquan Shaikh | 36d3586 | 2015-03-27 22:55:59 -0700 | [diff] [blame] | 155 | ramstage-y += cpu-stubs.c |
Julius Werner | f1df50e | 2015-05-07 16:59:31 -0700 | [diff] [blame] | 156 | ramstage-$(CONFIG_ARM64_USE_SPINTABLE) += spintable.c spintable_asm.S |
Julius Werner | 745a75f | 2015-05-11 16:45:56 -0700 | [diff] [blame] | 157 | ramstage-$(CONFIG_ARM64_USE_ARM_TRUSTED_FIRMWARE) += arm_tf.c |
Furquan Shaikh | 668316b | 2014-08-30 21:59:11 -0700 | [diff] [blame] | 158 | ramstage-y += transition.c transition_asm.S |
| 159 | |
Furquan Shaikh | fbff908 | 2014-07-22 15:59:16 -0700 | [diff] [blame] | 160 | rmodules_arm64-y += ../../lib/memset.c |
| 161 | rmodules_arm64-y += ../../lib/memcpy.c |
| 162 | rmodules_arm64-y += ../../lib/memmove.c |
| 163 | rmodules_arm64-y += eabi_compat.c |
Furquan Shaikh | abde3b5 | 2014-08-26 15:39:51 -0700 | [diff] [blame] | 164 | |
Julius Werner | 59e7b42 | 2015-05-07 16:59:31 -0700 | [diff] [blame] | 165 | secmon-y += stage_entry.S |
| 166 | secmon-y += cpu-stubs.c |
| 167 | secmon-y += startup.c |
| 168 | secmon-y += ../../lib/malloc.c |
| 169 | secmon-y += ../../lib/memset.c |
| 170 | secmon-y += ../../lib/memcmp.c |
| 171 | secmon-y += ../../lib/memcpy.c |
Furquan Shaikh | abde3b5 | 2014-08-26 15:39:51 -0700 | [diff] [blame] | 172 | |
Furquan Shaikh | 2af76f4 | 2014-04-28 16:39:40 -0700 | [diff] [blame] | 173 | ramstage-$(CONFIG_COLLECT_TIMESTAMPS) += timestamp.c |
| 174 | |
Marc Jones | 17b9c19 | 2015-01-16 13:45:23 -0700 | [diff] [blame] | 175 | ramstage-srcs += $(wildcard src/mainboard/$(MAINBOARDDIR)/mainboard.c) |
Furquan Shaikh | 2af76f4 | 2014-04-28 16:39:40 -0700 | [diff] [blame] | 176 | |
| 177 | # Build the ramstage |
| 178 | |
Julius Werner | ec5e5e0 | 2014-08-20 15:29:56 -0700 | [diff] [blame] | 179 | $(objcbfs)/ramstage.debug: $$(ramstage-objs) |
Furquan Shaikh | 2af76f4 | 2014-04-28 16:39:40 -0700 | [diff] [blame] | 180 | @printf " CC $(subst $(obj)/,,$(@))\n" |
Patrick Georgi | eec8dfb | 2015-05-07 22:24:41 +0200 | [diff] [blame] | 181 | $(LD_ramstage) -nostdlib --gc-sections -o $@ -L$(obj) --whole-archive --start-group $(filter-out %.ld,$(ramstage-objs)) --end-group -T $(obj)/mainboard/$(MAINBOARDDIR)/memlayout.ramstage.ld |
Furquan Shaikh | 2af76f4 | 2014-04-28 16:39:40 -0700 | [diff] [blame] | 182 | |
Julius Werner | 745a75f | 2015-05-11 16:45:56 -0700 | [diff] [blame] | 183 | # Build ARM Trusted Firmware (BL31) |
| 184 | |
| 185 | ifeq ($(CONFIG_ARM64_USE_ARM_TRUSTED_FIRMWARE),y) |
| 186 | |
| 187 | BL31_SOURCE := $(top)/3rdparty/arm-trusted-firmware |
| 188 | |
| 189 | BL31_MAKEARGS := PLAT=$(call strip_quotes,$(CONFIG_ARM_TF_PLATFORM_NAME)) |
| 190 | |
| 191 | ifeq ($(V),1) |
| 192 | BL31_MAKEARGS += V=1 |
| 193 | endif |
| 194 | |
| 195 | # Build ARM TF in debug mode (with serial output) if coreboot uses serial |
| 196 | ifeq ($(CONFIG_CONSOLE_SERIAL),y) |
| 197 | BL31_MAKEARGS += DEBUG=1 |
| 198 | endif # CONFIG_CONSOLE_SERIAL |
| 199 | |
| 200 | # Avoid build/release|build/debug distinction by overriding BUILD_PLAT directly |
| 201 | BL31_MAKEARGS += BUILD_PLAT="$(top)/$(obj)/3rdparty/arm-trusted-firmware" |
| 202 | |
| 203 | BL31_CFLAGS := -fno-pic -fno-stack-protector |
| 204 | BL31_LDFLAGS := --emit-relocs |
| 205 | |
| 206 | BL31 := $(obj)/3rdparty/arm-trusted-firmware/bl31/bl31.elf |
| 207 | |
| 208 | $(BL31): |
| 209 | @printf " MAKE $(subst $(obj)/,,$(@))\n" |
Furquan Shaikh | e45a3eb | 2015-05-20 10:12:19 -0700 | [diff] [blame^] | 210 | CROSS_COMPILE="$(CROSS_COMPILE_arm64)" \ |
Julius Werner | 745a75f | 2015-05-11 16:45:56 -0700 | [diff] [blame] | 211 | CFLAGS="$(BL31_CFLAGS)" \ |
| 212 | LDFLAGS="$(BL31_LDFLAGS)" \ |
| 213 | $(MAKE) -C $(BL31_SOURCE) $(BL31_MAKEARGS) bl31 |
| 214 | |
| 215 | .PHONY: $(BL31) |
| 216 | |
| 217 | BL31_CBFS := $(call strip_quotes,$(CONFIG_CBFS_PREFIX))/bl31 |
| 218 | $(BL31_CBFS)-file := $(BL31) |
| 219 | $(BL31_CBFS)-type := stage |
| 220 | $(BL31_CBFS)-compression := $(CBFS_COMPRESS_FLAG) |
| 221 | cbfs-files-y += $(BL31_CBFS) |
| 222 | |
| 223 | endif # CONFIG_ARM64_USE_ARM_TRUSTED_FIRMWARE |
| 224 | |
Furquan Shaikh | 2af76f4 | 2014-04-28 16:39:40 -0700 | [diff] [blame] | 225 | endif # CONFIG_ARCH_RAMSTAGE_ARM64 |