diff options
| author | Linus Torvalds <torvalds@g5.osdl.org> | 2005-11-10 10:37:51 -0500 |
|---|---|---|
| committer | Linus Torvalds <torvalds@g5.osdl.org> | 2005-11-10 10:37:51 -0500 |
| commit | 3ae0af12b458461f36dfddb26e54056be32928dd (patch) | |
| tree | 063059f24f42506ce2a86374a3b6e2b7a8ae3fcf /include/asm-powerpc/bug.h | |
| parent | 3b44f137b9a846c5452d9e6e1271b79b1dbcc942 (diff) | |
| parent | 7c43ee40ec602db3fa27e6e2d4f092f06ab0901c (diff) | |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc-merge
Diffstat (limited to 'include/asm-powerpc/bug.h')
| -rw-r--r-- | include/asm-powerpc/bug.h | 19 |
1 files changed, 6 insertions, 13 deletions
diff --git a/include/asm-powerpc/bug.h b/include/asm-powerpc/bug.h index d625ee55f957..b001ecb3cd99 100644 --- a/include/asm-powerpc/bug.h +++ b/include/asm-powerpc/bug.h | |||
| @@ -1,6 +1,7 @@ | |||
| 1 | #ifndef _ASM_POWERPC_BUG_H | 1 | #ifndef _ASM_POWERPC_BUG_H |
| 2 | #define _ASM_POWERPC_BUG_H | 2 | #define _ASM_POWERPC_BUG_H |
| 3 | 3 | ||
| 4 | #include <asm/asm-compat.h> | ||
| 4 | /* | 5 | /* |
| 5 | * Define an illegal instr to trap on the bug. | 6 | * Define an illegal instr to trap on the bug. |
| 6 | * We don't use 0 because that marks the end of a function | 7 | * We don't use 0 because that marks the end of a function |
| @@ -11,14 +12,6 @@ | |||
| 11 | 12 | ||
| 12 | #ifndef __ASSEMBLY__ | 13 | #ifndef __ASSEMBLY__ |
| 13 | 14 | ||
| 14 | #ifdef __powerpc64__ | ||
| 15 | #define BUG_TABLE_ENTRY ".llong" | ||
| 16 | #define BUG_TRAP_OP "tdnei" | ||
| 17 | #else | ||
| 18 | #define BUG_TABLE_ENTRY ".long" | ||
| 19 | #define BUG_TRAP_OP "twnei" | ||
| 20 | #endif /* __powerpc64__ */ | ||
| 21 | |||
| 22 | struct bug_entry { | 15 | struct bug_entry { |
| 23 | unsigned long bug_addr; | 16 | unsigned long bug_addr; |
| 24 | long line; | 17 | long line; |
| @@ -40,16 +33,16 @@ struct bug_entry *find_bug(unsigned long bugaddr); | |||
| 40 | __asm__ __volatile__( \ | 33 | __asm__ __volatile__( \ |
| 41 | "1: twi 31,0,0\n" \ | 34 | "1: twi 31,0,0\n" \ |
| 42 | ".section __bug_table,\"a\"\n" \ | 35 | ".section __bug_table,\"a\"\n" \ |
| 43 | "\t"BUG_TABLE_ENTRY" 1b,%0,%1,%2\n" \ | 36 | "\t"PPC_LONG" 1b,%0,%1,%2\n" \ |
| 44 | ".previous" \ | 37 | ".previous" \ |
| 45 | : : "i" (__LINE__), "i" (__FILE__), "i" (__FUNCTION__)); \ | 38 | : : "i" (__LINE__), "i" (__FILE__), "i" (__FUNCTION__)); \ |
| 46 | } while (0) | 39 | } while (0) |
| 47 | 40 | ||
| 48 | #define BUG_ON(x) do { \ | 41 | #define BUG_ON(x) do { \ |
| 49 | __asm__ __volatile__( \ | 42 | __asm__ __volatile__( \ |
| 50 | "1: "BUG_TRAP_OP" %0,0\n" \ | 43 | "1: "PPC_TLNEI" %0,0\n" \ |
| 51 | ".section __bug_table,\"a\"\n" \ | 44 | ".section __bug_table,\"a\"\n" \ |
| 52 | "\t"BUG_TABLE_ENTRY" 1b,%1,%2,%3\n" \ | 45 | "\t"PPC_LONG" 1b,%1,%2,%3\n" \ |
| 53 | ".previous" \ | 46 | ".previous" \ |
| 54 | : : "r" ((long)(x)), "i" (__LINE__), \ | 47 | : : "r" ((long)(x)), "i" (__LINE__), \ |
| 55 | "i" (__FILE__), "i" (__FUNCTION__)); \ | 48 | "i" (__FILE__), "i" (__FUNCTION__)); \ |
| @@ -57,9 +50,9 @@ struct bug_entry *find_bug(unsigned long bugaddr); | |||
| 57 | 50 | ||
| 58 | #define WARN_ON(x) do { \ | 51 | #define WARN_ON(x) do { \ |
| 59 | __asm__ __volatile__( \ | 52 | __asm__ __volatile__( \ |
| 60 | "1: "BUG_TRAP_OP" %0,0\n" \ | 53 | "1: "PPC_TLNEI" %0,0\n" \ |
| 61 | ".section __bug_table,\"a\"\n" \ | 54 | ".section __bug_table,\"a\"\n" \ |
| 62 | "\t"BUG_TABLE_ENTRY" 1b,%1,%2,%3\n" \ | 55 | "\t"PPC_LONG" 1b,%1,%2,%3\n" \ |
| 63 | ".previous" \ | 56 | ".previous" \ |
| 64 | : : "r" ((long)(x)), \ | 57 | : : "r" ((long)(x)), \ |
| 65 | "i" (__LINE__ + BUG_WARNING_TRAP), \ | 58 | "i" (__LINE__ + BUG_WARNING_TRAP), \ |
