blob: ce48250e67ea3829f9c364533e724a8aafd547a6 [file] [log] [blame]
Radoslaw Biernacki558a6f42018-05-17 22:52:49 +02001#
Marcin Juszkiewiczc681d022023-05-10 10:03:01 +02002# Copyright (c) 2019-2023, Linaro Limited and Contributors. All rights reserved.
Radoslaw Biernacki558a6f42018-05-17 22:52:49 +02003#
4# SPDX-License-Identifier: BSD-3-Clause
5#
6
Marcin Juszkiewicz886688d2023-07-24 21:08:16 +02007PLAT_QEMU_PATH := plat/qemu/qemu_sbsa
8PLAT_QEMU_COMMON_PATH := plat/qemu/common
9
Marcin Juszkiewicza63cdc72023-07-24 20:56:29 +020010include plat/qemu/common/common.mk
Chris Kay1fa05da2021-09-28 15:52:14 +010011
Radoslaw Biernacki558a6f42018-05-17 22:52:49 +020012CRASH_REPORTING := 1
13
Masahisa Kojima6a2426a2020-06-11 21:46:44 +090014ifeq (${SPM_MM},1)
15NEED_BL32 := yes
16EL3_EXCEPTION_HANDLING := 1
17GICV2_G0_FOR_EL3 := 1
18endif
19
Radoslaw Biernacki558a6f42018-05-17 22:52:49 +020020# Enable new version of image loading on QEMU platforms
21LOAD_IMAGE_V2 := 1
22
Chen Baozi226f4c82023-02-22 06:58:39 +000023CTX_INCLUDE_AARCH32_REGS := 0
24ifeq (${CTX_INCLUDE_AARCH32_REGS}, 1)
25$(error "This is an AArch64-only port; CTX_INCLUDE_AARCH32_REGS must be disabled")
26endif
27
Radoslaw Biernacki558a6f42018-05-17 22:52:49 +020028ifeq ($(NEED_BL32),yes)
29$(eval $(call add_define,QEMU_LOAD_BL32))
30endif
31
Radoslaw Biernacki558a6f42018-05-17 22:52:49 +020032PLAT_BL_COMMON_SOURCES := ${PLAT_QEMU_COMMON_PATH}/qemu_common.c \
33 ${PLAT_QEMU_COMMON_PATH}/qemu_console.c \
34 drivers/arm/pl011/${ARCH}/pl011_console.S
35
Chen Baozi226f4c82023-02-22 06:58:39 +000036# Treating this as a memory-constrained port for now
37USE_COHERENT_MEM := 0
38
39# This can be overridden depending on CPU(s) used in the QEMU image
40HW_ASSISTED_COHERENCY := 1
41
Radoslaw Biernacki558a6f42018-05-17 22:52:49 +020042include lib/xlat_tables_v2/xlat_tables.mk
43PLAT_BL_COMMON_SOURCES += ${XLAT_TABLES_LIB_SRCS}
44
45BL1_SOURCES += drivers/io/io_semihosting.c \
46 drivers/io/io_storage.c \
47 drivers/io/io_fip.c \
48 drivers/io/io_memmap.c \
49 lib/semihosting/semihosting.c \
50 lib/semihosting/${ARCH}/semihosting_call.S \
51 ${PLAT_QEMU_COMMON_PATH}/qemu_io_storage.c \
52 ${PLAT_QEMU_COMMON_PATH}/${ARCH}/plat_helpers.S \
53 ${PLAT_QEMU_COMMON_PATH}/qemu_bl1_setup.c
54
Chen Baozi226f4c82023-02-22 06:58:39 +000055BL1_SOURCES += ${QEMU_CPU_LIBS}
Radoslaw Biernacki558a6f42018-05-17 22:52:49 +020056
57BL2_SOURCES += drivers/io/io_semihosting.c \
58 drivers/io/io_storage.c \
59 drivers/io/io_fip.c \
60 drivers/io/io_memmap.c \
61 lib/semihosting/semihosting.c \
62 lib/semihosting/${ARCH}/semihosting_call.S \
63 ${PLAT_QEMU_COMMON_PATH}/qemu_io_storage.c \
64 ${PLAT_QEMU_COMMON_PATH}/${ARCH}/plat_helpers.S \
65 ${PLAT_QEMU_COMMON_PATH}/qemu_bl2_setup.c \
66 common/fdt_fixup.c \
67 $(LIBFDT_SRCS)
68ifeq (${LOAD_IMAGE_V2},1)
69BL2_SOURCES += ${PLAT_QEMU_COMMON_PATH}/qemu_bl2_mem_params_desc.c \
70 ${PLAT_QEMU_COMMON_PATH}/qemu_image_load.c \
71 common/desc_image_load.c
72endif
73
Alexei Fedorova6ea06f2020-03-23 18:45:17 +000074# Include GICv3 driver files
75include drivers/arm/gic/v3/gicv3.mk
76
77QEMU_GIC_SOURCES := ${GICV3_SOURCES} \
Marcin Juszkiewicz1e67b1b2023-05-15 11:07:54 +020078 plat/common/plat_gicv3.c
Radoslaw Biernacki558a6f42018-05-17 22:52:49 +020079
Chen Baozi226f4c82023-02-22 06:58:39 +000080BL31_SOURCES += ${QEMU_CPU_LIBS} \
Andrew Walbran61cbd412020-01-15 14:18:04 +000081 lib/semihosting/semihosting.c \
82 lib/semihosting/${ARCH}/semihosting_call.S \
Radoslaw Biernacki558a6f42018-05-17 22:52:49 +020083 plat/common/plat_psci_common.c \
Marcin Juszkiewicz1e67b1b2023-05-15 11:07:54 +020084 ${PLAT_QEMU_PATH}/sbsa_gic.c \
Graeme Gregory2fb5ed42020-08-28 18:03:35 +010085 ${PLAT_QEMU_PATH}/sbsa_pm.c \
Marcin Juszkiewiczc681d022023-05-10 10:03:01 +020086 ${PLAT_QEMU_PATH}/sbsa_sip_svc.c \
Graeme Gregory5565ede2020-08-28 16:37:02 +010087 ${PLAT_QEMU_PATH}/sbsa_topology.c \
Radoslaw Biernacki558a6f42018-05-17 22:52:49 +020088 ${PLAT_QEMU_COMMON_PATH}/aarch64/plat_helpers.S \
89 ${PLAT_QEMU_COMMON_PATH}/qemu_bl31_setup.c \
Masahisa Kojima74c87a42020-09-23 16:52:59 +090090 common/fdt_fixup.c \
Radoslaw Biernacki558a6f42018-05-17 22:52:49 +020091 ${QEMU_GIC_SOURCES}
Chris Kay1fa05da2021-09-28 15:52:14 +010092
93BL31_SOURCES += ${FDT_WRAPPERS_SOURCES}
94
Masahisa Kojima6a2426a2020-06-11 21:46:44 +090095ifeq (${SPM_MM},1)
96 BL31_SOURCES += ${PLAT_QEMU_COMMON_PATH}/qemu_spm.c
97endif
Radoslaw Biernacki558a6f42018-05-17 22:52:49 +020098
99SEPARATE_CODE_AND_RODATA := 1
100ENABLE_STACK_PROTECTOR := 0
101ifneq ($(ENABLE_STACK_PROTECTOR), 0)
102 PLAT_BL_COMMON_SOURCES += ${PLAT_QEMU_COMMON_PATH}/qemu_stack_protector.c
103endif
104
105MULTI_CONSOLE_API := 1
106
107# Disable the PSCI platform compatibility layer
108ENABLE_PLAT_COMPAT := 0
109
110# Use known base for UEFI if not given from command line
111# By default BL33 is at FLASH1 base
112PRELOADED_BL33_BASE ?= 0x10000000
113
114# Qemu SBSA plafrom only support SEC_SRAM
115BL32_RAM_LOCATION_ID = SEC_SRAM_ID
116$(eval $(call add_define,BL32_RAM_LOCATION_ID))
117
Andrew Walbran74464d52020-01-15 14:11:31 +0000118# Don't have the Linux kernel as a BL33 image by default
119ARM_LINUX_KERNEL_AS_BL33 := 0
120$(eval $(call assert_boolean,ARM_LINUX_KERNEL_AS_BL33))
121$(eval $(call add_define,ARM_LINUX_KERNEL_AS_BL33))
122
123ARM_PRELOADED_DTB_BASE := PLAT_QEMU_DT_BASE
124$(eval $(call add_define,ARM_PRELOADED_DTB_BASE))
125
Marcin Juszkiewicz9bff7ce2022-11-16 14:47:51 +0100126# Later QEMU versions support SME and SVE.
Jayanth Dodderi Chidanandfc259b62023-03-31 10:42:10 +0100127ENABLE_SVE_FOR_NS := 2
128ENABLE_SME_FOR_NS := 2
Marcin Juszkiewiczc5986922023-02-14 09:27:59 +0100129
130# QEMU 7.2+ has support for FGT and Linux needs it enabled to boot on max
131ENABLE_FEAT_FGT := 2