blob: b1e20dc04712e7b8e9657eac87bab43590fdd75c [file] [log] [blame]
Furquan Shaikh2af76f42014-04-28 16:39:40 -07001################################################################################
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 Shaikh2af76f42014-04-28 16:39:40 -070020################################################################################
21
22################################################################################
23# Take care of subdirectories
24################################################################################
25
Julius Werner7dcf9d52015-10-16 13:10:02 -070026subdirs-y += armv8/
Furquan Shaikh2af76f42014-04-28 16:39:40 -070027
28################################################################################
29# ARM specific options
30################################################################################
31
32ifeq ($(CONFIG_ARCH_ROMSTAGE_ARM64),y)
Julius Wernerefcee762014-11-10 13:14:24 -080033CBFSTOOL_PRE1_OPTS = -m arm64 -s $(CONFIG_CBFS_SIZE)
Furquan Shaikh2af76f42014-04-28 16:39:40 -070034endif
35
36################################################################################
37# bootblock
38################################################################################
39
40ifeq ($(CONFIG_ARCH_BOOTBLOCK_ARM64),y)
41
42bootblock-y += div0.c
Furquan Shaikh2af76f42014-04-28 16:39:40 -070043bootblock-y += id.S
44$(obj)/arch/arm64/id.bootblock.o: $(obj)/build.h
45
Aaron Durbinb3847e62015-03-20 15:55:08 -050046bootblock-y += boot.c
Furquan Shaikh2af76f42014-04-28 16:39:40 -070047bootblock-y += eabi_compat.c
Furquan Shaikh668316b2014-08-30 21:59:11 -070048bootblock-y += transition.c transition_asm.S
49
Furquan Shaikh464f5ca2015-06-08 10:31:55 -070050bootblock-y += memset.S
51bootblock-y += memcpy.S
52bootblock-y += memmove.S
Furquan Shaikh2af76f42014-04-28 16:39:40 -070053
54# Build the bootblock
55
Julius Wernerec5e5e02014-08-20 15:29:56 -070056$(objcbfs)/bootblock.debug: $$(bootblock-objs) $(obj)/config.h
Furquan Shaikh2af76f42014-04-28 16:39:40 -070057 @printf " LINK $(subst $(obj)/,,$(@))\n"
Aaron Durbind4dd44c2015-09-06 10:15:17 -050058 $(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 Shaikh2af76f42014-04-28 16:39:40 -070059
60endif # CONFIG_ARCH_BOOTBLOCK_ARM64
61
Furquan Shaikh6f33f0a2014-10-02 16:43:19 -070062###############################################################################
63# verification stage
64###############################################################################
65
66ifeq ($(CONFIG_ARCH_VERSTAGE_ARM64),y)
67
Aaron Durbinbc409332015-05-08 15:52:52 -050068$(objcbfs)/verstage.debug: $(objgenerated)/libverstage.a $$(verstage-objs)
Furquan Shaikh6f33f0a2014-10-02 16:43:19 -070069 @printf " LINK $(subst $(obj)/,,$(@))\n"
Aaron Durbind4dd44c2015-09-06 10:15:17 -050070 $(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 Shaikh6f33f0a2014-10-02 16:43:19 -070071
Aaron Durbinbc409332015-05-08 15:52:52 -050072verstage-y += boot.c
Furquan Shaikh6f33f0a2014-10-02 16:43:19 -070073verstage-y += div0.c
74verstage-y += eabi_compat.c
75verstage-y += ../../lib/memset.c
76verstage-y += ../../lib/memcpy.c
77verstage-y += ../../lib/memmove.c
Furquan Shaikh6f33f0a2014-10-02 16:43:19 -070078
79endif # CONFIG_ARCH_VERSTAGE_ARM64
80
Furquan Shaikh2af76f42014-04-28 16:39:40 -070081################################################################################
82# romstage
83################################################################################
84
85ifeq ($(CONFIG_ARCH_ROMSTAGE_ARM64),y)
86
Aaron Durbinb3847e62015-03-20 15:55:08 -050087romstage-y += boot.c
Furquan Shaikh2af76f42014-04-28 16:39:40 -070088romstage-y += div0.c
Furquan Shaikh2af76f42014-04-28 16:39:40 -070089romstage-y += eabi_compat.c
Furquan Shaikh464f5ca2015-06-08 10:31:55 -070090romstage-y += memset.S
91romstage-y += memcpy.S
92romstage-y += memmove.S
Furquan Shaikh668316b2014-08-30 21:59:11 -070093romstage-y += transition.c transition_asm.S
Furquan Shaikh2af76f42014-04-28 16:39:40 -070094
Furquan Shaikh464f5ca2015-06-08 10:31:55 -070095rmodules_arm64-y += memset.S
96rmodules_arm64-y += memcpy.S
97rmodules_arm64-y += memmove.S
Furquan Shaikha742ef12014-07-23 11:41:59 -070098rmodules_arm64-y += eabi_compat.c
99
Julius Wernerec5e5e02014-08-20 15:29:56 -0700100$(objcbfs)/romstage.debug: $$(romstage-objs)
Furquan Shaikh2af76f42014-04-28 16:39:40 -0700101 @printf " LINK $(subst $(obj)/,,$(@))\n"
Aaron Durbind4dd44c2015-09-06 10:15:17 -0500102 $(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 Shaikh2af76f42014-04-28 16:39:40 -0700103
104endif # CONFIG_ARCH_ROMSTAGE_ARM64
105
106################################################################################
107# ramstage
108################################################################################
109
110ifeq ($(CONFIG_ARCH_RAMSTAGE_ARM64),y)
111
Furquan Shaikh2af76f42014-04-28 16:39:40 -0700112ramstage-y += div0.c
Furquan Shaikh2af76f42014-04-28 16:39:40 -0700113ramstage-y += eabi_compat.c
114ramstage-y += boot.c
115ramstage-y += tables.c
Furquan Shaikh464f5ca2015-06-08 10:31:55 -0700116ramstage-y += memset.S
117ramstage-y += memcpy.S
118ramstage-y += memmove.S
Julius Werner745a75f2015-05-11 16:45:56 -0700119ramstage-$(CONFIG_ARM64_USE_ARM_TRUSTED_FIRMWARE) += arm_tf.c
Furquan Shaikh668316b2014-08-30 21:59:11 -0700120ramstage-y += transition.c transition_asm.S
121
Furquan Shaikh464f5ca2015-06-08 10:31:55 -0700122rmodules_arm64-y += memset.S
123rmodules_arm64-y += memcpy.S
124rmodules_arm64-y += memmove.S
Furquan Shaikhfbff9082014-07-22 15:59:16 -0700125rmodules_arm64-y += eabi_compat.c
Furquan Shaikhabde3b52014-08-26 15:39:51 -0700126
Marc Jones17b9c192015-01-16 13:45:23 -0700127ramstage-srcs += $(wildcard src/mainboard/$(MAINBOARDDIR)/mainboard.c)
Furquan Shaikh2af76f42014-04-28 16:39:40 -0700128
129# Build the ramstage
130
Julius Wernerec5e5e02014-08-20 15:29:56 -0700131$(objcbfs)/ramstage.debug: $$(ramstage-objs)
Furquan Shaikh2af76f42014-04-28 16:39:40 -0700132 @printf " CC $(subst $(obj)/,,$(@))\n"
Aaron Durbind4dd44c2015-09-06 10:15:17 -0500133 $(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 Shaikh2af76f42014-04-28 16:39:40 -0700134
Julius Werner745a75f2015-05-11 16:45:56 -0700135# Build ARM Trusted Firmware (BL31)
136
137ifeq ($(CONFIG_ARM64_USE_ARM_TRUSTED_FIRMWARE),y)
138
139BL31_SOURCE := $(top)/3rdparty/arm-trusted-firmware
140
Julius Werner745a75f2015-05-11 16:45:56 -0700141ifeq ($(V),1)
142BL31_MAKEARGS += V=1
143endif
144
145# Build ARM TF in debug mode (with serial output) if coreboot uses serial
146ifeq ($(CONFIG_CONSOLE_SERIAL),y)
147BL31_MAKEARGS += DEBUG=1
Furquan Shaikh87d492f2015-07-16 12:25:01 -0700148else
149# Turn off NOTICE messages from BL31 if coreboot does not use serial
150BL31_MAKEARGS += LOG_LEVEL=0
Julius Werner745a75f2015-05-11 16:45:56 -0700151endif # CONFIG_CONSOLE_SERIAL
152
153# Avoid build/release|build/debug distinction by overriding BUILD_PLAT directly
Patrick Georgi2268b3b2015-06-29 22:13:53 +0200154BL31_MAKEARGS += BUILD_PLAT="$(abspath $(obj)/3rdparty/arm-trusted-firmware)"
Julius Werner745a75f2015-05-11 16:45:56 -0700155
156BL31_CFLAGS := -fno-pic -fno-stack-protector
157BL31_LDFLAGS := --emit-relocs
158
Patrick Georgi2268b3b2015-06-29 22:13:53 +0200159BL31 := $(obj)/bl31.elf
Julius Werner745a75f2015-05-11 16:45:56 -0700160
161$(BL31):
162 @printf " MAKE $(subst $(obj)/,,$(@))\n"
Furquan Shaikhe45a3eb2015-05-20 10:12:19 -0700163 CROSS_COMPILE="$(CROSS_COMPILE_arm64)" \
Julius Werner745a75f2015-05-11 16:45:56 -0700164 CFLAGS="$(BL31_CFLAGS)" \
165 LDFLAGS="$(BL31_LDFLAGS)" \
166 $(MAKE) -C $(BL31_SOURCE) $(BL31_MAKEARGS) bl31
Patrick Georgi2268b3b2015-06-29 22:13:53 +0200167 mv $(obj)/3rdparty/arm-trusted-firmware/bl31/bl31.elf $@
Julius Werner745a75f2015-05-11 16:45:56 -0700168
169.PHONY: $(BL31)
170
Patrick Georgi6dc85702015-11-30 22:44:53 +0100171BL31_CBFS := $(CONFIG_CBFS_PREFIX)/bl31
Julius Werner745a75f2015-05-11 16:45:56 -0700172$(BL31_CBFS)-file := $(BL31)
173$(BL31_CBFS)-type := stage
174$(BL31_CBFS)-compression := $(CBFS_COMPRESS_FLAG)
175cbfs-files-y += $(BL31_CBFS)
176
Furquan Shaikha384c282015-05-28 12:13:51 -0700177ifeq ($(CONFIG_ARM64_USE_SECURE_OS),y)
178
179SECURE_OS_FILE := $(CONFIG_ARM64_SECURE_OS_FILE)
Patrick Georgi6dc85702015-11-30 22:44:53 +0100180SECURE_OS_FILE_CBFS := $(CONFIG_CBFS_PREFIX)/secure_os
Furquan Shaikha384c282015-05-28 12:13:51 -0700181$(SECURE_OS_FILE_CBFS)-file := $(SECURE_OS_FILE)
182$(SECURE_OS_FILE_CBFS)-type := stage
183cbfs-files-y += $(SECURE_OS_FILE_CBFS)
184
185endif # CONFIG_ARM64_USE_SECURE_OS
186
Julius Werner745a75f2015-05-11 16:45:56 -0700187endif # CONFIG_ARM64_USE_ARM_TRUSTED_FIRMWARE
188
Furquan Shaikh2af76f42014-04-28 16:39:40 -0700189endif # CONFIG_ARCH_RAMSTAGE_ARM64