xref: /optee_os/core/arch/riscv/include/kernel/user_access_arch.h (revision 3db1b3e3179fb98fba226bae3b7d6d1f5723e8ac)
1 /* SPDX-License-Identifier: BSD-2-Clause */
2 /*
3  * Copyright (c) 2023 Andes Technology Corporation
4  * Copyright (c) 2023, Amazon.com Inc. or its affiliates. All rights Reserved.
5  */
6 
7 #ifndef __KERNEL_USER_ACCESS_ARCH_H
8 #define __KERNEL_USER_ACCESS_ARCH_H
9 
10 #include <riscv.h>
11 
12 #ifdef CFG_PAN
13 /* Enter a section where user mode access is temporarily enabled. */
enter_user_access(void)14 static inline void enter_user_access(void)
15 {
16 	set_csr(CSR_XSTATUS, CSR_XSTATUS_SUM);
17 }
18 
19 /* Exit from the section where user mode access was temporarily enabled. */
exit_user_access(void)20 static inline void exit_user_access(void)
21 {
22 	clear_csr(CSR_XSTATUS, CSR_XSTATUS_SUM);
23 }
24 #else
enter_user_access(void)25 static inline void enter_user_access(void) {}
exit_user_access(void)26 static inline void exit_user_access(void) {}
27 #endif /* CFG_PAN */
28 
29 #endif /* __KERNEL_USER_ACCESS_ARCH_H */
30