From e91b6aa31ad9c3782bd548950ac2ec03036bddb5 Mon Sep 17 00:00:00 2001 From: Jason Chen CJ Date: Mon, 12 Mar 2018 22:23:37 +0800 Subject: [PATCH] retpoline: replace indirect jmp in switch_to function Signed-off-by: Jason Chen CJ --- hypervisor/common/schedule.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/hypervisor/common/schedule.c b/hypervisor/common/schedule.c index 94948cbca..8dad244ab 100644 --- a/hypervisor/common/schedule.c +++ b/hypervisor/common/schedule.c @@ -199,14 +199,26 @@ static void switch_to(struct vcpu *curr) if (curr == NULL) { asm volatile ("movq %1, %%rsp\n" "movq $0, %%rdi\n" - "jmp *%0\n" + "call 22f\n" + "11: \n" + "pause\n" + "jmp 11b\n" + "22:\n" + "mov %0, (%%rsp)\n" + "ret\n" : : "a"(default_idle), "r"(cur_sp) : "memory"); } else { asm volatile ("movq %2, %%rsp\n" "movq %0, %%rdi\n" - "jmp *%1\n" + "call 44f\n" + "33: \n" + "pause\n" + "jmp 33b\n" + "44:\n" + "mov %1, (%%rsp)\n" + "ret\n" : : "c"(curr), "a"(vcpu_thread), "r"(cur_sp) : "memory");