blob: 3387778e41989d4255a4bd22896c99f6b06c0c8e [file]
/*
* 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