FILE
special_insns.h
File preview with syntax highlighting.
linux-6.19.14/tools/arch/x86/include/asm/special_insns.h
1/* SPDX-License-Identifier: GPL-2.0 */ 2#ifndef _TOOLS_ASM_X86_SPECIAL_INSNS_H 3#define _TOOLS_ASM_X86_SPECIAL_INSNS_H 4 5/* The dst parameter must be 64-bytes aligned */ 6static inline void movdir64b(void *dst, const void *src) 7{ 8 const struct { char _[64]; } *__src = src; 9 struct { char _[64]; } *__dst = dst; 10 11 /* 12 * MOVDIR64B %(rdx), rax. 13 * 14 * Both __src and __dst must be memory constraints in order to tell the 15 * compiler that no other memory accesses should be reordered around 16 * this one. 17 * 18 * Also, both must be supplied as lvalues because this tells 19 * the compiler what the object is (its size) the instruction accesses. 20 * I.e., not the pointers but what they point to, thus the deref'ing '*'. 21 */ 22 asm volatile(".byte 0x66, 0x0f, 0x38, 0xf8, 0x02" 23 : "+m" (*__dst) 24 : "m" (*__src), "a" (__dst), "d" (__src)); 25} 26 27#endif /* _TOOLS_ASM_X86_SPECIAL_INSNS_H */
~/
Read-only file preview.