Skip to content

Commit 9a50ce6

Browse files
committed
asm/arm64: ensure instruction ordering on timer
Signed-off-by: Nathan Hjelm <[email protected]>
1 parent 432d790 commit 9a50ce6

File tree

1 file changed

+8
-4
lines changed

1 file changed

+8
-4
lines changed

opal/include/opal/sys/arm64/timer.h

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
1+
/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil -*- */
12
/*
23
* Copyright (c) 2008 The University of Tennessee and The University
34
* of Tennessee Research Foundation. All rights
45
* reserved.
56
* Copyright (c) 2016 Broadcom Limited. All rights reserved.
7+
* Copyright (c) 2016 Los Alamos National Security, LLC. All rights
8+
* reserved.
69
* $COPYRIGHT$
710
*
811
* Additional copyrights may follow
@@ -22,7 +25,8 @@ opal_sys_timer_get_cycles(void)
2225
{
2326
opal_timer_t ret;
2427

25-
__asm__ __volatile__ ("mrs %0, CNTVCT_EL0" : "=r" (ret));
28+
__asm__ __volatile__ ("isb" ::: "memory");
29+
__asm__ __volatile__ ("mrs %0, CNTVCT_EL0" : "=r" (ret));
2630

2731
return ret;
2832
}
@@ -31,9 +35,9 @@ opal_sys_timer_get_cycles(void)
3135
static inline opal_timer_t
3236
opal_sys_timer_freq(void)
3337
{
34-
opal_timer_t freq;
35-
__asm__ __volatile__ ("mrs %0, CNTFRQ_EL0" : "=r" (freq));
36-
return (opal_timer_t)(freq);
38+
opal_timer_t freq;
39+
__asm__ __volatile__ ("mrs %0, CNTFRQ_EL0" : "=r" (freq));
40+
return (opal_timer_t)(freq);
3741
}
3842

3943
#define OPAL_HAVE_SYS_TIMER_GET_CYCLES 1

0 commit comments

Comments
 (0)