mirror of
https://github.com/ARM-software/arm-trusted-firmware.git
synced 2025-04-17 01:54:22 +00:00
arm_fpga: Add ROM trampoline
The application cores of the FPGAs used in Arm Ltd. start execution at address 0x0. This is the location of some (emulated) ROM area (which can be written to by the uploading tool). Since the arm_fpga port is configured to run from DRAM, we load BL31 to the beginning of DRAM (mapped at 2GB). This requires some small trampoline code in the "ROM" to jump to the BL31 entry point. To avoid some extra magic binary, add a tiny assembly file with that trivial jump instruction to the tree, so this binary can be created alongside BL31. Change-Id: I9e4439fc0f093fa24dd49a8377c9edb030fbb477 Signed-off-by: Andre Przywara <andre.przywara@arm.com>
This commit is contained in:
parent
b48883c79a
commit
f45c6d8623
2 changed files with 26 additions and 0 deletions
|
@ -100,4 +100,6 @@ BL31_SOURCES += common/fdt_wrappers.c \
|
|||
${FPGA_CPU_LIBS} \
|
||||
${FPGA_GIC_SOURCES}
|
||||
|
||||
$(eval $(call MAKE_S,$(BUILD_PLAT),plat/arm/board/arm_fpga/rom_trampoline.S,31))
|
||||
|
||||
all: bl31
|
||||
|
|
24
plat/arm/board/arm_fpga/rom_trampoline.S
Normal file
24
plat/arm/board/arm_fpga/rom_trampoline.S
Normal file
|
@ -0,0 +1,24 @@
|
|||
/*
|
||||
* Copyright (c) 2020, ARM Limited. All rights reserved.
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*
|
||||
* The Arm Ltd. FPGA images start execution at address 0x0, which is
|
||||
* mapped at an (emulated) ROM image. The payload uploader can write to
|
||||
* this memory, but write access by the CPU cores is prohibited.
|
||||
*
|
||||
* Provide a simple trampoline to start BL31 execution at the actual
|
||||
* load address. We put the DTB address in x0, so any code in DRAM could
|
||||
* make use of that information (not yet used in BL31 right now).
|
||||
*/
|
||||
|
||||
#include <asm_macros.S>
|
||||
#include <common/bl_common.ld.h>
|
||||
|
||||
.text
|
||||
.global _start
|
||||
|
||||
_start:
|
||||
mov_imm x1, BL31_BASE /* beginning of DRAM */
|
||||
mov_imm x0, FPGA_PRELOADED_DTB_BASE
|
||||
br x1
|
Loading…
Add table
Reference in a new issue