| #
338dbe2f |
| 22-Feb-2023 |
Manish Pandey <manish.pandey2@arm.com> |
Merge changes I51c13c52,I3358c51e into integration
* changes: build: always prefix section names with `.` build: communicate correct page size to linker
|
| #
da04341e |
| 14-Feb-2023 |
Chris Kay <chris.kay@arm.com> |
build: always prefix section names with `.`
Some of our specialized sections are not prefixed with the conventional period. The compiler uses input section names to derive certain other section name
build: always prefix section names with `.`
Some of our specialized sections are not prefixed with the conventional period. The compiler uses input section names to derive certain other section names (e.g. `.rela.text`, `.relacpu_ops`), and these can be difficult to select in linker scripts when there is a lack of a delimiter.
This change introduces the period prefix to all specialized section names.
BREAKING-CHANGE: All input and output linker section names have been prefixed with the period character, e.g. `cpu_ops` -> `.cpu_ops`.
Change-Id: I51c13c5266d5975fbd944ef4961328e72f82fc1c Signed-off-by: Chris Kay <chris.kay@arm.com>
show more ...
|
| #
683bb4d7 |
| 06-Nov-2021 |
André Przywara <andre.przywara@arm.com> |
Merge changes from topic "arm_fpga_auto" into integration
* changes: feat(arm_fpga): write UART baud base clock frequency into DTB feat(arm_fpga): query PL011 to learn system frequency refacto
Merge changes from topic "arm_fpga_auto" into integration
* changes: feat(arm_fpga): write UART baud base clock frequency into DTB feat(arm_fpga): query PL011 to learn system frequency refactor(arm_fpga): move command line code into separate function fix(fdt): avoid output on missing DT property feat(arm_fpga): add ITS autodetection feat(arm_fpga): determine GICR base by probing feat(gicv3): introduce GIC component identification feat(libfdt): also allow changing base address fix(arm_fpga): avoid re-linking from executable ELF file
show more ...
|
| #
a67ac764 |
| 04-Nov-2021 |
Andre Przywara <andre.przywara@arm.com> |
fix(arm_fpga): avoid re-linking from executable ELF file
When we build the convenience firmware package file for the Arm FPGA boards (bl31.axf), we combine trampolines, the DTB and the actual BL31 c
fix(arm_fpga): avoid re-linking from executable ELF file
When we build the convenience firmware package file for the Arm FPGA boards (bl31.axf), we combine trampolines, the DTB and the actual BL31 code into one ELF file, which is more a "container with load addresses" than an actual executable. So far ld was fine with us using bl31.elf as an input file, but binutils 2.35 changed that and complains about taking an *executable* ELF file as in *input* to the linker: ----------------- aarch64-none-elf-ld.bfd: cannot use executable file 'build/arm_fpga/debug/./bl31/bl31.elf' as input to a link -----------------
Fortunately we don't need the actual BL31 ELF file for *that* part of the linking, so can use the just created bl31.bin binary version of it. Actually that shrinks the file, as we needlessly included the .BSS section in the final file before.
Using the binary works with both older and newer toolchains versions, so let's do this unconditionally.
Change-Id: Ib7e697f8363499123f7cb860f118f182d0830768 Signed-off-by: Andre Przywara <andre.przywara@arm.com>
show more ...
|
| #
c3908910 |
| 04-Oct-2021 |
André Przywara <andre.przywara@arm.com> |
Merge changes from topic "gic-700-auto" into integration
* changes: fix(arm_fpga): streamline generated axf file feat(arm_fpga): add kernel trampoline
|
| #
9177e4fd |
| 20-Aug-2021 |
Andre Przywara <andre.przywara@arm.com> |
fix(arm_fpga): streamline generated axf file
For convenience we let the build system generate an ELF file (named bl31.axf), containing all the trampolines, BL31 code and the DTB in one file. This ca
fix(arm_fpga): streamline generated axf file
For convenience we let the build system generate an ELF file (named bl31.axf), containing all the trampolines, BL31 code and the DTB in one file. This can be fed directly into the FPGA payload tool, and it will load the bits at the right addresses. Since this ELF file is more used as a "container with load addresses", there is no need for normal ELF features like alignment or a symbol table.
Remove unnecessary sections from that output file, by doing a static "link", dropping the NOBITS stacks section, and by adding "-n" to the linker command line (to avoid page alignment). This trims the generated .axf file, and makes it smaller.
Change-Id: I5768543101d667fb4a3b70e60b08cfe970d2a2b6 Signed-off-by: Andre Przywara <andre.przywara@arm.com>
show more ...
|
| #
de9fdb9b |
| 14-May-2021 |
Andre Przywara <andre.przywara@arm.com> |
feat(arm_fpga): add kernel trampoline
The arm64 Linux kernel needed to be loaded at a certain offset within any 2MB aligned region; this value was configured at compile time and stored in the Linux
feat(arm_fpga): add kernel trampoline
The arm64 Linux kernel needed to be loaded at a certain offset within any 2MB aligned region; this value was configured at compile time and stored in the Linux kernel image header. The default value was always 512KiB, so this is the value we use in the TF-A build system for the kernel load address. However the whole scheme around the TEXT_OFFSET changed in Linux v5.8: Linux kernels became fully relocatable, so this value is largely ignored now, and its default value changed to 0. The only remainder is a warning message at boot time in case there is a mismatch: [Firmware Bug]: Kernel image misaligned at boot, please fix your bootloader!
To avoid this warning, and to make TF-A Linux kernel boot protocol compliant, we should load newer kernels to offset 0 of a 2 MB region. This can be done by the user at FPGA boot time, but BL31 needs to know about this address. As we can't change the build default to 0 without breaking older kernels, we should try to make a build dealing with both versions:
This patch introduces a small trampoline code, which gets loaded at 512KB of DRAM, and branches up to 2MB. If users load their newer kernels at 2MB, this trampoline will cover them. In case an older kernel is loaded at 512KB, it will overwrite this trampoline code, so it would still work.
Change-Id: If49ca86f5dca380036caf2555349748722901277 Signed-off-by: Andre Przywara <andre.przywara@arm.com>
show more ...
|
| #
2173b3e0 |
| 30-Sep-2020 |
André Przywara <andre.przywara@arm.com> |
Merge changes from topic "fpga_generic" into integration
* changes: arm_fpga: Add platform documentation arm_fpga: Add post-build linker script arm_fpga: Add ROM trampoline arm_fpga: Add dev
Merge changes from topic "fpga_generic" into integration
* changes: arm_fpga: Add platform documentation arm_fpga: Add post-build linker script arm_fpga: Add ROM trampoline arm_fpga: Add devicetree file arm_fpga: Remove SPE PMU DT node if SPE is not available arm_fpga: Adjust GICR size in DT to match number of cores fdt: Add function to adjust GICv3 redistributor size drivers: arm: gicv3: Allow detecting number of cores
show more ...
|
| #
01301b11 |
| 16-Sep-2020 |
Andre Przywara <andre.przywara@arm.com> |
arm_fpga: Add post-build linker script
For the Arm Ltd. FPGAs to run, we need to load several payloads into the FPGA's memory: - Some trampoline code at address 0x0, to jump to BL31's entry point. -
arm_fpga: Add post-build linker script
For the Arm Ltd. FPGAs to run, we need to load several payloads into the FPGA's memory: - Some trampoline code at address 0x0, to jump to BL31's entry point. - The actual BL31 binary at the beginning of DRAM. - The (generic) DTB image to describe the hardware. - The actual non-secure payloads (kernel, ramdisks, ...)
The latter is application specific, but the first three blobs are rather generic. Since the uploader tool supports ELF binaries, it seems helpful to combine these three images into one .axf file, as this also simplifies the command line.
Add a post-build linker script, that combines those three bits into one ELF file, together with their specific load addresses. Include a call to "ld" with this linker script in the platform Makefile, so it will be build automatically. The result will be called "bl31.axf".
Change-Id: I4a90da16fa1e0e83b51d19e5b1daf61f5a0bbfca Signed-off-by: Andre Przywara <andre.przywara@arm.com>
show more ...
|