cheri-security / MorelloLinux / exampleCode / src / util / perms.h
perms.h
Raw
/*
 * 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)