brintos

brintos / linux-shallow public Read only

0
0
Text · 694 B · 662aca0 Raw
33 lines · c
1/* SPDX-License-Identifier: GPL-2.0-only */2#ifndef __ASM_VDSO_PROCESSOR_H3#define __ASM_VDSO_PROCESSOR_H4 5#ifndef __ASSEMBLY__6 7#include <asm-generic/barrier.h>8 9static inline void cpu_relax(void)10{11#ifdef __riscv_muldiv12	int dummy;13	/* In lieu of a halt instruction, induce a long-latency stall. */14	__asm__ __volatile__ ("div %0, %0, zero" : "=r" (dummy));15#endif16 17#ifdef CONFIG_TOOLCHAIN_HAS_ZIHINTPAUSE18	/*19	 * Reduce instruction retirement.20	 * This assumes the PC changes.21	 */22	__asm__ __volatile__ ("pause");23#else24	/* Encoding of the pause instruction */25	__asm__ __volatile__ (".4byte 0x100000F");26#endif27	barrier();28}29 30#endif /* __ASSEMBLY__ */31 32#endif /* __ASM_VDSO_PROCESSOR_H */33