git-svn-id: svn://svn.coreboot.org/coreboot/trunk@1624 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
		
			
				
	
	
		
			34 lines
		
	
	
		
			916 B
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			34 lines
		
	
	
		
			916 B
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
| #ifndef CPU_P6_MSR_H
 | |
| #define CPU_P6_MSR_H
 | |
| 
 | |
| /*
 | |
|  * Access to machine-specific registers (available on 586 and better only)
 | |
|  * Note: the rd* operations modify the parameters directly (without using
 | |
|  * pointer indirection), this allows gcc to optimize better
 | |
|  */
 | |
| 
 | |
| #define rdmsr(msr,val1,val2) \
 | |
|        __asm__ __volatile__("rdmsr" \
 | |
| 			    : "=a" (val1), "=d" (val2) \
 | |
| 			    : "c" (msr))
 | |
| 
 | |
| #define wrmsr(msr,val1,val2) \
 | |
|      __asm__ __volatile__("wrmsr" \
 | |
| 			  : /* no outputs */ \
 | |
| 			  : "c" (msr), "a" (val1), "d" (val2))
 | |
| 
 | |
| #define rdtsc(low,high) \
 | |
|      __asm__ __volatile__("rdtsc" : "=a" (low), "=d" (high))
 | |
| 
 | |
| #define rdtscl(low) \
 | |
|      __asm__ __volatile__ ("rdtsc" : "=a" (low) : : "edx")
 | |
| 
 | |
| #define rdtscll(val) \
 | |
|      __asm__ __volatile__ ("rdtsc" : "=A" (val))
 | |
| 
 | |
| #define rdpmc(counter,low,high) \
 | |
|      __asm__ __volatile__("rdpmc" \
 | |
| 			  : "=a" (low), "=d" (high) \
 | |
| 			  : "c" (counter))
 | |
| #endif /* CPU_P6_MSR_H */
 |