blob: 5940f22de670195c7302cca717e4cbd836d72195 [file] [log] [blame]
# Copyright 2018 The Hafnium Authors.
#
# Use of this source code is governed by a BSD-style
# license that can be found in the LICENSE file or at
# https://opensource.org/licenses/BSD-3-Clause.
import("//build/toolchain/embedded.gni")
import("//build/toolchain/host.gni")
group("aem_v8a_fvp_vhe") {
deps = [ "//src:hafnium(:aem_v8a_fvp_vhe_clang)" ]
}
group("aem_v8a_fvp_vhe_ffa_v1_1") {
deps = [ "//src:hafnium(:aem_v8a_fvp_vhe_ffa_v1_1_clang)" ]
}
group("qemu_aarch64_vhe") {
deps = [ "//src:hafnium(:qemu_aarch64_vhe_clang)" ]
}
group("rpi4") {
deps = [ "//src:hafnium(:rpi4_clang)" ]
}
group("secure_aem_v8a_fvp_vhe") {
deps = [ "//src:hafnium(:secure_aem_v8a_fvp_vhe_clang)" ]
}
group("secure_qemu_aarch64") {
deps = [ "//src:hafnium(:secure_qemu_aarch64_clang)" ]
}
group("secure_tc") {
deps = [ "//src:hafnium(:secure_tc_clang)" ]
}
group("secure_rd_v3") {
deps = [ "//src:hafnium(:secure_rd_v3_clang)" ]
}
group("secure_rd_v3_cfg1") {
deps = [ "//src:hafnium(:secure_rd_v3_cfg1_clang)" ]
}
group("root") {
deps = [
":aem_v8a_fvp_vhe",
":aem_v8a_fvp_vhe_ffa_v1_1",
":qemu_aarch64_vhe",
":rpi4",
":secure_aem_v8a_fvp_vhe",
":secure_qemu_aarch64",
":secure_rd_v3",
":secure_rd_v3_cfg1",
":secure_tc",
"//src/arch/aarch64/qemuloader:bl(:qemu_aarch64_vhe_clang)",
]
}
group("test_root") {
testonly = true
deps = [
"//src:unit_tests(:host_fake_clang)",
"//test/arch(:aem_v8a_fvp_vhe_clang)",
"//test/arch(:aem_v8a_fvp_vhe_ffa_v1_1_clang)",
"//test/arch(:qemu_aarch64_vhe_clang)",
"//test/arch(:rpi4_clang)",
"//test/vmapi:partitions(:secure_aem_v8a_fvp_vhe_vm_clang)",
"//test/vmapi(:aem_v8a_fvp_vhe_ffa_v1_1_vm_clang)",
"//test/vmapi(:aem_v8a_fvp_vhe_vm_clang)",
"//test/vmapi(:qemu_aarch64_vhe_vm_clang)",
"//test/vmapi(:rpi4_vm_clang)",
"//test/vmapi/arch/aarch64/gicv3:gicv3_test(:aem_v8a_fvp_vhe_vm_clang)",
"//test/vmapi/arch/aarch64/gicv3:gicv3_test(:qemu_aarch64_vhe_vm_clang)",
]
}
# Describe each of the platforms used in this project.
host_toolchain("host_fake") {
use_platform = true
heap_pages = 60
max_cpus = 4
max_vms = 6
}
# RD (Reference Design) is a collection of resources to provide a representative
# view of typical compute subsystems that can be designed and implemented using
# specific generations of Arm IP. RD-V3 is the first RD platform with Realm
# Management Extension (RME) support.
# For more information please refer:
# https://neoverse-reference-design.docs.arm.com/en/latest/platforms/rdv3.html
aarch64_toolchains("secure_rd_v3") {
cpu = "cortex-a57"
origin_address = "0xF9000000"
boot_flow = "//src/boot_flow:spmc"
console = "//src/arch/aarch64/pl011"
iommu = "//src/iommu:absent"
memory_protect = "//src/arch/aarch64/memory_protect:memory_protect"
gic_version = 4
gicd_base_address = "0x30000000"
gicr_base_address = "0x301C0000"
gicr_frames = 16
heap_pages = 180
max_cpus = 16
max_vms = 16
toolchain_args = {
ffa_role = "//src/ffa:spmc"
plat_psci = "//src/arch/aarch64/plat/psci:spmc"
plat_interrupts = "//src/arch/aarch64/plat/interrupts:gicv3"
secure_world = "1"
pl011_base_address = "0x2A410000"
enable_mte = "1"
plat_log_level = "LOG_LEVEL_INFO"
plat_num_virtual_interrupts_ids = 1024
}
}
aarch64_toolchains("secure_rd_v3_cfg1") {
cpu = "cortex-a57"
origin_address = "0xF9000000"
boot_flow = "//src/boot_flow:spmc"
console = "//src/arch/aarch64/pl011"
iommu = "//src/iommu:absent"
memory_protect = "//src/arch/aarch64/memory_protect:memory_protect"
gic_version = 4
gicd_base_address = "0x30000000"
gicr_base_address = "0x30100000"
gicr_frames = 8
heap_pages = 180
max_cpus = 8
max_vms = 8
toolchain_args = {
ffa_role = "//src/ffa:spmc"
plat_psci = "//src/arch/aarch64/plat/psci:spmc"
plat_interrupts = "//src/arch/aarch64/plat/interrupts:gicv3"
secure_world = "1"
pl011_base_address = "0x2A410000"
enable_mte = "1"
plat_log_level = "LOG_LEVEL_INFO"
plat_num_virtual_interrupts_ids = 1024
}
}
aarch64_toolchains("secure_aem_v8a_fvp_vhe") {
cpu = "cortex-a57"
origin_address = "0x06000000"
boot_flow = "//src/boot_flow:spmc"
console = "//src/arch/aarch64/pl011"
iommu = "//src/arch/aarch64/arm_smmuv3"
memory_protect = "//src/arch/aarch64/memory_protect:memory_protect"
gic_version = 3
gic_enable_espi = 1
gicd_base_address = "0x2f000000"
gicr_base_address = "0x2f100000"
gicr_frames = 8
heap_pages = 180
max_cpus = 8
max_vms = 16
branch_protection = "standard"
toolchain_args = {
ffa_role = "//src/ffa:spmc"
plat_psci = "//src/arch/aarch64/plat/psci:spmc"
plat_interrupts = "//src/arch/aarch64/plat/interrupts:gicv3"
secure_world = "1"
pl011_base_address = "0x1c090000"
smmu_base_address = "0x2b400000"
smmu_memory_size = "0x100000"
enable_mte = "1"
plat_log_level = "LOG_LEVEL_INFO"
plat_num_virtual_interrupts_ids = 5120
plat_partition_max_dma_devices = 1
}
}
aarch64_toolchains("aem_v8a_fvp_vhe") {
cpu = "cortex-a57"
origin_address = "0x80000000"
boot_flow = "//src/boot_flow:linux"
memory_protect = "//src/memory_protect:absent"
console = "//src/arch/aarch64/pl011"
iommu = "//src/arch/aarch64/arm_smmuv3"
gic_version = 3
gicd_base_address = "0x2f000000"
gicr_base_address = "0x2f100000"
gicr_frames = 8
heap_pages = 180
max_cpus = 8
max_vms = 16
branch_protection = "standard"
toolchain_args = {
ffa_role = "//src/ffa:hypervisor"
pl011_base_address = "0x1c090000"
smmu_base_address = "0x2b400000"
smmu_memory_size = "0x100000"
plat_log_level = "LOG_LEVEL_INFO"
}
}
aarch64_toolchains("aem_v8a_fvp_vhe_ffa_v1_1") {
cpu = "cortex-a57"
origin_address = "0x80000000"
boot_flow = "//src/boot_flow:linux"
memory_protect = "//src/memory_protect:absent"
console = "//src/arch/aarch64/pl011"
iommu = "//src/arch/aarch64/arm_smmuv3"
gic_version = 3
gicd_base_address = "0x2f000000"
gicr_base_address = "0x2f100000"
gicr_frames = 8
heap_pages = 180
max_cpus = 8
max_vms = 16
branch_protection = "standard"
toolchain_args = {
ffa_version = "0x10001"
ffa_role = "//src/ffa:hypervisor"
pl011_base_address = "0x1c090000"
smmu_base_address = "0x2b400000"
smmu_memory_size = "0x100000"
plat_log_level = "LOG_LEVEL_INFO"
}
}
aarch64_toolchains("qemu_aarch64_vhe") {
cpu = "cortex-a57"
origin_address = "0x40001000"
boot_flow = "//src/boot_flow:linux"
console = "//src/arch/aarch64/pl011"
iommu = "//src/iommu:absent"
memory_protect = "//src/memory_protect:absent"
gic_version = 3
gicd_base_address = "0x08000000"
gicr_base_address = "0x080A0000"
gicr_frames = 8
heap_pages = 180
max_cpus = 8
max_vms = 16
toolchain_args = {
ffa_role = "//src/ffa:hypervisor"
pl011_base_address = "0x09000000"
plat_log_level = "LOG_LEVEL_INFO"
}
}
aarch64_toolchains("secure_qemu_aarch64") {
cpu = "cortex-a57"
origin_address = "0xe100000"
memory_protect = "//src/memory_protect:absent"
boot_flow = "//src/boot_flow:spmc"
console = "//src/arch/aarch64/pl011"
iommu = "//src/iommu:absent"
gic_version = 3
gicd_base_address = "0x08000000"
gicr_base_address = "0x080A0000"
gicr_frames = 8
heap_pages = 180
max_cpus = 8
max_vms = 16
branch_protection = "standard"
toolchain_args = {
ffa_role = "//src/ffa:spmc"
plat_psci = "//src/arch/aarch64/plat/psci:spmc"
plat_interrupts = "//src/arch/aarch64/plat/interrupts:gicv3"
secure_world = "1"
pl011_base_address = "0x09000000"
hftest_ctrl = "//test/hftest:ctrl_uart"
enable_mte = "1"
plat_log_level = "LOG_LEVEL_INFO"
plat_num_virtual_interrupts_ids = 1024
}
}
aarch64_toolchains("rpi4") {
cpu = "cortex-a72"
origin_address = "0x80000"
boot_flow = "//src/boot_flow:linux"
console = "//project/reference/rpi4:mini_uart"
memory_protect = "//src/memory_protect:absent"
iommu = "//src/iommu:absent"
gic_version = 2
heap_pages = 180
max_cpus = 4
max_vms = 16
toolchain_args = {
ffa_role = "//src/ffa:hypervisor"
gpio_base_address = "0xfe200000"
aux_base_address = "0xfe215000"
core_freq_mhz = 500
hftest_ctrl = "//test/hftest:ctrl_uart"
plat_log_level = "LOG_LEVEL_INFO"
}
}
# The Total Compute platform provides an envelope for Arm's latest client IPs.
# Release notes and user manual for the open source software stack targeting
# the Total Compute Fixed Virtual Platform (FVP) are found here:
# https://totalcompute.docs.arm.com/en/latest/
aarch64_toolchains("secure_tc") {
cpu = "cortex-a57"
origin_address = "0xfd000000"
boot_flow = "//src/boot_flow:spmc"
console = "//src/arch/aarch64/pl011"
iommu = "//src/iommu:absent"
memory_protect = "//src/memory_protect:absent"
gic_version = 4
gicd_base_address = "0x30000000"
gicr_base_address = "0x30080000"
gicr_frames = 8
heap_pages = 180
max_cpus = 8
max_vms = 16
branch_protection = "standard"
toolchain_args = {
ffa_role = "//src/ffa:spmc"
plat_psci = "//src/arch/aarch64/plat/psci:spmc"
plat_interrupts = "//src/arch/aarch64/plat/interrupts:gicv3"
secure_world = "1"
pl011_base_address = "0x2A410000"
enable_mte = "1"
plat_log_level = "LOG_LEVEL_INFO"
plat_num_virtual_interrupts_ids = 1024
}
}