Module Name: src
Committed By: riastradh
Date: Sun Feb 27 19:22:03 UTC 2022
Modified Files:
src/sys/arch/mips/include: asm.h
src/sys/arch/mips/mips: lock_stubs_llsc.S
Log Message:
mips: Omit needless SYNC in mutex_exit.
This change deletes a memory barrier. However, it should be safe:
The semantic requirement for this is already provided by the SYNC_REL
above, before the ll. And as currently defined, SYNC_REL is at least
as strong as SYNC, so this change can't hurt correctness on its own
(barring CPU errata, which would apply to other users of SYNC_REL and
can be addressed in the definition of SYNC_REL).
Later, perhaps we can relax SYNC_REL to syncw on Octeon if we prove
that it is correct (e.g., if Octeon follows the SPARCv9 partial store
order semantics).
Nix now-unused SYNC macro in asm.h.
To generate a diff of this commit:
cvs rdiff -u -r1.66 -r1.67 src/sys/arch/mips/include/asm.h
cvs rdiff -u -r1.15 -r1.16 src/sys/arch/mips/mips/lock_stubs_llsc.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/mips/include/asm.h
diff -u src/sys/arch/mips/include/asm.h:1.66 src/sys/arch/mips/include/asm.h:1.67
--- src/sys/arch/mips/include/asm.h:1.66 Sun Feb 27 19:21:53 2022
+++ src/sys/arch/mips/include/asm.h Sun Feb 27 19:22:02 2022
@@ -1,4 +1,4 @@
-/* $NetBSD: asm.h,v 1.66 2022/02/27 19:21:53 riastradh Exp $ */
+/* $NetBSD: asm.h,v 1.67 2022/02/27 19:22:02 riastradh Exp $ */
/*
* Copyright (c) 1992, 1993
@@ -574,7 +574,6 @@ _C_LABEL(x):
#if defined(__OCTEON__)
/* early cnMIPS have erratum which means 2 */
#define LLSCSYNC sync 4; sync 4
-#define SYNC sync 4 /* sync 4 == syncw - sync all writes */
#define BDSYNC sync 4 /* sync 4 == syncw - sync all writes */
#define BDSYNC_ACQ sync
#define SYNC_ACQ sync
@@ -583,7 +582,6 @@ _C_LABEL(x):
#define SYNC_PLUNGER sync 4
#elif __mips >= 3 || !defined(__mips_o32)
#define LLSCSYNC sync
-#define SYNC sync
#define BDSYNC sync
#define BDSYNC_ACQ sync
#define SYNC_ACQ sync
@@ -592,7 +590,6 @@ _C_LABEL(x):
#define SYNC_PLUNGER /* nothing */
#else
#define LLSCSYNC /* nothing */
-#define SYNC /* nothing */
#define BDSYNC nop
#define BDSYNC_ACQ nop
#define SYNC_ACQ /* nothing */
Index: src/sys/arch/mips/mips/lock_stubs_llsc.S
diff -u src/sys/arch/mips/mips/lock_stubs_llsc.S:1.15 src/sys/arch/mips/mips/lock_stubs_llsc.S:1.16
--- src/sys/arch/mips/mips/lock_stubs_llsc.S:1.15 Sun Feb 27 19:21:53 2022
+++ src/sys/arch/mips/mips/lock_stubs_llsc.S Sun Feb 27 19:22:02 2022
@@ -1,4 +1,4 @@
-/* $NetBSD: lock_stubs_llsc.S,v 1.15 2022/02/27 19:21:53 riastradh Exp $ */
+/* $NetBSD: lock_stubs_llsc.S,v 1.16 2022/02/27 19:22:02 riastradh Exp $ */
/*-
* Copyright (c) 2007 The NetBSD Foundation, Inc.
@@ -36,7 +36,7 @@
#include <machine/asm.h>
-RCSID("$NetBSD: lock_stubs_llsc.S,v 1.15 2022/02/27 19:21:53 riastradh Exp $")
+RCSID("$NetBSD: lock_stubs_llsc.S,v 1.16 2022/02/27 19:22:02 riastradh Exp $")
#include "assym.h"
@@ -207,7 +207,6 @@ STATIC_LEAF(llsc_mutex_exit)
SYNC_REL
LLSCSYNC
PTR_LL t0, MTX_OWNER(a0)
- SYNC
1:
bne t0, MIPS_CURLWP, 2f
move t2, zero