blob: 34c447d5a4f6e99d37f6c4003532d7cf3c651386 [file] [log] [blame]
Stefan Reinauer52db0b92012-12-07 17:15:04 -08001################################################################################
2##
3## This file is part of the coreboot project.
4##
Gabe Black169c0df2013-10-08 18:24:10 -07005## Copyright (C) 2012-2013 The ChromiumOS Authors
Stefan Reinauer52db0b92012-12-07 17:15:04 -08006## Copyright (C) 2012 Alexandru Gagniuc <mr.nuke.me@gmail.com>
7## Copyright (C) 2009-2010 coresystems GmbH
8## Copyright (C) 2009 Ronald G. Minnich
9##
10## This program is free software; you can redistribute it and/or modify
11## it under the terms of the GNU General Public License as published by
12## the Free Software Foundation; version 2 of the License.
13##
14## This program is distributed in the hope that it will be useful,
15## but WITHOUT ANY WARRANTY; without even the implied warranty of
16## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17## GNU General Public License for more details.
18##
19## You should have received a copy of the GNU General Public License
20## along with this program; if not, write to the Free Software
Patrick Georgib890a122015-03-26 15:17:45 +010021## Foundation, Inc.
Stefan Reinauer52db0b92012-12-07 17:15:04 -080022##
Stefan Reinauer52db0b92012-12-07 17:15:04 -080023
Furquan Shaikh88ca81a2014-04-22 16:33:22 -070024###############################################################################
25# ARM specific options
26###############################################################################
Stefan Reinauer52db0b92012-12-07 17:15:04 -080027
Gabe Black51edd542013-09-30 23:00:33 -070028ifeq ($(CONFIG_ARCH_ROMSTAGE_ARM),y)
Julius Wernerefcee762014-11-10 13:14:24 -080029CBFSTOOL_PRE1_OPTS = -m arm -s $(CONFIG_CBFS_SIZE)
Furquan Shaikh88ca81a2014-04-22 16:33:22 -070030CBFSTOOL_PRE_OPTS = -b 0
Furquan Shaikh99ac98f2014-04-23 10:18:48 -070031endif
Stefan Reinauer52db0b92012-12-07 17:15:04 -080032
Gabe Black51edd542013-09-30 23:00:33 -070033ifeq ($(CONFIG_ARCH_ARM),y)
Patrick Georgi8ef8afb2015-04-29 20:28:03 +020034subdirs-y += libgcc/
35subdirs-y += armv4/ armv7/
36
Gabe Black51edd542013-09-30 23:00:33 -070037stages_c = $(src)/arch/arm/stages.c
38stages_o = $(obj)/arch/arm/stages.o
Ronald G. Minnich27bd64a2013-02-28 17:47:00 +010039
Gabe Black4938a322013-09-15 20:53:57 -070040$(stages_o): $(stages_c) $(obj)/config.h
Ronald G. Minnich27bd64a2013-02-28 17:47:00 +010041 @printf " CC $(subst $(obj)/,,$(@))\n"
Gabe Black51edd542013-09-30 23:00:33 -070042 $(CC_arm) -I. $(CPPFLAGS_arm) -c -o $@ $< -marm
Ronald G. Minnich27bd64a2013-02-28 17:47:00 +010043
Gabe Black51edd542013-09-30 23:00:33 -070044endif # CONFIG_ARCH_ARM
David Hendricks10c90d32012-12-27 13:30:55 -080045
Furquan Shaikh88ca81a2014-04-22 16:33:22 -070046###############################################################################
47# bootblock
48###############################################################################
Ronald G. Minnichb21eaa72013-03-07 15:23:45 -080049
Gabe Black51edd542013-09-30 23:00:33 -070050ifeq ($(CONFIG_ARCH_BOOTBLOCK_ARM),y)
Furquan Shaikh99ac98f2014-04-23 10:18:48 -070051
Gabe Blacka2a87d42013-09-29 05:40:13 -070052bootblock-y += id.S
Gabe Black8b685392013-09-29 03:02:55 -070053$(obj)/arch/arm/id.bootblock.o: $(obj)/build.h
Gabe Black8b685392013-09-29 03:02:55 -070054
Aaron Durbinb3847e62015-03-20 15:55:08 -050055bootblock-y += boot.c
Gabe Black8b685392013-09-29 03:02:55 -070056bootblock-y += stages.c
Stefan Reinauer93ce3b32013-05-24 14:38:48 -070057bootblock-y += eabi_compat.c
Stefan Reinauerff7c8e82013-05-29 13:12:20 -070058bootblock-y += memset.S
Stefan Reinauerff7c8e82013-05-29 13:12:20 -070059bootblock-y += memcpy.S
Gabe Black7a6651c2013-07-07 14:15:22 -070060bootblock-y += memmove.S
Gabe Black169c0df2013-10-08 18:24:10 -070061bootblock-y += div0.c
Furquan Shaikhd653ae82014-06-24 15:21:03 -070062bootblock-y += clock.c
Stefan Reinauerff7c8e82013-05-29 13:12:20 -070063
Aaron Durbin52a530d2015-05-08 15:47:00 -050064$(objcbfs)/bootblock.debug: $$(bootblock-objs)
Stefan Reinauer52db0b92012-12-07 17:15:04 -080065 @printf " LINK $(subst $(obj)/,,$(@))\n"
Aaron Durbind4dd44c2015-09-06 10:15:17 -050066 $(LD_bootblock) $(LDFLAGS_bootblock) -o $@ -L$(obj) -T $(obj)/mainboard/$(MAINBOARDDIR)/memlayout.bootblock.ld --whole-archive --start-group $(filter-out %.ld,$(bootblock-objs)) --end-group
Stefan Reinauer52db0b92012-12-07 17:15:04 -080067
Gabe Black51edd542013-09-30 23:00:33 -070068endif # CONFIG_ARCH_BOOTBLOCK_ARM
Furquan Shaikh99ac98f2014-04-23 10:18:48 -070069
Furquan Shaikh88ca81a2014-04-22 16:33:22 -070070###############################################################################
Daisuke Nojiribcc1d422014-06-19 19:16:24 -070071# verification stage
72###############################################################################
73
Aaron Durbin804c1392015-04-22 12:10:06 -050074ifeq ($(CONFIG_ARCH_VERSTAGE_ARM),y)
75
Aaron Durbin52a530d2015-05-08 15:47:00 -050076$(objcbfs)/verstage.debug: $(objgenerated)/libverstage.a $$(verstage-objs)
Daisuke Nojiriefddcfb2014-09-04 09:55:34 -070077 @printf " LINK $(subst $(obj)/,,$(@))\n"
Aaron Durbind4dd44c2015-09-06 10:15:17 -050078 $(LD_verstage) $(LDFLAGS_verstage) -o $@ -L$(obj) -T $(obj)/mainboard/$(MAINBOARDDIR)/memlayout.verstage.ld --whole-archive --start-group $(filter-out %.ld,$(verstage-objs)) $(objgenerated)/libverstage.a --end-group
Daisuke Nojiriefddcfb2014-09-04 09:55:34 -070079
Aaron Durbin52a530d2015-05-08 15:47:00 -050080verstage-y += boot.c
Daisuke Nojiribcc1d422014-06-19 19:16:24 -070081verstage-y += div0.c
82verstage-y += eabi_compat.c
83verstage-y += memset.S
84verstage-y += memcpy.S
85verstage-y += memmove.S
86verstage-y += stages.c
87
Aaron Durbin804c1392015-04-22 12:10:06 -050088endif # CONFIG_ARCH_VERSTAGE_ARM
89
Daisuke Nojiribcc1d422014-06-19 19:16:24 -070090###############################################################################
Furquan Shaikh88ca81a2014-04-22 16:33:22 -070091# romstage
92###############################################################################
93
Gabe Black51edd542013-09-30 23:00:33 -070094ifeq ($(CONFIG_ARCH_ROMSTAGE_ARM),y)
Furquan Shaikh99ac98f2014-04-23 10:18:48 -070095
Aaron Durbinb3847e62015-03-20 15:55:08 -050096romstage-y += boot.c
Gabe Black8b685392013-09-29 03:02:55 -070097romstage-y += stages.c
Furquan Shaikh88ca81a2014-04-22 16:33:22 -070098romstage-y += div0.c
99romstage-y += eabi_compat.c
100romstage-y += memset.S
101romstage-y += memcpy.S
102romstage-y += memmove.S
Furquan Shaikhd653ae82014-06-24 15:21:03 -0700103romstage-y += clock.c
Furquan Shaikha742ef12014-07-23 11:41:59 -0700104rmodules_arm-y += memset.S
105rmodules_arm-y += memcpy.S
106rmodules_arm-y += memmove.S
107rmodules_arm-y += eabi_compat.c
Furquan Shaikh88ca81a2014-04-22 16:33:22 -0700108
Julius Wernerec5e5e02014-08-20 15:29:56 -0700109$(objcbfs)/romstage.debug: $$(romstage-objs)
Stefan Reinauer52db0b92012-12-07 17:15:04 -0800110 @printf " LINK $(subst $(obj)/,,$(@))\n"
Aaron Durbind4dd44c2015-09-06 10:15:17 -0500111 $(LD_romstage) $(LDFLAGS_romstage) -o $@ -L$(obj) -T $(obj)/mainboard/$(MAINBOARDDIR)/memlayout.romstage.ld --whole-archive --start-group $(filter-out %.ld,$(romstage-objs)) --end-group
Stefan Reinauer52db0b92012-12-07 17:15:04 -0800112
Gabe Black51edd542013-09-30 23:00:33 -0700113endif # CONFIG_ARCH_ROMSTAGE_ARM
Furquan Shaikh88ca81a2014-04-22 16:33:22 -0700114
115###############################################################################
116# ramstage
117###############################################################################
118
Gabe Black51edd542013-09-30 23:00:33 -0700119ifeq ($(CONFIG_ARCH_RAMSTAGE_ARM),y)
Furquan Shaikh99ac98f2014-04-23 10:18:48 -0700120
Gabe Black8b685392013-09-29 03:02:55 -0700121ramstage-y += stages.c
Furquan Shaikh88ca81a2014-04-22 16:33:22 -0700122ramstage-y += div0.c
Julius Werner635ee512014-09-23 20:53:20 -0700123ramstage-$(CONFIG_COOP_MULTITASKING) += cpu.c
Furquan Shaikh88ca81a2014-04-22 16:33:22 -0700124ramstage-y += eabi_compat.c
125ramstage-y += boot.c
126ramstage-y += tables.c
127ramstage-y += memset.S
128ramstage-y += memcpy.S
129ramstage-y += memmove.S
Furquan Shaikhd653ae82014-06-24 15:21:03 -0700130ramstage-y += clock.c
Julius Wernerec5e5e02014-08-20 15:29:56 -0700131
Furquan Shaikhfbff9082014-07-22 15:59:16 -0700132rmodules_arm-y += memset.S
133rmodules_arm-y += memcpy.S
134rmodules_arm-y += memmove.S
135rmodules_arm-y += eabi_compat.c
Furquan Shaikh88ca81a2014-04-22 16:33:22 -0700136ramstage-srcs += $(wildcard src/mainboard/$(MAINBOARDDIR)/mainboard.c)
137
Julius Wernerec5e5e02014-08-20 15:29:56 -0700138$(objcbfs)/ramstage.debug: $$(ramstage-objs)
Furquan Shaikh88ca81a2014-04-22 16:33:22 -0700139 @printf " CC $(subst $(obj)/,,$(@))\n"
Aaron Durbind4dd44c2015-09-06 10:15:17 -0500140 $(LD_ramstage) $(LDFLAGS_ramstage) -o $@ -L$(obj) -T $(obj)/mainboard/$(MAINBOARDDIR)/memlayout.ramstage.ld --whole-archive --start-group $(filter-out %.ld,$(ramstage-objs)) --end-group
Furquan Shaikh88ca81a2014-04-22 16:33:22 -0700141
Gabe Black51edd542013-09-30 23:00:33 -0700142endif # CONFIG_ARCH_RAMSTAGE_ARM