| 
									
										
										
										
											2012-08-07 15:20:43 +02:00
										 |  |  | #ifndef ARCH_PERF_REGS_H
 | 
					
						
							|  |  |  | #define ARCH_PERF_REGS_H
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include <stdlib.h>
 | 
					
						
							| 
									
										
										
										
											2014-04-25 21:31:02 +02:00
										 |  |  | #include <linux/types.h>
 | 
					
						
							| 
									
										
										
										
											2012-11-19 22:21:03 +00:00
										 |  |  | #include <asm/perf_regs.h>
 | 
					
						
							| 
									
										
										
										
											2012-08-07 15:20:43 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-01-07 13:47:21 +01:00
										 |  |  | void perf_regs_load(u64 *regs); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-09-30 12:07:11 +02:00
										 |  |  | #ifndef HAVE_ARCH_X86_64_SUPPORT
 | 
					
						
							| 
									
										
										
										
											2012-08-07 15:20:43 +02:00
										 |  |  | #define PERF_REGS_MASK ((1ULL << PERF_REG_X86_32_MAX) - 1)
 | 
					
						
							| 
									
										
										
										
											2014-01-07 13:47:22 +01:00
										 |  |  | #define PERF_REGS_MAX PERF_REG_X86_32_MAX
 | 
					
						
							|  |  |  | #define PERF_SAMPLE_REGS_ABI PERF_SAMPLE_REGS_ABI_32
 | 
					
						
							| 
									
										
										
										
											2012-08-07 15:20:43 +02:00
										 |  |  | #else
 | 
					
						
							|  |  |  | #define REG_NOSUPPORT ((1ULL << PERF_REG_X86_DS) | \
 | 
					
						
							|  |  |  | 		       (1ULL << PERF_REG_X86_ES) | \ | 
					
						
							|  |  |  | 		       (1ULL << PERF_REG_X86_FS) | \ | 
					
						
							|  |  |  | 		       (1ULL << PERF_REG_X86_GS)) | 
					
						
							|  |  |  | #define PERF_REGS_MASK (((1ULL << PERF_REG_X86_64_MAX) - 1) & ~REG_NOSUPPORT)
 | 
					
						
							| 
									
										
										
										
											2014-01-07 13:47:22 +01:00
										 |  |  | #define PERF_REGS_MAX PERF_REG_X86_64_MAX
 | 
					
						
							|  |  |  | #define PERF_SAMPLE_REGS_ABI PERF_SAMPLE_REGS_ABI_64
 | 
					
						
							| 
									
										
										
										
											2012-08-07 15:20:43 +02:00
										 |  |  | #endif
 | 
					
						
							|  |  |  | #define PERF_REG_IP PERF_REG_X86_IP
 | 
					
						
							|  |  |  | #define PERF_REG_SP PERF_REG_X86_SP
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | static inline const char *perf_reg_name(int id) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	switch (id) { | 
					
						
							|  |  |  | 	case PERF_REG_X86_AX: | 
					
						
							|  |  |  | 		return "AX"; | 
					
						
							|  |  |  | 	case PERF_REG_X86_BX: | 
					
						
							|  |  |  | 		return "BX"; | 
					
						
							|  |  |  | 	case PERF_REG_X86_CX: | 
					
						
							|  |  |  | 		return "CX"; | 
					
						
							|  |  |  | 	case PERF_REG_X86_DX: | 
					
						
							|  |  |  | 		return "DX"; | 
					
						
							|  |  |  | 	case PERF_REG_X86_SI: | 
					
						
							|  |  |  | 		return "SI"; | 
					
						
							|  |  |  | 	case PERF_REG_X86_DI: | 
					
						
							|  |  |  | 		return "DI"; | 
					
						
							|  |  |  | 	case PERF_REG_X86_BP: | 
					
						
							|  |  |  | 		return "BP"; | 
					
						
							|  |  |  | 	case PERF_REG_X86_SP: | 
					
						
							|  |  |  | 		return "SP"; | 
					
						
							|  |  |  | 	case PERF_REG_X86_IP: | 
					
						
							|  |  |  | 		return "IP"; | 
					
						
							|  |  |  | 	case PERF_REG_X86_FLAGS: | 
					
						
							|  |  |  | 		return "FLAGS"; | 
					
						
							|  |  |  | 	case PERF_REG_X86_CS: | 
					
						
							|  |  |  | 		return "CS"; | 
					
						
							|  |  |  | 	case PERF_REG_X86_SS: | 
					
						
							|  |  |  | 		return "SS"; | 
					
						
							|  |  |  | 	case PERF_REG_X86_DS: | 
					
						
							|  |  |  | 		return "DS"; | 
					
						
							|  |  |  | 	case PERF_REG_X86_ES: | 
					
						
							|  |  |  | 		return "ES"; | 
					
						
							|  |  |  | 	case PERF_REG_X86_FS: | 
					
						
							|  |  |  | 		return "FS"; | 
					
						
							|  |  |  | 	case PERF_REG_X86_GS: | 
					
						
							|  |  |  | 		return "GS"; | 
					
						
							| 
									
										
										
										
											2013-09-30 12:07:11 +02:00
										 |  |  | #ifdef HAVE_ARCH_X86_64_SUPPORT
 | 
					
						
							| 
									
										
										
										
											2012-08-07 15:20:43 +02:00
										 |  |  | 	case PERF_REG_X86_R8: | 
					
						
							|  |  |  | 		return "R8"; | 
					
						
							|  |  |  | 	case PERF_REG_X86_R9: | 
					
						
							|  |  |  | 		return "R9"; | 
					
						
							|  |  |  | 	case PERF_REG_X86_R10: | 
					
						
							|  |  |  | 		return "R10"; | 
					
						
							|  |  |  | 	case PERF_REG_X86_R11: | 
					
						
							|  |  |  | 		return "R11"; | 
					
						
							|  |  |  | 	case PERF_REG_X86_R12: | 
					
						
							|  |  |  | 		return "R12"; | 
					
						
							|  |  |  | 	case PERF_REG_X86_R13: | 
					
						
							|  |  |  | 		return "R13"; | 
					
						
							|  |  |  | 	case PERF_REG_X86_R14: | 
					
						
							|  |  |  | 		return "R14"; | 
					
						
							|  |  |  | 	case PERF_REG_X86_R15: | 
					
						
							|  |  |  | 		return "R15"; | 
					
						
							| 
									
										
										
										
											2013-09-30 12:07:11 +02:00
										 |  |  | #endif /* HAVE_ARCH_X86_64_SUPPORT */
 | 
					
						
							| 
									
										
										
										
											2012-08-07 15:20:43 +02:00
										 |  |  | 	default: | 
					
						
							|  |  |  | 		return NULL; | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	return NULL; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #endif /* ARCH_PERF_REGS_H */
 |