1 /* SPDX-License-Identifier: GPL-2.0-only */ 2 /* 3 * Copyright (C) 2020 ARM Ltd. 4 */ 5 #ifndef __ASM_VDSO_PROCESSOR_H 6 #define __ASM_VDSO_PROCESSOR_H 7 8 #ifndef __ASSEMBLY__ 9 10 /* REP NOP (PAUSE) is a good thing to insert into busy-wait loops. */ 11 static __always_inline void rep_nop(void) 12 { 13 asm volatile("rep; nop" ::: "memory"); 14 } 15 16 static __always_inline void cpu_relax(void) 17 { 18 rep_nop(); 19 } 20 21 struct getcpu_cache; 22 23 notrace long __vdso_getcpu(unsigned *cpu, unsigned *node, struct getcpu_cache *unused); 24 25 #endif /* __ASSEMBLY__ */ 26 27 #endif /* __ASM_VDSO_PROCESSOR_H */ 28