From 22cad5de7bcd7b3dd5d6c90fbfdc9de40c37b59a Mon Sep 17 00:00:00 2001 From: maxv Date: Wed, 28 Mar 2018 19:56:40 +0000 Subject: [PATCH] The call to svs_lwp_switch can clobber %rdi/%rsi, so restore them before calling speculation_barrier. --- sys/arch/amd64/amd64/locore.S | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/sys/arch/amd64/amd64/locore.S b/sys/arch/amd64/amd64/locore.S index 7095910bf77e..d5428a382cd9 100644 --- a/sys/arch/amd64/amd64/locore.S +++ b/sys/arch/amd64/amd64/locore.S @@ -1,4 +1,4 @@ -/* $NetBSD: locore.S,v 1.160 2018/03/28 16:02:49 maxv Exp $ */ +/* $NetBSD: locore.S,v 1.161 2018/03/28 19:56:40 maxv Exp $ */ /* * Copyright-o-rama! @@ -1096,6 +1096,10 @@ ENTRY(cpu_switchto) callq _C_LABEL(svs_lwp_switch) .Lskip_svs: popq %rdx + + /* Restore rdi/rsi for speculation_barrier */ + movq %r13,%rdi + movq %r12,%rsi #endif pushq %rdx