diff options
author | Mischa Jonker <mjonker@synopsys.com> | 2013-01-18 04:42:24 -0500 |
---|---|---|
committer | Vineet Gupta <vgupta@synopsys.com> | 2013-02-15 12:46:07 -0500 |
commit | f46121bd26d7957866739313f1e098a682e8d3e4 (patch) | |
tree | 1469839dbb041f325d01428e973e637f3297595e /arch/arc/include | |
parent | 2e651ea1596b0ee25af4fcdc4cd13cbb33ffc254 (diff) |
ARC: kgdb support
Signed-off-by: Mischa Jonker <mjonker@synopsys.com>
Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
Cc: Jason Wessel <jason.wessel@windriver.com>
Acked-by: Jason Wessel <jason.wessel@windriver.com>
Diffstat (limited to 'arch/arc/include')
-rw-r--r-- | arch/arc/include/asm/kgdb.h | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/arch/arc/include/asm/kgdb.h b/arch/arc/include/asm/kgdb.h new file mode 100644 index 000000000000..f3c4934f0ca9 --- /dev/null +++ b/arch/arc/include/asm/kgdb.h | |||
@@ -0,0 +1,61 @@ | |||
1 | /* | ||
2 | * kgdb support for ARC | ||
3 | * | ||
4 | * Copyright (C) 2012 Synopsys, Inc. (www.synopsys.com) | ||
5 | * | ||
6 | * This program is free software; you can redistribute it and/or modify | ||
7 | * it under the terms of the GNU General Public License version 2 as | ||
8 | * published by the Free Software Foundation. | ||
9 | */ | ||
10 | |||
11 | #ifndef __ARC_KGDB_H__ | ||
12 | #define __ARC_KGDB_H__ | ||
13 | |||
14 | #ifdef CONFIG_KGDB | ||
15 | |||
16 | #include <asm/user.h> | ||
17 | |||
18 | /* to ensure compatibility with Linux 2.6.35, we don't implement the get/set | ||
19 | * register API yet */ | ||
20 | #undef DBG_MAX_REG_NUM | ||
21 | |||
22 | #define GDB_MAX_REGS 39 | ||
23 | |||
24 | #define BREAK_INSTR_SIZE 2 | ||
25 | #define CACHE_FLUSH_IS_SAFE 1 | ||
26 | #define NUMREGBYTES (GDB_MAX_REGS * 4) | ||
27 | #define BUFMAX 2048 | ||
28 | |||
29 | static inline void arch_kgdb_breakpoint(void) | ||
30 | { | ||
31 | __asm__ __volatile__ ("trap_s 0x4\n"); | ||
32 | } | ||
33 | |||
34 | extern void kgdb_trap(struct pt_regs *regs, int param); | ||
35 | |||
36 | enum arc700_linux_regnums { | ||
37 | _R0 = 0, | ||
38 | _R1, _R2, _R3, _R4, _R5, _R6, _R7, _R8, _R9, _R10, _R11, _R12, _R13, | ||
39 | _R14, _R15, _R16, _R17, _R18, _R19, _R20, _R21, _R22, _R23, _R24, | ||
40 | _R25, _R26, | ||
41 | _BTA = 27, | ||
42 | _LP_START = 28, | ||
43 | _LP_END = 29, | ||
44 | _LP_COUNT = 30, | ||
45 | _STATUS32 = 31, | ||
46 | _BLINK = 32, | ||
47 | _FP = 33, | ||
48 | __SP = 34, | ||
49 | _EFA = 35, | ||
50 | _RET = 36, | ||
51 | _ORIG_R8 = 37, | ||
52 | _STOP_PC = 38 | ||
53 | }; | ||
54 | |||
55 | #else | ||
56 | static inline void kgdb_trap(struct pt_regs *regs, int param) | ||
57 | { | ||
58 | } | ||
59 | #endif | ||
60 | |||
61 | #endif /* __ARC_KGDB_H__ */ | ||