13ebc1700SPeter Zijlstra/* SPDX-License-Identifier: GPL-2.0 */ 23ebc1700SPeter Zijlstra/* 33ebc1700SPeter Zijlstra * Common place for both 32- and 64-bit entry routines. 43ebc1700SPeter Zijlstra */ 53ebc1700SPeter Zijlstra 63ebc1700SPeter Zijlstra#include <linux/linkage.h> 73ebc1700SPeter Zijlstra#include <asm/export.h> 83ebc1700SPeter Zijlstra#include <asm/msr-index.h> 9*48985d64SPawan Gupta#include <asm/unwind_hints.h> 10*48985d64SPawan Gupta#include <asm/segment.h> 11*48985d64SPawan Gupta#include <asm/cache.h> 123ebc1700SPeter Zijlstra 133ebc1700SPeter Zijlstra.pushsection .noinstr.text, "ax" 143ebc1700SPeter Zijlstra 153ebc1700SPeter ZijlstraSYM_FUNC_START(entry_ibpb) 163ebc1700SPeter Zijlstra movl $MSR_IA32_PRED_CMD, %ecx 173ebc1700SPeter Zijlstra movl $PRED_CMD_IBPB, %eax 183ebc1700SPeter Zijlstra xorl %edx, %edx 193ebc1700SPeter Zijlstra wrmsr 203ebc1700SPeter Zijlstra RET 213ebc1700SPeter ZijlstraSYM_FUNC_END(entry_ibpb) 223ebc1700SPeter Zijlstra/* For KVM */ 233ebc1700SPeter ZijlstraEXPORT_SYMBOL_GPL(entry_ibpb); 243ebc1700SPeter Zijlstra 253ebc1700SPeter Zijlstra.popsection 26*48985d64SPawan Gupta 27*48985d64SPawan Gupta/* 28*48985d64SPawan Gupta * Define the VERW operand that is disguised as entry code so that 29*48985d64SPawan Gupta * it can be referenced with KPTI enabled. This ensure VERW can be 30*48985d64SPawan Gupta * used late in exit-to-user path after page tables are switched. 31*48985d64SPawan Gupta */ 32*48985d64SPawan Gupta.pushsection .entry.text, "ax" 33*48985d64SPawan Gupta 34*48985d64SPawan Gupta.align L1_CACHE_BYTES, 0xcc 35*48985d64SPawan GuptaSYM_CODE_START_NOALIGN(mds_verw_sel) 36*48985d64SPawan Gupta UNWIND_HINT_UNDEFINED 37*48985d64SPawan Gupta ANNOTATE_NOENDBR 38*48985d64SPawan Gupta .word __KERNEL_DS 39*48985d64SPawan Gupta.align L1_CACHE_BYTES, 0xcc 40*48985d64SPawan GuptaSYM_CODE_END(mds_verw_sel); 41*48985d64SPawan Gupta/* For KVM */ 42*48985d64SPawan GuptaEXPORT_SYMBOL_GPL(mds_verw_sel); 43*48985d64SPawan Gupta 44*48985d64SPawan Gupta.popsection 45*48985d64SPawan Gupta 46