File tree 1 file changed +6
-8
lines changed
1 file changed +6
-8
lines changed Original file line number Diff line number Diff line change @@ -10,10 +10,12 @@ const NSECS_PER_SEC: u64 = 1000000000;
10
10
const CPU_KHZ_DEFAULT : u64 = 200 ;
11
11
const PAUSE_THRESHOLD_TICKS : u64 = 150 ;
12
12
13
- #[ cfg( not ( target_arch = "x86_64" ) ) ]
13
+ #[ cfg( target_arch = "aarch64" ) ]
14
14
#[ inline]
15
15
unsafe fn rdtsc ( ) -> u64 {
16
- 0
16
+ let value: u64 ;
17
+ asm ! ( "mrs {}, cntvct_el0" , out( reg) value) ;
18
+ value
17
19
}
18
20
19
21
#[ cfg( target_arch = "x86_64" ) ]
@@ -22,10 +24,10 @@ unsafe fn rdtsc() -> u64 {
22
24
_rdtsc ( )
23
25
}
24
26
25
- #[ cfg( target_arch = "x86_64 " ) ]
27
+ #[ cfg( target_arch = "aarch64 " ) ]
26
28
#[ inline]
27
29
unsafe fn pause ( ) {
28
- asm ! ( "pause " ) ;
30
+ asm ! ( "yield " ) ;
29
31
}
30
32
31
33
#[ cfg( target_arch = "x86_64" ) ]
@@ -34,10 +36,6 @@ unsafe fn pause() {
34
36
asm ! ( "pause" ) ;
35
37
}
36
38
37
- #[ cfg( not( target_arch = "x86_64" ) ) ]
38
- #[ inline]
39
- unsafe fn pause ( ) { }
40
-
41
39
pub fn ndelay ( ns : u64 ) {
42
40
let delta = ns * CPU_KHZ_DEFAULT / NSECS_PER_SEC ;
43
41
let mut pause_delta = 0 ;
You can’t perform that action at this time.
0 commit comments