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 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   2) #ifndef _ASM_POWERPC_BUG_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   3) #define _ASM_POWERPC_BUG_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   4) #ifdef __KERNEL__
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   5) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   6) #include <asm/asm-compat.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   7) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   8) #ifdef CONFIG_BUG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   9) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  10) #ifdef __ASSEMBLY__
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  11) #include <asm/asm-offsets.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  12) #ifdef CONFIG_DEBUG_BUGVERBOSE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  13) .macro EMIT_BUG_ENTRY addr,file,line,flags
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  14) 	 .section __bug_table,"aw"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  15) 5001:	 PPC_LONG \addr, 5002f
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  16) 	 .short \line, \flags
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  17) 	 .org 5001b+BUG_ENTRY_SIZE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  18) 	 .previous
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  19) 	 .section .rodata,"a"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  20) 5002:	 .asciz "\file"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  21) 	 .previous
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  22) .endm
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  23) #else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  24) .macro EMIT_BUG_ENTRY addr,file,line,flags
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  25) 	 .section __bug_table,"aw"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  26) 5001:	 PPC_LONG \addr
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  27) 	 .short \flags
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  28) 	 .org 5001b+BUG_ENTRY_SIZE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  29) 	 .previous
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  30) .endm
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  31) #endif /* verbose */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  32) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  33) #else /* !__ASSEMBLY__ */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  34) /* _EMIT_BUG_ENTRY expects args %0,%1,%2,%3 to be FILE, LINE, flags and
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  35)    sizeof(struct bug_entry), respectively */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  36) #ifdef CONFIG_DEBUG_BUGVERBOSE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  37) #define _EMIT_BUG_ENTRY				\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  38) 	".section __bug_table,\"aw\"\n"		\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  39) 	"2:\t" PPC_LONG "1b, %0\n"		\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  40) 	"\t.short %1, %2\n"			\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  41) 	".org 2b+%3\n"				\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  42) 	".previous\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  43) #else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  44) #define _EMIT_BUG_ENTRY				\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  45) 	".section __bug_table,\"aw\"\n"		\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  46) 	"2:\t" PPC_LONG "1b\n"			\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  47) 	"\t.short %2\n"				\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  48) 	".org 2b+%3\n"				\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  49) 	".previous\n"
^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) #define BUG_ENTRY(insn, flags, ...)			\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  53) 	__asm__ __volatile__(				\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  54) 		"1:	" insn "\n"			\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  55) 		_EMIT_BUG_ENTRY				\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  56) 		: : "i" (__FILE__), "i" (__LINE__),	\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  57) 		  "i" (flags),				\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  58) 		  "i" (sizeof(struct bug_entry)),	\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  59) 		  ##__VA_ARGS__)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  60) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  61) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  62)  * BUG_ON() and WARN_ON() do their best to cooperate with compile-time
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  63)  * optimisations. However depending on the complexity of the condition
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  64)  * some compiler versions may not produce optimal results.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  65)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  66) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  67) #define BUG() do {						\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  68) 	BUG_ENTRY("twi 31, 0, 0", 0);				\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  69) 	unreachable();						\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  70) } while (0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  71) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  72) #define BUG_ON(x) do {						\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  73) 	if (__builtin_constant_p(x)) {				\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  74) 		if (x)						\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  75) 			BUG();					\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  76) 	} else {						\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  77) 		BUG_ENTRY(PPC_TLNEI " %4, 0", 0, "r" ((__force long)(x)));	\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  78) 	}							\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  79) } while (0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  80) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  81) #define __WARN_FLAGS(flags) BUG_ENTRY("twi 31, 0, 0", BUGFLAG_WARNING | (flags))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  82) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  83) #define WARN_ON(x) ({						\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  84) 	int __ret_warn_on = !!(x);				\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  85) 	if (__builtin_constant_p(__ret_warn_on)) {		\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  86) 		if (__ret_warn_on)				\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  87) 			__WARN();				\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  88) 	} else {						\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  89) 		BUG_ENTRY(PPC_TLNEI " %4, 0",			\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  90) 			  BUGFLAG_WARNING | BUGFLAG_TAINT(TAINT_WARN),	\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  91) 			  "r" (__ret_warn_on));	\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  92) 	}							\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  93) 	unlikely(__ret_warn_on);				\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  94) })
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  95) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  96) #define HAVE_ARCH_BUG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  97) #define HAVE_ARCH_BUG_ON
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  98) #define HAVE_ARCH_WARN_ON
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  99) #endif /* __ASSEMBLY __ */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) #else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101) #ifdef __ASSEMBLY__
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102) .macro EMIT_BUG_ENTRY addr,file,line,flags
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103) .endm
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104) #else /* !__ASSEMBLY__ */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105) #define _EMIT_BUG_ENTRY
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107) #endif /* CONFIG_BUG */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109) #include <asm-generic/bug.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111) #ifndef __ASSEMBLY__
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113) struct pt_regs;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114) extern int do_page_fault(struct pt_regs *, unsigned long, unsigned long);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115) extern void bad_page_fault(struct pt_regs *, unsigned long, int);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116) extern void _exception(int, struct pt_regs *, int, unsigned long);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117) extern void _exception_pkey(struct pt_regs *, unsigned long, int);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 118) extern void die(const char *, struct pt_regs *, long);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 119) extern bool die_will_crash(void);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 120) extern void panic_flush_kmsg_start(void);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 121) extern void panic_flush_kmsg_end(void);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 122) #endif /* !__ASSEMBLY__ */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 123) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 124) #endif /* __KERNEL__ */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 125) #endif /* _ASM_POWERPC_BUG_H */