/* * Copyright 2014, General Dynamics C4 Systems * * SPDX-License-Identifier: GPL-2.0-only */ #pragma once /* This file contains useful macros for assembly code. */ #ifdef __ASSEMBLER__ #define SCTLR(reg) p15, 0, reg, c1, c0, 0 #define CLIDR(reg) p15, 1, reg, c0, c0, 1 #define TTBR0(reg) p15, 0, reg, c2, c0, 0 #define TTBCR(reg) p15, 0, reg, c2, c0, 2 #define DACR(reg) p15, 0, reg, c3, c0, 0 #define IIALL(reg) p15, 0, reg, c7, c5, 0 #define BPIALL(reg) p15, 0, reg, c7, c5, 6 #define DTLBIALL(reg) p15, 0, reg, c8, c6, 0 #define TLBIALL(reg) p15, 0, reg, c8, c7, 0 #define DTLBIASID(reg) p15, 0, reg, c8, c6, 2 #define TLBIASID(reg) p15, 0, reg, c8, c7, 2 #define CONTEXTIDR(reg) p15, 0, reg, c13, c0, 1 /* Processor mode encodings */ #define PMODE_USER 0x10 #define PMODE_FIQ 0x11 #define PMODE_IRQ 0x12 #define PMODE_SUPERVISOR 0x13 #define PMODE_ABORT 0x17 #define PMODE_UNDEFINED 0x1b #define PMODE_SYSTEM 0x1f /* Processor exception mask bits */ #define PMASK_ASYNC_ABORT (1 << 8) #define PMASK_IRQ (1 << 7) #define PMASK_FIRQ (1 << 6) #define CPSR_SUPERVISOR ( PMASK_FIRQ \ | PMASK_IRQ \ | PMASK_ASYNC_ABORT \ | PMODE_SUPERVISOR ) #else /* !__ASSEMBLER__ */ #warning "Including assembly-specific header in C code" #endif