xref: /optee_os/lib/libutee/include/arm_user_sysreg.h (revision 739fd3ab966f6258ffba3658f13754dc6662de53)
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 
18*739fd3abSJens Wiklander #ifndef __ASSEMBLER__
19*739fd3abSJens Wiklander static inline __noprof void isb(void)
20*739fd3abSJens Wiklander {
21*739fd3abSJens Wiklander 	asm volatile ("isb");
22*739fd3abSJens Wiklander }
23*739fd3abSJens Wiklander 
24*739fd3abSJens Wiklander static inline __noprof uint64_t barrier_read_cntpct(void)
25*739fd3abSJens Wiklander {
26*739fd3abSJens Wiklander 	isb();
27*739fd3abSJens Wiklander 	return read_cntpct();
28*739fd3abSJens Wiklander }
29*739fd3abSJens Wiklander #endif
30*739fd3abSJens Wiklander 
314486d586SSumit Garg #endif /*ARM_USER_SYSREG_H*/
32