Linux kernel mirror (for testing)
git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel
os
linux
1/* SPDX-License-Identifier: GPL-2.0-only */
2/*
3 * Based on arch/arm/include/asm/exception.h
4 *
5 * Copyright (C) 2012 ARM Ltd.
6 */
7#ifndef __ASM_EXCEPTION_H
8#define __ASM_EXCEPTION_H
9
10#include <asm/esr.h>
11
12#include <linux/interrupt.h>
13
14#define __exception __attribute__((section(".exception.text")))
15#ifdef CONFIG_FUNCTION_GRAPH_TRACER
16#define __exception_irq_entry __irq_entry
17#else
18#define __exception_irq_entry __exception
19#endif
20
21static inline u32 disr_to_esr(u64 disr)
22{
23 unsigned int esr = ESR_ELx_EC_SERROR << ESR_ELx_EC_SHIFT;
24
25 if ((disr & DISR_EL1_IDS) == 0)
26 esr |= (disr & DISR_EL1_ESR_MASK);
27 else
28 esr |= (disr & ESR_ELx_ISS_MASK);
29
30 return esr;
31}
32
33#endif /* __ASM_EXCEPTION_H */