From e0aed50401dda7334ad4fe70324d7449b1d17fb2 Mon Sep 17 00:00:00 2001 From: riastradh Date: Sun, 9 Apr 2023 08:17:56 +0000 Subject: [PATCH] amd64: Make curlwp and curcpu() flushable. The only effect of the `volatile' qualifier on an asm block with outputs is to force the instructions to appear in the generated code, even if the outputs end up being unused. Since these instructions have no (architectural) side effects -- provided %gs is set correctly, which must be the case here -- there's no need for the volatile qualifier, so nix it. --- sys/arch/amd64/include/cpu.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/sys/arch/amd64/include/cpu.h b/sys/arch/amd64/include/cpu.h index ea06d91ecd78..e47a798b4fa4 100644 --- a/sys/arch/amd64/include/cpu.h +++ b/sys/arch/amd64/include/cpu.h @@ -1,4 +1,4 @@ -/* $NetBSD: cpu.h,v 1.70 2021/11/02 11:26:03 ryo Exp $ */ +/* $NetBSD: cpu.h,v 1.71 2023/04/09 08:17:56 riastradh Exp $ */ /*- * Copyright (c) 1990 The Regents of the University of California. @@ -53,7 +53,7 @@ x86_curcpu(void) { struct cpu_info *ci; - __asm volatile("movq %%gs:%1, %0" : + __asm("movq %%gs:%1, %0" : "=r" (ci) : "m" (*(struct cpu_info * const *)offsetof(struct cpu_info, ci_self))); @@ -65,7 +65,7 @@ x86_curlwp(void) { lwp_t *l; - __asm volatile("movq %%gs:%1, %0" : + __asm("movq %%gs:%1, %0" : "=r" (l) : "m" (*(struct cpu_info * const *)offsetof(struct cpu_info, ci_curlwp)));