]>
Commit | Line | Data |
---|---|---|
96f1050d RG |
1 | /* |
2 | * Copyright 2004-2009 Analog Devices Inc. | |
3 | * | |
4 | * Licensed under the GPL-2 or later. | |
5 | */ | |
6 | ||
1394f032 BW |
7 | #ifndef _BLACKFIN_BUG_H |
8 | #define _BLACKFIN_BUG_H | |
2d191233 MF |
9 | |
10 | #ifdef CONFIG_BUG | |
2d191233 | 11 | |
6a4110c2 RG |
12 | /* |
13 | * This can be any undefined 16-bit opcode, meaning | |
14 | * ((opcode & 0xc000) != 0xc000) | |
15 | * Anything from 0x0001 to 0x000A (inclusive) will work | |
16 | */ | |
17 | #define BFIN_BUG_OPCODE 0x0001 | |
70f12567 MF |
18 | |
19 | #ifdef CONFIG_DEBUG_BUGVERBOSE | |
20 | ||
21 | #define _BUG_OR_WARN(flags) \ | |
22 | asm volatile( \ | |
23 | "1: .hword %0\n" \ | |
325cdacd | 24 | " .section __bug_table,\"aw\",@progbits\n" \ |
70f12567 MF |
25 | "2: .long 1b\n" \ |
26 | " .long %1\n" \ | |
27 | " .short %2\n" \ | |
28 | " .short %3\n" \ | |
29 | " .org 2b + %4\n" \ | |
30 | " .previous" \ | |
31 | : \ | |
32 | : "i"(BFIN_BUG_OPCODE), "i"(__FILE__), \ | |
33 | "i"(__LINE__), "i"(flags), \ | |
34 | "i"(sizeof(struct bug_entry))) | |
35 | ||
36 | #else | |
37 | ||
38 | #define _BUG_OR_WARN(flags) \ | |
39 | asm volatile( \ | |
40 | "1: .hword %0\n" \ | |
325cdacd | 41 | " .section __bug_table,\"aw\",@progbits\n" \ |
70f12567 MF |
42 | "2: .long 1b\n" \ |
43 | " .short %1\n" \ | |
44 | " .org 2b + %2\n" \ | |
45 | " .previous" \ | |
46 | : \ | |
47 | : "i"(BFIN_BUG_OPCODE), "i"(flags), \ | |
48 | "i"(sizeof(struct bug_entry))) | |
49 | ||
50 | #endif /* CONFIG_DEBUG_BUGVERBOSE */ | |
51 | ||
52 | #define BUG() \ | |
53 | do { \ | |
54 | _BUG_OR_WARN(0); \ | |
64a2b168 | 55 | unreachable(); \ |
70f12567 MF |
56 | } while (0) |
57 | ||
58 | #define WARN_ON(condition) \ | |
59 | ({ \ | |
60 | int __ret_warn_on = !!(condition); \ | |
61 | if (unlikely(__ret_warn_on)) \ | |
62 | _BUG_OR_WARN(BUGFLAG_WARNING); \ | |
63 | unlikely(__ret_warn_on); \ | |
64 | }) | |
65 | ||
66 | #define HAVE_ARCH_BUG | |
67 | #define HAVE_ARCH_WARN_ON | |
2d191233 MF |
68 | |
69 | #endif | |
70 | ||
1394f032 | 71 | #include <asm-generic/bug.h> |
2d191233 | 72 | |
1394f032 | 73 | #endif |