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 | ## |
Furquan Shaikh | 2af76f4 | 2014-04-28 16:39:40 -0700 | [diff] [blame] | 20 | ################################################################################ |
| 21 | |
| 22 | ################################################################################ |
| 23 | # Take care of subdirectories |
| 24 | ################################################################################ |
| 25 | |
Julius Werner | 7dcf9d5 | 2015-10-16 13:10:02 -0700 | [diff] [blame] | 26 | subdirs-y += armv8/ |
Furquan Shaikh | 2af76f4 | 2014-04-28 16:39:40 -0700 | [diff] [blame] | 27 | |
| 28 | ################################################################################ |
| 29 | # ARM specific options |
| 30 | ################################################################################ |
| 31 | |
| 32 | ifeq ($(CONFIG_ARCH_ROMSTAGE_ARM64),y) |
Julius Werner | efcee76 | 2014-11-10 13:14:24 -0800 | [diff] [blame] | 33 | CBFSTOOL_PRE1_OPTS = -m arm64 -s $(CONFIG_CBFS_SIZE) |
Furquan Shaikh | 2af76f4 | 2014-04-28 16:39:40 -0700 | [diff] [blame] | 34 | endif |
| 35 | |
| 36 | ################################################################################ |
| 37 | # bootblock |
| 38 | ################################################################################ |
| 39 | |
| 40 | ifeq ($(CONFIG_ARCH_BOOTBLOCK_ARM64),y) |
| 41 | |
| 42 | bootblock-y += div0.c |
Furquan Shaikh | 2af76f4 | 2014-04-28 16:39:40 -0700 | [diff] [blame] | 43 | bootblock-y += id.S |
| 44 | $(obj)/arch/arm64/id.bootblock.o: $(obj)/build.h |
| 45 | |
Aaron Durbin | b3847e6 | 2015-03-20 15:55:08 -0500 | [diff] [blame] | 46 | bootblock-y += boot.c |
Furquan Shaikh | 2af76f4 | 2014-04-28 16:39:40 -0700 | [diff] [blame] | 47 | bootblock-y += eabi_compat.c |
Furquan Shaikh | 668316b | 2014-08-30 21:59:11 -0700 | [diff] [blame] | 48 | bootblock-y += transition.c transition_asm.S |
| 49 | |
Furquan Shaikh | 464f5ca | 2015-06-08 10:31:55 -0700 | [diff] [blame] | 50 | bootblock-y += memset.S |
| 51 | bootblock-y += memcpy.S |
| 52 | bootblock-y += memmove.S |
Furquan Shaikh | 2af76f4 | 2014-04-28 16:39:40 -0700 | [diff] [blame] | 53 | |
| 54 | # Build the bootblock |
| 55 | |
Julius Werner | ec5e5e0 | 2014-08-20 15:29:56 -0700 | [diff] [blame] | 56 | $(objcbfs)/bootblock.debug: $$(bootblock-objs) $(obj)/config.h |
Furquan Shaikh | 2af76f4 | 2014-04-28 16:39:40 -0700 | [diff] [blame] | 57 | @printf " LINK $(subst $(obj)/,,$(@))\n" |
Aaron Durbin | d4dd44c | 2015-09-06 10:15:17 -0500 | [diff] [blame] | 58 | $(LD_bootblock) $(LDFLAGS_bootblock) -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] | 59 | |
| 60 | endif # CONFIG_ARCH_BOOTBLOCK_ARM64 |
| 61 | |
Furquan Shaikh | 6f33f0a | 2014-10-02 16:43:19 -0700 | [diff] [blame] | 62 | ############################################################################### |
| 63 | # verification stage |
| 64 | ############################################################################### |
| 65 | |
| 66 | ifeq ($(CONFIG_ARCH_VERSTAGE_ARM64),y) |
| 67 | |
Aaron Durbin | bc40933 | 2015-05-08 15:52:52 -0500 | [diff] [blame] | 68 | $(objcbfs)/verstage.debug: $(objgenerated)/libverstage.a $$(verstage-objs) |
Furquan Shaikh | 6f33f0a | 2014-10-02 16:43:19 -0700 | [diff] [blame] | 69 | @printf " LINK $(subst $(obj)/,,$(@))\n" |
Aaron Durbin | d4dd44c | 2015-09-06 10:15:17 -0500 | [diff] [blame] | 70 | $(LD_verstage) $(LDFLAGS_verstage) -o $@ -L$(obj) --whole-archive --start-group $(filter-out %.ld,$(verstage-objs)) $(objgenerated)/libverstage.a --end-group -T $(obj)/mainboard/$(MAINBOARDDIR)/memlayout.verstage.ld |
Furquan Shaikh | 6f33f0a | 2014-10-02 16:43:19 -0700 | [diff] [blame] | 71 | |
Aaron Durbin | bc40933 | 2015-05-08 15:52:52 -0500 | [diff] [blame] | 72 | verstage-y += boot.c |
Furquan Shaikh | 6f33f0a | 2014-10-02 16:43:19 -0700 | [diff] [blame] | 73 | verstage-y += div0.c |
| 74 | verstage-y += eabi_compat.c |
| 75 | verstage-y += ../../lib/memset.c |
| 76 | verstage-y += ../../lib/memcpy.c |
| 77 | verstage-y += ../../lib/memmove.c |
Furquan Shaikh | 6f33f0a | 2014-10-02 16:43:19 -0700 | [diff] [blame] | 78 | |
| 79 | endif # CONFIG_ARCH_VERSTAGE_ARM64 |
| 80 | |
Furquan Shaikh | 2af76f4 | 2014-04-28 16:39:40 -0700 | [diff] [blame] | 81 | ################################################################################ |
| 82 | # romstage |
| 83 | ################################################################################ |
| 84 | |
| 85 | ifeq ($(CONFIG_ARCH_ROMSTAGE_ARM64),y) |
| 86 | |
Aaron Durbin | b3847e6 | 2015-03-20 15:55:08 -0500 | [diff] [blame] | 87 | romstage-y += boot.c |
Furquan Shaikh | 2af76f4 | 2014-04-28 16:39:40 -0700 | [diff] [blame] | 88 | romstage-y += div0.c |
Furquan Shaikh | 2af76f4 | 2014-04-28 16:39:40 -0700 | [diff] [blame] | 89 | romstage-y += eabi_compat.c |
Furquan Shaikh | 464f5ca | 2015-06-08 10:31:55 -0700 | [diff] [blame] | 90 | romstage-y += memset.S |
| 91 | romstage-y += memcpy.S |
| 92 | romstage-y += memmove.S |
Furquan Shaikh | 668316b | 2014-08-30 21:59:11 -0700 | [diff] [blame] | 93 | romstage-y += transition.c transition_asm.S |
Furquan Shaikh | 2af76f4 | 2014-04-28 16:39:40 -0700 | [diff] [blame] | 94 | |
Furquan Shaikh | 464f5ca | 2015-06-08 10:31:55 -0700 | [diff] [blame] | 95 | rmodules_arm64-y += memset.S |
| 96 | rmodules_arm64-y += memcpy.S |
| 97 | rmodules_arm64-y += memmove.S |
Furquan Shaikh | a742ef1 | 2014-07-23 11:41:59 -0700 | [diff] [blame] | 98 | rmodules_arm64-y += eabi_compat.c |
| 99 | |
Julius Werner | ec5e5e0 | 2014-08-20 15:29:56 -0700 | [diff] [blame] | 100 | $(objcbfs)/romstage.debug: $$(romstage-objs) |
Furquan Shaikh | 2af76f4 | 2014-04-28 16:39:40 -0700 | [diff] [blame] | 101 | @printf " LINK $(subst $(obj)/,,$(@))\n" |
Aaron Durbin | d4dd44c | 2015-09-06 10:15:17 -0500 | [diff] [blame] | 102 | $(LD_romstage) $(LDFLAGS_romstage) -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] | 103 | |
| 104 | endif # CONFIG_ARCH_ROMSTAGE_ARM64 |
| 105 | |
| 106 | ################################################################################ |
| 107 | # ramstage |
| 108 | ################################################################################ |
| 109 | |
| 110 | ifeq ($(CONFIG_ARCH_RAMSTAGE_ARM64),y) |
| 111 | |
Furquan Shaikh | 2af76f4 | 2014-04-28 16:39:40 -0700 | [diff] [blame] | 112 | ramstage-y += div0.c |
Furquan Shaikh | 2af76f4 | 2014-04-28 16:39:40 -0700 | [diff] [blame] | 113 | ramstage-y += eabi_compat.c |
| 114 | ramstage-y += boot.c |
| 115 | ramstage-y += tables.c |
Furquan Shaikh | 464f5ca | 2015-06-08 10:31:55 -0700 | [diff] [blame] | 116 | ramstage-y += memset.S |
| 117 | ramstage-y += memcpy.S |
| 118 | ramstage-y += memmove.S |
Julius Werner | 745a75f | 2015-05-11 16:45:56 -0700 | [diff] [blame] | 119 | ramstage-$(CONFIG_ARM64_USE_ARM_TRUSTED_FIRMWARE) += arm_tf.c |
Furquan Shaikh | 668316b | 2014-08-30 21:59:11 -0700 | [diff] [blame] | 120 | ramstage-y += transition.c transition_asm.S |
| 121 | |
Furquan Shaikh | 464f5ca | 2015-06-08 10:31:55 -0700 | [diff] [blame] | 122 | rmodules_arm64-y += memset.S |
| 123 | rmodules_arm64-y += memcpy.S |
| 124 | rmodules_arm64-y += memmove.S |
Furquan Shaikh | fbff908 | 2014-07-22 15:59:16 -0700 | [diff] [blame] | 125 | rmodules_arm64-y += eabi_compat.c |
Furquan Shaikh | abde3b5 | 2014-08-26 15:39:51 -0700 | [diff] [blame] | 126 | |
Marc Jones | 17b9c19 | 2015-01-16 13:45:23 -0700 | [diff] [blame] | 127 | ramstage-srcs += $(wildcard src/mainboard/$(MAINBOARDDIR)/mainboard.c) |
Furquan Shaikh | 2af76f4 | 2014-04-28 16:39:40 -0700 | [diff] [blame] | 128 | |
| 129 | # Build the ramstage |
| 130 | |
Julius Werner | ec5e5e0 | 2014-08-20 15:29:56 -0700 | [diff] [blame] | 131 | $(objcbfs)/ramstage.debug: $$(ramstage-objs) |
Furquan Shaikh | 2af76f4 | 2014-04-28 16:39:40 -0700 | [diff] [blame] | 132 | @printf " CC $(subst $(obj)/,,$(@))\n" |
Aaron Durbin | d4dd44c | 2015-09-06 10:15:17 -0500 | [diff] [blame] | 133 | $(LD_ramstage) $(LDFLAGS_ramstage) -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] | 134 | |
Julius Werner | 745a75f | 2015-05-11 16:45:56 -0700 | [diff] [blame] | 135 | # Build ARM Trusted Firmware (BL31) |
| 136 | |
| 137 | ifeq ($(CONFIG_ARM64_USE_ARM_TRUSTED_FIRMWARE),y) |
| 138 | |
| 139 | BL31_SOURCE := $(top)/3rdparty/arm-trusted-firmware |
| 140 | |
Julius Werner | 745a75f | 2015-05-11 16:45:56 -0700 | [diff] [blame] | 141 | ifeq ($(V),1) |
| 142 | BL31_MAKEARGS += V=1 |
| 143 | endif |
| 144 | |
| 145 | # Build ARM TF in debug mode (with serial output) if coreboot uses serial |
| 146 | ifeq ($(CONFIG_CONSOLE_SERIAL),y) |
| 147 | BL31_MAKEARGS += DEBUG=1 |
Furquan Shaikh | 87d492f | 2015-07-16 12:25:01 -0700 | [diff] [blame] | 148 | else |
| 149 | # Turn off NOTICE messages from BL31 if coreboot does not use serial |
| 150 | BL31_MAKEARGS += LOG_LEVEL=0 |
Julius Werner | 745a75f | 2015-05-11 16:45:56 -0700 | [diff] [blame] | 151 | endif # CONFIG_CONSOLE_SERIAL |
| 152 | |
| 153 | # Avoid build/release|build/debug distinction by overriding BUILD_PLAT directly |
Patrick Georgi | 2268b3b | 2015-06-29 22:13:53 +0200 | [diff] [blame] | 154 | BL31_MAKEARGS += BUILD_PLAT="$(abspath $(obj)/3rdparty/arm-trusted-firmware)" |
Julius Werner | 745a75f | 2015-05-11 16:45:56 -0700 | [diff] [blame] | 155 | |
| 156 | BL31_CFLAGS := -fno-pic -fno-stack-protector |
| 157 | BL31_LDFLAGS := --emit-relocs |
| 158 | |
Patrick Georgi | 2268b3b | 2015-06-29 22:13:53 +0200 | [diff] [blame] | 159 | BL31 := $(obj)/bl31.elf |
Julius Werner | 745a75f | 2015-05-11 16:45:56 -0700 | [diff] [blame] | 160 | |
| 161 | $(BL31): |
| 162 | @printf " MAKE $(subst $(obj)/,,$(@))\n" |
Furquan Shaikh | e45a3eb | 2015-05-20 10:12:19 -0700 | [diff] [blame] | 163 | CROSS_COMPILE="$(CROSS_COMPILE_arm64)" \ |
Julius Werner | 745a75f | 2015-05-11 16:45:56 -0700 | [diff] [blame] | 164 | CFLAGS="$(BL31_CFLAGS)" \ |
| 165 | LDFLAGS="$(BL31_LDFLAGS)" \ |
| 166 | $(MAKE) -C $(BL31_SOURCE) $(BL31_MAKEARGS) bl31 |
Patrick Georgi | 2268b3b | 2015-06-29 22:13:53 +0200 | [diff] [blame] | 167 | mv $(obj)/3rdparty/arm-trusted-firmware/bl31/bl31.elf $@ |
Julius Werner | 745a75f | 2015-05-11 16:45:56 -0700 | [diff] [blame] | 168 | |
| 169 | .PHONY: $(BL31) |
| 170 | |
Patrick Georgi | 6dc8570 | 2015-11-30 22:44:53 +0100 | [diff] [blame^] | 171 | BL31_CBFS := $(CONFIG_CBFS_PREFIX)/bl31 |
Julius Werner | 745a75f | 2015-05-11 16:45:56 -0700 | [diff] [blame] | 172 | $(BL31_CBFS)-file := $(BL31) |
| 173 | $(BL31_CBFS)-type := stage |
| 174 | $(BL31_CBFS)-compression := $(CBFS_COMPRESS_FLAG) |
| 175 | cbfs-files-y += $(BL31_CBFS) |
| 176 | |
Furquan Shaikh | a384c28 | 2015-05-28 12:13:51 -0700 | [diff] [blame] | 177 | ifeq ($(CONFIG_ARM64_USE_SECURE_OS),y) |
| 178 | |
| 179 | SECURE_OS_FILE := $(CONFIG_ARM64_SECURE_OS_FILE) |
Patrick Georgi | 6dc8570 | 2015-11-30 22:44:53 +0100 | [diff] [blame^] | 180 | SECURE_OS_FILE_CBFS := $(CONFIG_CBFS_PREFIX)/secure_os |
Furquan Shaikh | a384c28 | 2015-05-28 12:13:51 -0700 | [diff] [blame] | 181 | $(SECURE_OS_FILE_CBFS)-file := $(SECURE_OS_FILE) |
| 182 | $(SECURE_OS_FILE_CBFS)-type := stage |
| 183 | cbfs-files-y += $(SECURE_OS_FILE_CBFS) |
| 184 | |
| 185 | endif # CONFIG_ARM64_USE_SECURE_OS |
| 186 | |
Julius Werner | 745a75f | 2015-05-11 16:45:56 -0700 | [diff] [blame] | 187 | endif # CONFIG_ARM64_USE_ARM_TRUSTED_FIRMWARE |
| 188 | |
Furquan Shaikh | 2af76f4 | 2014-04-28 16:39:40 -0700 | [diff] [blame] | 189 | endif # CONFIG_ARCH_RAMSTAGE_ARM64 |