public inbox for gcc-cvs@sourceware.org
help / color / mirror / Atom feed
* [gcc(refs/vendors/ARM/heads/morello)] morello: Tidy up defines and enable Morello-specific ones in Hybrid
@ 2022-05-05 12:09 Matthew Malcomson
0 siblings, 0 replies; only message in thread
From: Matthew Malcomson @ 2022-05-05 12:09 UTC (permalink / raw)
To: gcc-cvs
https://gcc.gnu.org/g:46a374536a91244b517b37e0a36c69800051739a
commit 46a374536a91244b517b37e0a36c69800051739a
Author: Stam Markianos-Wright <stam.markianos-wright@arm.com>
Date: Fri Apr 29 10:59:32 2022 +0100
morello: Tidy up defines and enable Morello-specific ones in Hybrid
This patch resolves a couple of the MORELLO TODOs we had in the codebase to
remove the Morello defines from fake-capability compilation.
It also removes `__CHERI_CAP_PERMISSION_PERMIT_CCALL__` to match the ACLE
and ensures that the remaining ones are also defined when -march=morello.
This now matches clang behaviour.
Diff:
---
gcc/c-family/c-cppbuiltin.c | 14 +++++---------
gcc/config/aarch64/aarch64-c.c | 22 +++-------------------
2 files changed, 8 insertions(+), 28 deletions(-)
diff --git a/gcc/c-family/c-cppbuiltin.c b/gcc/c-family/c-cppbuiltin.c
index 8e4c338b8b0..a6c912dc352 100644
--- a/gcc/c-family/c-cppbuiltin.c
+++ b/gcc/c-family/c-cppbuiltin.c
@@ -1457,15 +1457,8 @@ c_cpp_builtins (cpp_reader *pfile)
builtin_define_type_sizeof ("__SIZEOF_PTRDIFF_T__",
unsigned_ptrdiff_type_node);
- /* MORELLO TODO
- For the moment we're going to predefine these macros when compiling for
- fake-capability.
- This should not stay for very long.
- It's just here to help Carlos test the glibc build system in the time
- before we have pure capability codegen.
- Once we're getting pure-capability code running we should make these
- predefined macros only available for that. */
- if (targetm.capability_mode().exists())
+ if (targetm.capability_mode ().exists ()
+ && targetm.capabilities_in_hardware ())
{
/* N.b. I've not found these values defined in a document anywhere.
The values were found by looking at the assembly after using them in
@@ -1482,6 +1475,9 @@ c_cpp_builtins (cpp_reader *pfile)
builtin_define_with_int_value ("__CHERI_CAP_PERMISSION_PERMIT_EXECUTE__", 32768);
builtin_define_with_int_value ("__CHERI_CAP_PERMISSION_PERMIT_STORE__", 65536);
builtin_define_with_int_value ("__CHERI_CAP_PERMISSION_PERMIT_LOAD__", 131072);
+
+ if (targetm.capability_mode ().require () == Pmode)
+ cpp_define (pfile, "__CHERI_PURE_CAPABILITY__");
}
/* A straightforward target hook doesn't work, because of problems
diff --git a/gcc/config/aarch64/aarch64-c.c b/gcc/config/aarch64/aarch64-c.c
index 72036213cc5..4798d80407e 100644
--- a/gcc/config/aarch64/aarch64-c.c
+++ b/gcc/config/aarch64/aarch64-c.c
@@ -140,32 +140,16 @@ aarch64_update_cpp_builtins (cpp_reader *pfile)
aarch64_def_or_undef (TARGET_CAPABILITY_ANY,
"__GCC_ARM_CAPABILITY_ANY", pfile);
- /* MORELLO TODO
- For the moment we're going to predefine these macros when compiling for
- fake-capability.
- This should not stay for very long.
- It's just here to help Carlos test the glibc build system in the time
- before we have pure capability codegen.
- Once we're getting pure-capability code running we should make these
- predefined macros only available for that. */
aarch64_def_or_undef (AARCH64_ISA_C64, "__ARM_FEATURE_C64", pfile);
- if (TARGET_CAPABILITY_PURE || TARGET_CAPABILITY_FAKE)
+
+ if (TARGET_MORELLO)
{
- /* N.b. I've only found the values for __ARM_CAP* defined in a document.
- The others were found by looking at the assembly after using them in
- the compiler explorer. */
- cpp_undef (pfile, "__CHERI_CAP_PERMISSION_PERMIT_CCALL__");
+ /* These defines are Morello-specific, as per the Morello ACLE. */
builtin_define_with_int_value ("__ARM_CAP_PERMISSION_EXECUTIVE__", 2);
builtin_define_with_int_value ("__ARM_CAP_PERMISSION_MUTABLE_LOAD__", 64);
builtin_define_with_int_value ("__ARM_CAP_PERMISSION_COMPARTMENT_ID__", 128);
builtin_define_with_int_value ("__ARM_CAP_PERMISSION_BRANCH_SEALED_PAIR__", 256);
}
- /* MORELLO TODO I guess there should be a hook to give the information of
- whether we're targetting a pure capability ABI or not the frontend so that
- `__CHERI_PURE_CAPABILITY__` can be defined in the `c_cpp_builtins` in the
- C frontend code rather than in the backend. */
- aarch64_def_or_undef (TARGET_CAPABILITY_PURE, "__CHERI_PURE_CAPABILITY__",
- pfile);
aarch64_def_or_undef (TARGET_CRYPTO, "__ARM_FEATURE_CRYPTO", pfile);
aarch64_def_or_undef (TARGET_SIMD_RDMA, "__ARM_FEATURE_QRDMX", pfile);
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2022-05-05 12:09 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-05-05 12:09 [gcc(refs/vendors/ARM/heads/morello)] morello: Tidy up defines and enable Morello-specific ones in Hybrid Matthew Malcomson
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).