/* * Copyright (c) 2023 Arm Limited. All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause */ #pragma once // Permission bits #define PERM_GLOBAL __CHERI_CAP_PERMISSION_GLOBAL__ #define PERM_EXECUTE __CHERI_CAP_PERMISSION_PERMIT_EXECUTE__ #define PERM_LOAD __CHERI_CAP_PERMISSION_PERMIT_LOAD__ #define PERM_STORE __CHERI_CAP_PERMISSION_PERMIT_STORE__ #define PERM_LOAD_CAP __CHERI_CAP_PERMISSION_PERMIT_LOAD_CAPABILITY__ #define PERM_STORE_CAP __CHERI_CAP_PERMISSION_PERMIT_STORE_CAPABILITY__ #define PERM_STORE_LOCAL_CAP __CHERI_CAP_PERMISSION_PERMIT_STORE_LOCAL__ #define PERM_SEAL __CHERI_CAP_PERMISSION_PERMIT_SEAL__ #define PERM_UNSEAL __CHERI_CAP_PERMISSION_PERMIT_UNSEAL__ #define PERM_SYS_REG __CHERI_CAP_PERMISSION_ACCESS_SYSTEM_REGISTERS__ #define PERM_EXECUTIVE __ARM_CAP_PERMISSION_EXECUTIVE__ #define PERM_MUTABLE_LOAD __ARM_CAP_PERMISSION_MUTABLE_LOAD__ #define PERM_CMPT_ID __ARM_CAP_PERMISSION_COMPARTMENT_ID__ #define PERM_CAP_INVOKE __ARM_CAP_PERMISSION_BRANCH_SEALED_PAIR__ #define PERM_USER_0 (1 << 2) #define PERM_USER_1 (1 << 3) #define PERM_USER_2 (1 << 4) #define PERM_USER_3 (1 << 5) #define PERM_VMEM PERM_USER_0 // Permission groups #define READ_CAP_PERMS (PERM_LOAD | PERM_LOAD_CAP | PERM_MUTABLE_LOAD) #define WRITE_CAP_PERMS (PERM_STORE | PERM_STORE_CAP | PERM_STORE_LOCAL_CAP) #define EXEC_CAP_PERMS (PERM_EXECUTE | PERM_EXECUTIVE | PERM_SYS_REG)