22 lines
		
	
	
		
			498 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			22 lines
		
	
	
		
			498 B
		
	
	
	
		
			C
		
	
	
	
	
	
// SPDX-License-Identifier: GPL-2.0
 | 
						|
 | 
						|
#include <linux/types.h>
 | 
						|
 | 
						|
#include "../../../util/tsc.h"
 | 
						|
 | 
						|
u64 rdtsc(void)
 | 
						|
{
 | 
						|
	u64 val;
 | 
						|
 | 
						|
	/*
 | 
						|
	 * According to ARM DDI 0487F.c, from Armv8.0 to Armv8.5 inclusive, the
 | 
						|
	 * system counter is at least 56 bits wide; from Armv8.6, the counter
 | 
						|
	 * must be 64 bits wide.  So the system counter could be less than 64
 | 
						|
	 * bits wide and it is attributed with the flag 'cap_user_time_short'
 | 
						|
	 * is true.
 | 
						|
	 */
 | 
						|
	asm volatile("mrs %0, cntvct_el0" : "=r" (val));
 | 
						|
 | 
						|
	return val;
 | 
						|
}
 |