Path: blob/master/tools/testing/selftests/arm64/mte/mte_def.h
26296 views
/* SPDX-License-Identifier: GPL-2.0 */1/* Copyright (C) 2020 ARM Limited */23/*4* Below definitions may be found in kernel headers, However, they are5* redefined here to decouple the MTE selftests compilations from them.6*/7#ifndef SEGV_MTEAERR8#define SEGV_MTEAERR 89#endif10#ifndef SEGV_MTESERR11#define SEGV_MTESERR 912#endif13#ifndef PROT_MTE14#define PROT_MTE 0x2015#endif16#ifndef HWCAP2_MTE17#define HWCAP2_MTE (1 << 18)18#endif1920#ifndef PR_MTE_TCF_SHIFT21#define PR_MTE_TCF_SHIFT 122#endif23#ifndef PR_MTE_TCF_NONE24#define PR_MTE_TCF_NONE (0UL << PR_MTE_TCF_SHIFT)25#endif26#ifndef PR_MTE_TCF_SYNC27#define PR_MTE_TCF_SYNC (1UL << PR_MTE_TCF_SHIFT)28#endif29#ifndef PR_MTE_TCF_ASYNC30#define PR_MTE_TCF_ASYNC (2UL << PR_MTE_TCF_SHIFT)31#endif32#ifndef PR_MTE_TAG_SHIFT33#define PR_MTE_TAG_SHIFT 334#endif3536/* MTE Hardware feature definitions below. */37#define MT_TAG_SHIFT 5638#define MT_TAG_MASK 0xFUL39#define MT_FREE_TAG 0x0UL40#define MT_GRANULE_SIZE 1641#define MT_TAG_COUNT 1642#define MT_INCLUDE_TAG_MASK 0xFFFF43#define MT_EXCLUDE_TAG_MASK 0x044#define MT_ATAG_SHIFT 6045#define MT_ATAG_MASK 0xFUL4647#define MT_ALIGN_GRANULE (MT_GRANULE_SIZE - 1)48#define MT_CLEAR_TAG(x) ((x) & ~(MT_TAG_MASK << MT_TAG_SHIFT))49#define MT_SET_TAG(x, y) ((x) | (y << MT_TAG_SHIFT))50#define MT_FETCH_TAG(x) ((x >> MT_TAG_SHIFT) & (MT_TAG_MASK))51#define MT_ALIGN_UP(x) ((x + MT_ALIGN_GRANULE) & ~(MT_ALIGN_GRANULE))5253#define MT_CLEAR_ATAG(x) ((x) & ~(MT_TAG_MASK << MT_ATAG_SHIFT))54#define MT_SET_ATAG(x, y) ((x) | (((y) & MT_ATAG_MASK) << MT_ATAG_SHIFT))55#define MT_FETCH_ATAG(x) ((x >> MT_ATAG_SHIFT) & (MT_ATAG_MASK))5657#define MT_CLEAR_TAGS(x) (MT_CLEAR_ATAG(MT_CLEAR_TAG(x)))5859#define MT_PSTATE_TCO_SHIFT 2560#define MT_PSTATE_TCO_MASK ~(0x1 << MT_PSTATE_TCO_SHIFT)61#define MT_PSTATE_TCO_EN 162#define MT_PSTATE_TCO_DIS 06364#define MT_EXCLUDE_TAG(x) (1 << (x))65#define MT_INCLUDE_VALID_TAG(x) (MT_INCLUDE_TAG_MASK ^ MT_EXCLUDE_TAG(x))66#define MT_INCLUDE_VALID_TAGS(x) (MT_INCLUDE_TAG_MASK ^ (x))67#define MTE_ALLOW_NON_ZERO_TAG MT_INCLUDE_VALID_TAG(0)686970