| /* Kernel debugger for MN10300 |
| * |
| * Copyright (C) 2010 Red Hat, Inc. All Rights Reserved. |
| * Written by David Howells (dhowells@redhat.com) |
| * |
| * This program is free software; you can redistribute it and/or |
| * modify it under the terms of the GNU General Public Licence |
| * as published by the Free Software Foundation; either version |
| * 2 of the Licence, or (at your option) any later version. |
| */ |
| |
| #ifndef _ASM_KGDB_H |
| #define _ASM_KGDB_H |
| |
| /* |
| * BUFMAX defines the maximum number of characters in inbound/outbound |
| * buffers at least NUMREGBYTES*2 are needed for register packets |
| * Longer buffer is needed to list all threads |
| */ |
| #define BUFMAX 1024 |
| |
| /* |
| * Note that this register image is in a different order than the register |
| * image that Linux produces at interrupt time. |
| */ |
| enum regnames { |
| GDB_FR_D0 = 0, |
| GDB_FR_D1 = 1, |
| GDB_FR_D2 = 2, |
| GDB_FR_D3 = 3, |
| GDB_FR_A0 = 4, |
| GDB_FR_A1 = 5, |
| GDB_FR_A2 = 6, |
| GDB_FR_A3 = 7, |
| |
| GDB_FR_SP = 8, |
| GDB_FR_PC = 9, |
| GDB_FR_MDR = 10, |
| GDB_FR_EPSW = 11, |
| GDB_FR_LIR = 12, |
| GDB_FR_LAR = 13, |
| GDB_FR_MDRQ = 14, |
| |
| GDB_FR_E0 = 15, |
| GDB_FR_E1 = 16, |
| GDB_FR_E2 = 17, |
| GDB_FR_E3 = 18, |
| GDB_FR_E4 = 19, |
| GDB_FR_E5 = 20, |
| GDB_FR_E6 = 21, |
| GDB_FR_E7 = 22, |
| |
| GDB_FR_SSP = 23, |
| GDB_FR_MSP = 24, |
| GDB_FR_USP = 25, |
| GDB_FR_MCRH = 26, |
| GDB_FR_MCRL = 27, |
| GDB_FR_MCVF = 28, |
| |
| GDB_FR_FPCR = 29, |
| GDB_FR_DUMMY0 = 30, |
| GDB_FR_DUMMY1 = 31, |
| |
| GDB_FR_FS0 = 32, |
| |
| GDB_FR_SIZE = 64, |
| }; |
| |
| #define GDB_ORIG_D0 41 |
| #define NUMREGBYTES (GDB_FR_SIZE*4) |
| |
| static inline void arch_kgdb_breakpoint(void) |
| { |
| asm(".globl __arch_kgdb_breakpoint; __arch_kgdb_breakpoint: break"); |
| } |
| extern u8 __arch_kgdb_breakpoint; |
| |
| #define BREAK_INSTR_SIZE 1 |
| #define CACHE_FLUSH_IS_SAFE 1 |
| |
| #endif /* _ASM_KGDB_H */ |