1/* 2 * Copyright 2014, General Dynamics C4 Systems 3 * 4 * SPDX-License-Identifier: GPL-2.0-only 5 */ 6 7#pragma once 8 9/* This file contains useful macros for assembly code. */ 10 11#ifdef __ASSEMBLER__ 12 13#define SCTLR(reg) p15, 0, reg, c1, c0, 0 14#define CLIDR(reg) p15, 1, reg, c0, c0, 1 15#define TTBR0(reg) p15, 0, reg, c2, c0, 0 16#define TTBCR(reg) p15, 0, reg, c2, c0, 2 17#define DACR(reg) p15, 0, reg, c3, c0, 0 18#define IIALL(reg) p15, 0, reg, c7, c5, 0 19#define BPIALL(reg) p15, 0, reg, c7, c5, 6 20#define DTLBIALL(reg) p15, 0, reg, c8, c6, 0 21#define TLBIALL(reg) p15, 0, reg, c8, c7, 0 22#define DTLBIASID(reg) p15, 0, reg, c8, c6, 2 23#define TLBIASID(reg) p15, 0, reg, c8, c7, 2 24#define CONTEXTIDR(reg) p15, 0, reg, c13, c0, 1 25 26/* Processor mode encodings */ 27#define PMODE_USER 0x10 28#define PMODE_FIQ 0x11 29#define PMODE_IRQ 0x12 30#define PMODE_SUPERVISOR 0x13 31#define PMODE_ABORT 0x17 32#define PMODE_UNDEFINED 0x1b 33#define PMODE_SYSTEM 0x1f 34 35/* Processor exception mask bits */ 36#define PMASK_ASYNC_ABORT (1 << 8) 37#define PMASK_IRQ (1 << 7) 38#define PMASK_FIRQ (1 << 6) 39 40#define CPSR_SUPERVISOR ( PMASK_FIRQ \ 41 | PMASK_IRQ \ 42 | PMASK_ASYNC_ABORT \ 43 | PMODE_SUPERVISOR ) 44 45#else /* !__ASSEMBLER__ */ 46#warning "Including assembly-specific header in C code" 47#endif 48 49