xref: /linux/include/linux/sync_core.h (revision 79790b6818e96c58fe2bffee1b418c16e64e7b80)
1e61938a9SMathieu Desnoyers /* SPDX-License-Identifier: GPL-2.0 */
2e61938a9SMathieu Desnoyers #ifndef _LINUX_SYNC_CORE_H
3e61938a9SMathieu Desnoyers #define _LINUX_SYNC_CORE_H
4e61938a9SMathieu Desnoyers 
5e61938a9SMathieu Desnoyers #ifdef CONFIG_ARCH_HAS_SYNC_CORE_BEFORE_USERMODE
6e61938a9SMathieu Desnoyers #include <asm/sync_core.h>
7e61938a9SMathieu Desnoyers #else
8e61938a9SMathieu Desnoyers /*
9e61938a9SMathieu Desnoyers  * This is a dummy sync_core_before_usermode() implementation that can be used
10e61938a9SMathieu Desnoyers  * on all architectures which return to user-space through core serializing
11e61938a9SMathieu Desnoyers  * instructions.
12e61938a9SMathieu Desnoyers  * If your architecture returns to user-space through non-core-serializing
13e61938a9SMathieu Desnoyers  * instructions, you need to write your own functions.
14e61938a9SMathieu Desnoyers  */
sync_core_before_usermode(void)15e61938a9SMathieu Desnoyers static inline void sync_core_before_usermode(void)
16e61938a9SMathieu Desnoyers {
17e61938a9SMathieu Desnoyers }
18e61938a9SMathieu Desnoyers #endif
19e61938a9SMathieu Desnoyers 
20*4ff4c745SAndrea Parri #ifdef CONFIG_ARCH_HAS_PREPARE_SYNC_CORE_CMD
21*4ff4c745SAndrea Parri #include <asm/sync_core.h>
22*4ff4c745SAndrea Parri #else
23*4ff4c745SAndrea Parri /*
24*4ff4c745SAndrea Parri  * This is a dummy prepare_sync_core_cmd() implementation that can be used on
25*4ff4c745SAndrea Parri  * all architectures which provide unconditional core serializing instructions
26*4ff4c745SAndrea Parri  * in switch_mm().
27*4ff4c745SAndrea Parri  * If your architecture doesn't provide such core serializing instructions in
28*4ff4c745SAndrea Parri  * switch_mm(), you may need to write your own functions.
29*4ff4c745SAndrea Parri  */
prepare_sync_core_cmd(struct mm_struct * mm)30*4ff4c745SAndrea Parri static inline void prepare_sync_core_cmd(struct mm_struct *mm)
31*4ff4c745SAndrea Parri {
32*4ff4c745SAndrea Parri }
33*4ff4c745SAndrea Parri #endif
34e61938a9SMathieu Desnoyers 
35*4ff4c745SAndrea Parri #endif /* _LINUX_SYNC_CORE_H */
36