Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
awilliam
GitHub Repository: awilliam/linux-vfio
Path: blob/master/arch/parisc/include/asm/bug.h
10819 views
1
#ifndef _PARISC_BUG_H
2
#define _PARISC_BUG_H
3
4
/*
5
* Tell the user there is some problem.
6
* The offending file and line are encoded in the __bug_table section.
7
*/
8
9
#ifdef CONFIG_BUG
10
#define HAVE_ARCH_BUG
11
#define HAVE_ARCH_WARN_ON
12
13
/* the break instruction is used as BUG() marker. */
14
#define PARISC_BUG_BREAK_ASM "break 0x1f, 0x1fff"
15
#define PARISC_BUG_BREAK_INSN 0x03ffe01f /* PARISC_BUG_BREAK_ASM */
16
17
#if defined(CONFIG_64BIT)
18
#define ASM_WORD_INSN ".dword\t"
19
#else
20
#define ASM_WORD_INSN ".word\t"
21
#endif
22
23
#ifdef CONFIG_DEBUG_BUGVERBOSE
24
#define BUG() \
25
do { \
26
asm volatile("\n" \
27
"1:\t" PARISC_BUG_BREAK_ASM "\n" \
28
"\t.pushsection __bug_table,\"a\"\n" \
29
"2:\t" ASM_WORD_INSN "1b, %c0\n" \
30
"\t.short %c1, %c2\n" \
31
"\t.org 2b+%c3\n" \
32
"\t.popsection" \
33
: : "i" (__FILE__), "i" (__LINE__), \
34
"i" (0), "i" (sizeof(struct bug_entry)) ); \
35
unreachable(); \
36
} while(0)
37
38
#else
39
#define BUG() \
40
do { \
41
asm volatile(PARISC_BUG_BREAK_ASM : : ); \
42
unreachable(); \
43
} while(0)
44
#endif
45
46
#ifdef CONFIG_DEBUG_BUGVERBOSE
47
#define __WARN_TAINT(taint) \
48
do { \
49
asm volatile("\n" \
50
"1:\t" PARISC_BUG_BREAK_ASM "\n" \
51
"\t.pushsection __bug_table,\"a\"\n" \
52
"2:\t" ASM_WORD_INSN "1b, %c0\n" \
53
"\t.short %c1, %c2\n" \
54
"\t.org 2b+%c3\n" \
55
"\t.popsection" \
56
: : "i" (__FILE__), "i" (__LINE__), \
57
"i" (BUGFLAG_TAINT(taint)), \
58
"i" (sizeof(struct bug_entry)) ); \
59
} while(0)
60
#else
61
#define __WARN_TAINT(taint) \
62
do { \
63
asm volatile("\n" \
64
"1:\t" PARISC_BUG_BREAK_ASM "\n" \
65
"\t.pushsection __bug_table,\"a\"\n" \
66
"2:\t" ASM_WORD_INSN "1b\n" \
67
"\t.short %c0\n" \
68
"\t.org 2b+%c1\n" \
69
"\t.popsection" \
70
: : "i" (BUGFLAG_TAINT(taint)), \
71
"i" (sizeof(struct bug_entry)) ); \
72
} while(0)
73
#endif
74
75
76
#define WARN_ON(x) ({ \
77
int __ret_warn_on = !!(x); \
78
if (__builtin_constant_p(__ret_warn_on)) { \
79
if (__ret_warn_on) \
80
__WARN(); \
81
} else { \
82
if (unlikely(__ret_warn_on)) \
83
__WARN(); \
84
} \
85
unlikely(__ret_warn_on); \
86
})
87
88
#endif
89
90
#include <asm-generic/bug.h>
91
#endif
92
93
94