| 
									
										
										
										
											2009-01-09 17:01:53 +11:00
										 |  |  | /*
 | 
					
						
							| 
									
										
										
										
											2010-02-25 18:09:45 -06:00
										 |  |  |  * Performance event support - hardware-specific disambiguation | 
					
						
							| 
									
										
										
										
											2009-01-09 17:01:53 +11:00
										 |  |  |  * | 
					
						
							| 
									
										
										
										
											2010-02-25 18:09:45 -06:00
										 |  |  |  * For now this is a compile-time decision, but eventually it should be | 
					
						
							|  |  |  |  * runtime.  This would allow multiplatform perf event support for e300 (fsl | 
					
						
							|  |  |  |  * embedded perf counters) plus server/classic, and would accommodate | 
					
						
							|  |  |  |  * devices other than the core which provide their own performance counters. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * Copyright 2010 Freescale Semiconductor, Inc. | 
					
						
							| 
									
										
										
										
											2009-01-09 17:01:53 +11:00
										 |  |  |  * | 
					
						
							|  |  |  |  * This program is free software; you can redistribute it and/or | 
					
						
							|  |  |  |  * modify it under the terms of the GNU General Public License | 
					
						
							|  |  |  |  * as published by the Free Software Foundation; either version | 
					
						
							|  |  |  |  * 2 of the License, or (at your option) any later version. | 
					
						
							|  |  |  |  */ | 
					
						
							| 
									
										
										
										
											2009-06-17 21:52:09 +10:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-06-17 21:50:04 +10:00
										 |  |  | #ifdef CONFIG_PPC_PERF_CTRS
 | 
					
						
							| 
									
										
										
										
											2010-02-25 18:09:45 -06:00
										 |  |  | #include <asm/perf_event_server.h>
 | 
					
						
							| 
									
										
										
										
											2009-06-17 21:50:04 +10:00
										 |  |  | #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-02-25 18:09:45 -06:00
										 |  |  | #ifdef CONFIG_FSL_EMB_PERF_EVENT
 | 
					
						
							|  |  |  | #include <asm/perf_event_fsl_emb.h>
 | 
					
						
							|  |  |  | #endif
 | 
					
						
							| 
									
										
										
										
											2010-05-20 07:47:21 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | #ifdef CONFIG_PERF_EVENTS
 | 
					
						
							|  |  |  | #include <asm/ptrace.h>
 | 
					
						
							|  |  |  | #include <asm/reg.h>
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #define perf_arch_fetch_caller_regs(regs, __ip)			\
 | 
					
						
							|  |  |  | 	do {							\ | 
					
						
							|  |  |  | 		(regs)->nip = __ip;				\ | 
					
						
							|  |  |  | 		(regs)->gpr[1] = *(unsigned long *)__get_SP();	\ | 
					
						
							|  |  |  | 		asm volatile("mfmsr %0" : "=r" ((regs)->msr));	\ | 
					
						
							|  |  |  | 	} while (0) | 
					
						
							|  |  |  | #endif
 |