xref: /optee_os/lib/libutee/include/arm_user_sysreg.h (revision fb19e98e6911bb2478a98145e4befd24833fedf4)
14486d586SSumit Garg /* SPDX-License-Identifier: BSD-2-Clause */
24486d586SSumit Garg /*
34486d586SSumit Garg  * Copyright (c) 2019, Linaro Limited
44486d586SSumit Garg  */
54486d586SSumit Garg #ifndef ARM_USER_SYSREG_H
64486d586SSumit Garg #define ARM_USER_SYSREG_H
74486d586SSumit Garg 
84486d586SSumit Garg #include <util.h>
94486d586SSumit Garg 
104486d586SSumit Garg #ifdef ARM32
114486d586SSumit Garg #include <arm32_user_sysreg.h>
124486d586SSumit Garg #endif
134486d586SSumit Garg 
144486d586SSumit Garg #ifdef ARM64
154486d586SSumit Garg #include <arm64_user_sysreg.h>
164486d586SSumit Garg #endif
174486d586SSumit Garg 
18739fd3abSJens Wiklander #ifndef __ASSEMBLER__
isb(void)19739fd3abSJens Wiklander static inline __noprof void isb(void)
20739fd3abSJens Wiklander {
21739fd3abSJens Wiklander 	asm volatile ("isb");
22739fd3abSJens Wiklander }
23739fd3abSJens Wiklander 
barrier_read_counter_timer(void)24c6e827c0SJens Wiklander static inline __noprof uint64_t barrier_read_counter_timer(void)
25739fd3abSJens Wiklander {
26739fd3abSJens Wiklander 	isb();
27*fb19e98eSJens Wiklander #ifdef CFG_CORE_SEL2_SPMC
28*fb19e98eSJens Wiklander 	return read_cntvct();
29*fb19e98eSJens Wiklander #else
30739fd3abSJens Wiklander 	return read_cntpct();
31*fb19e98eSJens Wiklander #endif
32739fd3abSJens Wiklander }
33739fd3abSJens Wiklander #endif
34739fd3abSJens Wiklander 
354486d586SSumit Garg #endif /*ARM_USER_SYSREG_H*/
36