aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree.cc
diff options
context:
space:
mode:
authorSzabolcs Nagy <szabolcs.nagy@arm.com>2022-11-15 14:08:55 +0000
committerSzabolcs Nagy <szabolcs.nagy@arm.com>2023-12-08 11:29:06 +0000
commit328c17af772207cb03740809c05ba2c3abfb86be (patch)
tree308520ab2f13ae0b4c6ec7e72b512b4914bccd96 /gcc/tree.cc
parentdbbfb52b0e9c66ee9d05b8fd17c4f44655e48463 (diff)
downloadgcc-328c17af772207cb03740809c05ba2c3abfb86be.zip
gcc-328c17af772207cb03740809c05ba2c3abfb86be.tar.gz
gcc-328c17af772207cb03740809c05ba2c3abfb86be.tar.bz2
libgcc: aarch64: Add SME runtime support
The call ABI for SME (Scalable Matrix Extension) requires a number of helper routines which are added to libgcc so they are tied to the compiler version instead of the libc version. See https://github.com/ARM-software/abi-aa/blob/main/aapcs64/aapcs64.rst#sme-support-routines The routines are in shared libgcc and static libgcc eh, even though they are not related to exception handling. This is to avoid linking a copy of the routines into dynamic linked binaries, because TPIDR2_EL0 block can be extended in the future which is better to handle in a single place per process. The support routines have to decide if SME is accessible or not. Linux tells userspace if SME is accessible via AT_HWCAP2, otherwise a new __aarch64_sme_accessible symbol was introduced that a libc can define. Due to libgcc and libc build order, the symbol availability cannot be checked so for __aarch64_sme_accessible an unistd.h feature test macro is used while such detection mechanism is not available for __getauxval so we rely on configure checks based on the target triplet. Asm helper code is added to make writing the routines easier. libgcc/ChangeLog: * config/aarch64/t-aarch64: Add sources to the build. * config/aarch64/__aarch64_have_sme.c: New file. * config/aarch64/__arm_sme_state.S: New file. * config/aarch64/__arm_tpidr2_restore.S: New file. * config/aarch64/__arm_tpidr2_save.S: New file. * config/aarch64/__arm_za_disable.S: New file. * config/aarch64/aarch64-asm.h: New file. * config/aarch64/libgcc-sme.ver: New file.
Diffstat (limited to 'gcc/tree.cc')
0 files changed, 0 insertions, 0 deletions