diff options
Diffstat (limited to 'arch/riscv/include/asm/vdso/processor.h')
| -rw-r--r-- | arch/riscv/include/asm/vdso/processor.h | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/arch/riscv/include/asm/vdso/processor.h b/arch/riscv/include/asm/vdso/processor.h index 82a5693b1861..c42f95dc8811 100644 --- a/arch/riscv/include/asm/vdso/processor.h +++ b/arch/riscv/include/asm/vdso/processor.h @@ -2,7 +2,11 @@ #ifndef __ASM_VDSO_PROCESSOR_H #define __ASM_VDSO_PROCESSOR_H -#ifndef __ASSEMBLY__ +#ifndef __ASSEMBLER__ + +#include <asm/barrier.h> +#include <asm/errata_list.h> +#include <asm/insn-def.h> static inline void cpu_relax(void) { @@ -11,9 +15,15 @@ static inline void cpu_relax(void) /* In lieu of a halt instruction, induce a long-latency stall. */ __asm__ __volatile__ ("div %0, %0, zero" : "=r" (dummy)); #endif + + /* + * Reduce instruction retirement. + * This assumes the PC changes. + */ + ALT_RISCV_PAUSE(); barrier(); } -#endif /* __ASSEMBLY__ */ +#endif /* __ASSEMBLER__ */ #endif /* __ASM_VDSO_PROCESSOR_H */ |
