aboutsummaryrefslogtreecommitdiff
path: root/sysdeps/unix/sysv/linux/aarch64/bits
diff options
context:
space:
mode:
authorRichard Earnshaw <rearnsha@arm.com>2020-12-21 15:03:03 +0000
committerRichard Earnshaw <rearnsha@arm.com>2020-12-21 15:25:25 +0000
commitbde4949b6b342641681a22cf6092dbc2f9d1d2c7 (patch)
treeb6cb43ddcf9bf866afc095863da036cae1d6003c /sysdeps/unix/sysv/linux/aarch64/bits
parent0d1bafdcb62187a1535618c71b840672308ba07d (diff)
downloadglibc-bde4949b6b342641681a22cf6092dbc2f9d1d2c7.tar
glibc-bde4949b6b342641681a22cf6092dbc2f9d1d2c7.tar.gz
glibc-bde4949b6b342641681a22cf6092dbc2f9d1d2c7.tar.bz2
glibc-bde4949b6b342641681a22cf6092dbc2f9d1d2c7.zip
aarch64: Add sysv specific enabling code for memory tagging
Add various defines and stubs for enabling MTE on AArch64 sysv-like systems such as Linux. The HWCAP feature bit is copied over in the same way as other feature bits. Similarly we add a new wrapper header for mman.h to define the PROT_MTE flag that can be used with mmap and related functions. We add a new field to struct cpu_features that can be used, for example, to check whether or not certain ifunc'd routines should be bound to MTE-safe versions. Finally, if we detect that MTE should be enabled (ie via the glibc tunable); we enable MTE during startup as required. Support in the Linux kernel was added in version 5.10. Reviewed-by: Szabolcs Nagy <szabolcs.nagy@arm.com>
Diffstat (limited to 'sysdeps/unix/sysv/linux/aarch64/bits')
-rw-r--r--sysdeps/unix/sysv/linux/aarch64/bits/hwcap.h1
-rw-r--r--sysdeps/unix/sysv/linux/aarch64/bits/mman.h1
2 files changed, 2 insertions, 0 deletions
diff --git a/sysdeps/unix/sysv/linux/aarch64/bits/hwcap.h b/sysdeps/unix/sysv/linux/aarch64/bits/hwcap.h
index af90d8a626..389852f1d9 100644
--- a/sysdeps/unix/sysv/linux/aarch64/bits/hwcap.h
+++ b/sysdeps/unix/sysv/linux/aarch64/bits/hwcap.h
@@ -73,3 +73,4 @@
#define HWCAP2_DGH (1 << 15)
#define HWCAP2_RNG (1 << 16)
#define HWCAP2_BTI (1 << 17)
+#define HWCAP2_MTE (1 << 18)
diff --git a/sysdeps/unix/sysv/linux/aarch64/bits/mman.h b/sysdeps/unix/sysv/linux/aarch64/bits/mman.h
index ecae046344..c5ec0aa7d0 100644
--- a/sysdeps/unix/sysv/linux/aarch64/bits/mman.h
+++ b/sysdeps/unix/sysv/linux/aarch64/bits/mman.h
@@ -24,6 +24,7 @@
arch/arm64/include/uapi/asm/mman.h. */
#define PROT_BTI 0x10
+#define PROT_MTE 0x20
#include <bits/mman-map-flags-generic.h>