blob: 624c0e7321ff5a6ccb7fa389d2c696d267519011 [file] [log] [blame]
Andrew Walbrandc8ad202019-03-07 15:49:28 +00001# Copyright 2018 The Hafnium Authors.
Andrew Scull2d527c22018-11-27 14:21:08 +00002#
Andrew Walbran23417d82020-06-17 14:44:22 +01003# Use of this source code is governed by a BSD-style
4# license that can be found in the LICENSE file or at
5# https://opensource.org/licenses/BSD-3-Clause.
Andrew Scull2d527c22018-11-27 14:21:08 +00006
7import("//build/toolchain/embedded.gni")
8import("//build/toolchain/host.gni")
9
Andrew Scull2d527c22018-11-27 14:21:08 +000010group("root") {
11 deps = [
12 "//src:hafnium(:aem_v8a_fvp_clang)",
David Brazdilc702a032020-01-31 15:44:11 +000013 "//src:hafnium(:android_aarch64_clang)",
Andrew Scull2d527c22018-11-27 14:21:08 +000014 "//src:hafnium(:qemu_aarch64_clang)",
David Brazdil3d7b88b2019-07-22 17:19:35 +010015 "//src:hafnium(:rpi4_clang)",
Jose Marinho69cd27d2019-10-17 15:51:31 +010016 "//src:hafnium(:secure_aem_v8a_fvp_clang)",
Arunachalam Ganapathyf20727f2020-04-28 20:23:13 +010017 "//src:hafnium(:secure_tc0_clang)",
Andrew Walbran92627a82020-01-17 10:52:44 +000018 "//src/arch/aarch64/qemuloader:bl(:qemu_aarch64_clang)",
Andrew Scull2d527c22018-11-27 14:21:08 +000019 ]
20}
21
22group("test_root") {
23 testonly = true
24
25 deps = [
26 "//src:unit_tests(:host_fake_clang)",
Andrew Walbranfd379392019-03-14 17:45:04 +000027 "//test/arch(:aem_v8a_fvp_clang)",
Andrew Scull75da2d12018-12-09 21:25:45 +000028 "//test/arch(:qemu_aarch64_clang)",
David Brazdil3d7b88b2019-07-22 17:19:35 +010029 "//test/arch(:rpi4_clang)",
Jose Marinho69cd27d2019-10-17 15:51:31 +010030 "//test/arch(:secure_aem_v8a_fvp_clang)",
Arunachalam Ganapathyf20727f2020-04-28 20:23:13 +010031 "//test/arch(:secure_tc0_clang)",
Andrew Walbranb1457602019-05-13 16:43:57 +010032 "//test/linux(:aem_v8a_fvp_vm_clang)",
33 "//test/linux(:qemu_aarch64_vm_clang)",
Andrew Walbran3eeaa402019-11-01 14:48:29 +000034 "//test/linux(:rpi4_vm_clang)",
Jose Marinho69cd27d2019-10-17 15:51:31 +010035 "//test/linux(:secure_aem_v8a_fvp_vm_clang)",
Arunachalam Ganapathyf20727f2020-04-28 20:23:13 +010036 "//test/linux(:secure_tc0_vm_clang)",
Andrew Walbranb1457602019-05-13 16:43:57 +010037 "//test/vmapi(:aem_v8a_fvp_vm_clang)",
38 "//test/vmapi(:qemu_aarch64_vm_clang)",
Andrew Walbran3eeaa402019-11-01 14:48:29 +000039 "//test/vmapi(:rpi4_vm_clang)",
Jose Marinho69cd27d2019-10-17 15:51:31 +010040 "//test/vmapi(:secure_aem_v8a_fvp_vm_clang)",
Arunachalam Ganapathyf20727f2020-04-28 20:23:13 +010041 "//test/vmapi(:secure_tc0_vm_clang)",
Andrew Scull3fe24082019-09-30 15:27:23 +010042 "//test/vmapi/arch/aarch64/gicv3:gicv3_test(:aem_v8a_fvp_vm_clang)",
43 "//test/vmapi/arch/aarch64/gicv3:gicv3_test(:qemu_aarch64_vm_clang)",
Jose Marinho69cd27d2019-10-17 15:51:31 +010044 "//test/vmapi/arch/aarch64/gicv3:gicv3_test(:secure_aem_v8a_fvp_vm_clang)",
Arunachalam Ganapathyf20727f2020-04-28 20:23:13 +010045 "//test/vmapi/arch/aarch64/gicv3:gicv3_test(:secure_tc0_vm_clang)",
Andrew Scull2d527c22018-11-27 14:21:08 +000046 ]
47}
48
49# Describe each of the platforms used in this project.
50
51host_toolchain("host_fake") {
52 use_platform = true
Andrew Walbranbc737c42018-12-07 14:24:16 +000053 heap_pages = 60
Andrew Scull2d527c22018-11-27 14:21:08 +000054 max_cpus = 4
55 max_vms = 6
56}
57
Jose Marinho69cd27d2019-10-17 15:51:31 +010058aarch64_toolchains("secure_aem_v8a_fvp") {
59 cpu = "cortex-a57"
60 origin_address = "0x06000000"
Olivier Deprez59e35f72020-11-10 17:15:18 +010061 boot_flow = "//src/boot_flow:spmc"
Jose Marinho69cd27d2019-10-17 15:51:31 +010062 console = "//src/arch/aarch64/pl011"
Madhukar Pappireddyf2a1e5c2020-11-16 13:06:33 -060063 iommu = "//src/arch/aarch64/arm_smmuv3"
Jose Marinho69cd27d2019-10-17 15:51:31 +010064 gic_version = 3
65 gicd_base_address = "0x2f000000"
66 gicr_base_address = "0x2f100000"
67 heap_pages = 60
68 max_cpus = 8
69 max_vms = 16
Olivier Deprez16fc50e2021-02-16 08:59:07 +010070 branch_protection = "standard"
Jose Marinho69cd27d2019-10-17 15:51:31 +010071 toolchain_args = {
Daniel Boulby0029f482021-03-25 14:19:21 +000072 plat_ffa = "//src/arch/aarch64/plat/ffa:spmc"
Olivier Deprezcf039902021-01-25 15:32:39 +010073 plat_psci = "//src/arch/aarch64/plat/psci:spmc"
Olivier Deprezcc0eb842021-04-07 14:03:59 +020074 plat_interrupts = "//src/arch/aarch64/plat/interrupts:gicv3"
Olivier Deprez16fc50e2021-02-16 08:59:07 +010075 plat_prng = "//src/arch/aarch64/plat/prng:prng"
Jose Marinho69cd27d2019-10-17 15:51:31 +010076 secure_world = "1"
77 pl011_base_address = "0x1c090000"
J-Alves2aee94f2020-12-14 12:04:14 +000078 hftest_ctrl = "//test/hftest:ctrl_uart"
Madhukar Pappireddyf2a1e5c2020-11-16 13:06:33 -060079 smmu_base_address = "0x2b400000"
80 smmu_memory_size = "0x100000"
Jose Marinho69cd27d2019-10-17 15:51:31 +010081 }
82}
83
Andrew Walbranb1457602019-05-13 16:43:57 +010084aarch64_toolchains("aem_v8a_fvp") {
85 cpu = "cortex-a57"
Andrew Walbran65821982019-04-16 14:34:03 +010086 origin_address = "0x80000000"
David Brazdil653261a2019-09-09 18:04:33 +010087 boot_flow = "//src/boot_flow:linux"
Andrew Walbran808531e2019-05-20 14:52:45 +010088 console = "//src/arch/aarch64/pl011"
Madhukar Pappireddyf2a1e5c2020-11-16 13:06:33 -060089 iommu = "//src/arch/aarch64/arm_smmuv3"
Andrew Walbranf1aa19e2018-12-10 13:42:40 +000090 gic_version = 3
91 gicd_base_address = "0x2f000000"
92 gicr_base_address = "0x2f100000"
Andrew Walbranbc737c42018-12-07 14:24:16 +000093 heap_pages = 60
Andrew Scull2d527c22018-11-27 14:21:08 +000094 max_cpus = 8
95 max_vms = 16
Andrew Walbran808531e2019-05-20 14:52:45 +010096 toolchain_args = {
Daniel Boulby0029f482021-03-25 14:19:21 +000097 plat_ffa = "//src/arch/aarch64/plat/ffa:hypervisor"
Andrew Walbran808531e2019-05-20 14:52:45 +010098 pl011_base_address = "0x1c090000"
Madhukar Pappireddyf2a1e5c2020-11-16 13:06:33 -060099 smmu_base_address = "0x2b400000"
100 smmu_memory_size = "0x100000"
Andrew Walbran808531e2019-05-20 14:52:45 +0100101 }
Andrew Scull2d527c22018-11-27 14:21:08 +0000102}
103
Andrew Walbranb1457602019-05-13 16:43:57 +0100104aarch64_toolchains("qemu_aarch64") {
105 cpu = "cortex-a57"
Andrew Scull2d527c22018-11-27 14:21:08 +0000106 origin_address = "0x40001000"
David Brazdil653261a2019-09-09 18:04:33 +0100107 boot_flow = "//src/boot_flow:linux"
Andrew Walbran808531e2019-05-20 14:52:45 +0100108 console = "//src/arch/aarch64/pl011"
Andrew Sculle2a525d2019-12-02 12:56:06 +0000109 iommu = "//src/iommu:absent"
Andrew Walbranf1aa19e2018-12-10 13:42:40 +0000110 gic_version = 3
111 gicd_base_address = "0x08000000"
112 gicr_base_address = "0x080A0000"
Andrew Walbranbc737c42018-12-07 14:24:16 +0000113 heap_pages = 60
Andrew Scull2d527c22018-11-27 14:21:08 +0000114 max_cpus = 8
115 max_vms = 16
Andrew Walbran808531e2019-05-20 14:52:45 +0100116 toolchain_args = {
117 pl011_base_address = "0x09000000"
118 }
Andrew Scull2d527c22018-11-27 14:21:08 +0000119}
120
David Brazdil3d7b88b2019-07-22 17:19:35 +0100121aarch64_toolchains("rpi4") {
122 cpu = "cortex-a72"
123 origin_address = "0x80000"
124 boot_flow = "//src/boot_flow:linux"
125 console = "//project/reference/rpi:mini_uart"
Andrew Sculle2a525d2019-12-02 12:56:06 +0000126 iommu = "//src/iommu:absent"
David Brazdil3d7b88b2019-07-22 17:19:35 +0100127 gic_version = 2
128 heap_pages = 60
129 max_cpus = 4
130 max_vms = 16
131 toolchain_args = {
Daniel Boulby0029f482021-03-25 14:19:21 +0000132 plat_ffa = "//src/arch/aarch64/plat/ffa:hypervisor"
David Brazdil3d7b88b2019-07-22 17:19:35 +0100133 gpio_base_address = "0xfe200000"
134 aux_base_address = "0xfe215000"
135 core_freq_mhz = 500
David Brazdilb38816f2020-01-31 16:31:10 +0000136 hftest_ctrl = "//test/hftest:ctrl_uart"
David Brazdil3d7b88b2019-07-22 17:19:35 +0100137 }
138}
David Brazdilc702a032020-01-31 15:44:11 +0000139
140# Generic target which uses the Android boot flow. It is not intended to run on
141# any Android platform. It exists only to test building Android-specific code.
142aarch64_toolchains("android_aarch64") {
143 cpu = "cortex-a57"
144 origin_address = "0x0"
145 boot_flow = "//src/boot_flow:android"
146 console = "//src/arch/aarch64/pl011"
147 iommu = "//src/iommu:absent"
148 gic_version = 2
149 heap_pages = 60
150 max_cpus = 8
151 max_vms = 16
152 toolchain_args = {
153 pl011_base_address = "0x09000000"
154 }
155}
Arunachalam Ganapathyf20727f2020-04-28 20:23:13 +0100156
157# The Total Compute platform provides an envelope for all of Arm's latest IP.
158# TC0 is a reference open source software stack for the first version of the
159# Total Compute Fixed Virtual Platform (FVP). More info at:
160# https://community.arm.com/developer/tools-software/oss-platforms/w/docs/606/total-compute
Usama Arif50a4b892021-04-15 10:48:30 +0100161# https://gitlab.arm.com/arm-reference-solutions/arm-reference-solutions-docs/-/blob/master/docs/totalcompute/tc0/user-guide.rst
Arunachalam Ganapathyf20727f2020-04-28 20:23:13 +0100162#
163# Secure hafnium build for tc0 platform. This builds reference Secure Partition
164# Manager (SPM) for tc0 with Armv8.4-A Secure-EL2 extension.
165aarch64_toolchains("secure_tc0") {
166 cpu = "cortex-a57"
167 origin_address = "0xfd000000"
Olivier Deprez59e35f72020-11-10 17:15:18 +0100168 boot_flow = "//src/boot_flow:spmc"
Arunachalam Ganapathyf20727f2020-04-28 20:23:13 +0100169 console = "//src/arch/aarch64/pl011"
170 iommu = "//src/iommu:absent"
171 gic_version = 3
172 gicd_base_address = "0x30000000"
Usama Arif2c636ff2021-04-01 11:09:25 +0100173 gicr_base_address = "0x30080000"
Arunachalam Ganapathyf20727f2020-04-28 20:23:13 +0100174 heap_pages = 60
Arunachalam Ganapathy51e81572021-01-20 14:57:41 +0000175 max_cpus = 8
Arunachalam Ganapathyf20727f2020-04-28 20:23:13 +0100176 max_vms = 16
Olivier Deprez16fc50e2021-02-16 08:59:07 +0100177 branch_protection = "standard"
Arunachalam Ganapathyf20727f2020-04-28 20:23:13 +0100178 toolchain_args = {
Daniel Boulby0029f482021-03-25 14:19:21 +0000179 plat_ffa = "//src/arch/aarch64/plat/ffa:spmc"
Olivier Deprezcf039902021-01-25 15:32:39 +0100180 plat_psci = "//src/arch/aarch64/plat/psci:spmc"
Olivier Deprezcc0eb842021-04-07 14:03:59 +0200181 plat_interrupts = "//src/arch/aarch64/plat/interrupts:gicv3"
Olivier Deprez16fc50e2021-02-16 08:59:07 +0100182 plat_prng = "//src/arch/aarch64/plat/prng:prng"
Arunachalam Ganapathyf20727f2020-04-28 20:23:13 +0100183 secure_world = "1"
184 pl011_base_address = "0x7ff80000"
185 }
186}