| /* SPDX-License-Identifier: GPL-2.0 */ |
| #ifndef _ASM_RISCV_SYNC_CORE_H |
| #define _ASM_RISCV_SYNC_CORE_H |
| |
| /* |
| * RISC-V implements return to user-space through an xRET instruction, |
| * which is not core serializing. |
| */ |
| static inline void sync_core_before_usermode(void) |
| { |
| asm volatile ("fence.i" ::: "memory"); |
| } |
| |
| #ifdef CONFIG_SMP |
| /* |
| * Ensure the next switch_mm() on every CPU issues a core serializing |
| * instruction for the given @mm. |
| */ |
| static inline void prepare_sync_core_cmd(struct mm_struct *mm) |
| { |
| cpumask_setall(&mm->context.icache_stale_mask); |
| } |
| #else |
| static inline void prepare_sync_core_cmd(struct mm_struct *mm) |
| { |
| } |
| #endif /* CONFIG_SMP */ |
| |
| #endif /* _ASM_RISCV_SYNC_CORE_H */ |