Module Name: src Committed By: ad Date: Sun May 17 12:11:11 UTC 2020
Modified Files: src/sys/arch/amd64/amd64: spl.S Log Message: comments To generate a diff of this commit: cvs rdiff -u -r1.45 -r1.46 src/sys/arch/amd64/amd64/spl.S Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/arch/amd64/amd64/spl.S diff -u src/sys/arch/amd64/amd64/spl.S:1.45 src/sys/arch/amd64/amd64/spl.S:1.46 --- src/sys/arch/amd64/amd64/spl.S:1.45 Sat May 2 11:12:49 2020 +++ src/sys/arch/amd64/amd64/spl.S Sun May 17 12:11:11 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: spl.S,v 1.45 2020/05/02 11:12:49 maxv Exp $ */ +/* $NetBSD: spl.S,v 1.46 2020/05/17 12:11:11 ad Exp $ */ /* * Copyright (c) 2003 Wasabi Systems, Inc. @@ -157,7 +157,12 @@ IDTVEC(softintr) movq L_PCB(%r15),%rcx movq PCB_RSP(%rcx),%rsp - xchgq %r15,CPUVAR(CURLWP) /* must be globally visible */ + /* + * for non-interlocked mutex release to work safely the change + * to ci_curlwp must not languish in the store buffer. therefore + * we use XCHG and not MOV here. see kern_mutex.c. + */ + xchgq %r15,CPUVAR(CURLWP) /* restore curlwp */ popq %r15 /* unwind switchframe */ addq $(5 * 8),%rsp jmp *%r13 /* back to Xspllower/Xdoreti */