Orange Pi5 kernel

Deprecated Linux kernel 5.10.110 for OrangePi 5/5B/5+ boards

3 Commits   0 Branches   0 Tags
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  1) /* SPDX-License-Identifier: GPL-2.0-only */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  2) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  3)  * Copyright (C) 2012 Regents of the University of California
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  4)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  5) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  6) #ifndef _ASM_RISCV_BUG_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  7) #define _ASM_RISCV_BUG_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  8) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  9) #include <linux/compiler.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) #include <linux/const.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) #include <linux/types.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) #include <asm/asm.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) #define __INSN_LENGTH_MASK  _UL(0x3)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) #define __INSN_LENGTH_32    _UL(0x3)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) #define __COMPRESSED_INSN_MASK	_UL(0xffff)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) #define __BUG_INSN_32	_UL(0x00100073) /* ebreak */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) #define __BUG_INSN_16	_UL(0x9002) /* c.ebreak */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) #define GET_INSN_LENGTH(insn)						\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) ({									\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) 	unsigned long __len;						\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) 	__len = ((insn & __INSN_LENGTH_MASK) == __INSN_LENGTH_32) ?	\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) 		4UL : 2UL;						\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) 	__len;								\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) })
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) typedef u32 bug_insn_t;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) #ifdef CONFIG_GENERIC_BUG_RELATIVE_POINTERS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) #define __BUG_ENTRY_ADDR	RISCV_INT " 1b - 2b"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) #define __BUG_ENTRY_FILE	RISCV_INT " %0 - 2b"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) #else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) #define __BUG_ENTRY_ADDR	RISCV_PTR " 1b"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) #define __BUG_ENTRY_FILE	RISCV_PTR " %0"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) #ifdef CONFIG_DEBUG_BUGVERBOSE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) #define __BUG_ENTRY			\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) 	__BUG_ENTRY_ADDR "\n\t"		\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) 	__BUG_ENTRY_FILE "\n\t"		\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) 	RISCV_SHORT " %1\n\t"		\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) 	RISCV_SHORT " %2"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) #else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) #define __BUG_ENTRY			\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) 	__BUG_ENTRY_ADDR "\n\t"		\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) 	RISCV_SHORT " %2"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) #ifdef CONFIG_GENERIC_BUG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53) #define __BUG_FLAGS(flags)					\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) do {								\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) 	__asm__ __volatile__ (					\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) 		"1:\n\t"					\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) 			"ebreak\n"				\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) 			".pushsection __bug_table,\"aw\"\n\t"	\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) 		"2:\n\t"					\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) 			__BUG_ENTRY "\n\t"			\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61) 			".org 2b + %3\n\t"                      \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62) 			".popsection"				\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63) 		:						\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64) 		: "i" (__FILE__), "i" (__LINE__),		\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65) 		  "i" (flags),					\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66) 		  "i" (sizeof(struct bug_entry)));              \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67) } while (0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68) #else /* CONFIG_GENERIC_BUG */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69) #define __BUG_FLAGS(flags) do {					\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70) 	__asm__ __volatile__ ("ebreak\n");			\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71) } while (0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72) #endif /* CONFIG_GENERIC_BUG */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 74) #define BUG() do {						\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 75) 	__BUG_FLAGS(0);						\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 76) 	unreachable();						\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 77) } while (0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 78) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 79) #define __WARN_FLAGS(flags) __BUG_FLAGS(BUGFLAG_WARNING|(flags))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 80) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 81) #define HAVE_ARCH_BUG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 82) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 83) #include <asm-generic/bug.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 84) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 85) struct pt_regs;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 86) struct task_struct;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 87) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 88) void die(struct pt_regs *regs, const char *str);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 89) void do_trap(struct pt_regs *regs, int signo, int code, unsigned long addr);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 90) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 91) #endif /* _ASM_RISCV_BUG_H */