| 
									
										
										
										
											2013-01-18 15:12:24 +05:30
										 |  |  | /*
 | 
					
						
							|  |  |  |  * kgdb support for ARC | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * Copyright (C) 2012 Synopsys, Inc. (www.synopsys.com) | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * This program is free software; you can redistribute it and/or modify | 
					
						
							|  |  |  |  * it under the terms of the GNU General Public License version 2 as | 
					
						
							|  |  |  |  * published by the Free Software Foundation. | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #ifndef __ARC_KGDB_H__
 | 
					
						
							|  |  |  | #define __ARC_KGDB_H__
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #ifdef CONFIG_KGDB
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-03-07 16:47:23 +05:30
										 |  |  | #include <asm/ptrace.h>
 | 
					
						
							| 
									
										
										
										
											2013-01-18 15:12:24 +05:30
										 |  |  | 
 | 
					
						
							|  |  |  | /* to ensure compatibility with Linux 2.6.35, we don't implement the get/set
 | 
					
						
							|  |  |  |  * register API yet */ | 
					
						
							|  |  |  | #undef DBG_MAX_REG_NUM
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-09-25 13:23:24 +04:00
										 |  |  | #define GDB_MAX_REGS		87
 | 
					
						
							| 
									
										
										
										
											2013-01-18 15:12:24 +05:30
										 |  |  | 
 | 
					
						
							|  |  |  | #define BREAK_INSTR_SIZE	2
 | 
					
						
							|  |  |  | #define CACHE_FLUSH_IS_SAFE	1
 | 
					
						
							|  |  |  | #define NUMREGBYTES		(GDB_MAX_REGS * 4)
 | 
					
						
							|  |  |  | #define BUFMAX			2048
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | static inline void arch_kgdb_breakpoint(void) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	__asm__ __volatile__ ("trap_s	0x4\n"); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-06-12 15:13:40 +05:30
										 |  |  | extern void kgdb_trap(struct pt_regs *regs); | 
					
						
							| 
									
										
										
										
											2013-01-18 15:12:24 +05:30
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-09-25 13:23:24 +04:00
										 |  |  | /* This is the numbering of registers according to the GDB. See GDB's
 | 
					
						
							|  |  |  |  * arc-tdep.h for details. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * Registers are ordered for GDB 7.5. It is incompatible with GDB 6.8. */ | 
					
						
							|  |  |  | enum arc_linux_regnums { | 
					
						
							| 
									
										
										
										
											2013-01-18 15:12:24 +05:30
										 |  |  | 	_R0		= 0, | 
					
						
							|  |  |  | 	_R1, _R2, _R3, _R4, _R5, _R6, _R7, _R8, _R9, _R10, _R11, _R12, _R13, | 
					
						
							|  |  |  | 	_R14, _R15, _R16, _R17, _R18, _R19, _R20, _R21, _R22, _R23, _R24, | 
					
						
							|  |  |  | 	_R25, _R26, | 
					
						
							| 
									
										
										
										
											2014-09-25 13:23:24 +04:00
										 |  |  | 	_FP		= 27, | 
					
						
							|  |  |  | 	__SP		= 28, | 
					
						
							|  |  |  | 	_R30		= 30, | 
					
						
							|  |  |  | 	_BLINK		= 31, | 
					
						
							|  |  |  | 	_LP_COUNT	= 60, | 
					
						
							|  |  |  | 	_STOP_PC	= 64, | 
					
						
							|  |  |  | 	_RET		= 64, | 
					
						
							|  |  |  | 	_LP_START	= 65, | 
					
						
							|  |  |  | 	_LP_END		= 66, | 
					
						
							|  |  |  | 	_STATUS32	= 67, | 
					
						
							|  |  |  | 	_ECR		= 76, | 
					
						
							|  |  |  | 	_BTA		= 82, | 
					
						
							| 
									
										
										
										
											2013-01-18 15:12:24 +05:30
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #else
 | 
					
						
							| 
									
										
										
										
											2013-06-12 15:13:40 +05:30
										 |  |  | #define kgdb_trap(regs)
 | 
					
						
							| 
									
										
										
										
											2013-01-18 15:12:24 +05:30
										 |  |  | #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #endif	/* __ARC_KGDB_H__ */
 |