| 1 |
|
| 2 | #ifndef __ASM_VDSO_PROCESSOR_H
|
| 3 | #define __ASM_VDSO_PROCESSOR_H
|
| 4 |
|
| 5 | #ifndef __ASSEMBLER__
|
| 6 |
|
| 7 | #include <asm-generic/barrier.h>
|
| 8 |
|
| 9 | static inline void cpu_relax(void)
|
| 10 | {
|
| 11 | #ifdef __riscv_muldiv
|
| 12 | int dummy;
|
| 13 |
|
| 14 | __asm__ __volatile__ ("div %0, %0, zero" : "=r" (dummy));
|
| 15 | #endif
|
| 16 |
|
| 17 | #ifdef CONFIG_TOOLCHAIN_HAS_ZIHINTPAUSE
|
| 18 | |
| 19 | * Reduce instruction retirement.
|
| 20 | * This assumes the PC changes.
|
| 21 |
|
| 22 | __asm__ __volatile__ ("pause");
|
| 23 | #else
|
| 24 |
|
| 25 | __asm__ __volatile__ (".4byte 0x100000F");
|
| 26 | #endif
|
| 27 | barrier();
|
| 28 | }
|
| 29 |
|
| 30 | #endif
|
| 31 |
|
| 32 | #endif
|