Sun Feb 27 19:22:20 2022 UTC ()
mips: Redefine LLSCSYNC as empty on non-Octeon MP.

This change deletes memory barriers on non-Octeon MP.  However, all
the appropriate acquire and release barriers are already used in
mutex stubs, and no barriers are needed in atomic_* unless we set
__HAVE_ATOMIC_AS_MEMBAR which we don't on MIPS.  So this should be
safe.

Unclear whether we need this even on Octeon -- don't have a clear
reference on why it's here.


(riastradh)
diff -r1.68 -r1.69 src/sys/arch/mips/include/asm.h

cvs diff -r1.68 -r1.69 src/sys/arch/mips/include/asm.h (expand / switch to unified diff)

--- src/sys/arch/mips/include/asm.h 2022/02/27 19:22:12 1.68
+++ src/sys/arch/mips/include/asm.h 2022/02/27 19:22:20 1.69
@@ -1,14 +1,14 @@ @@ -1,14 +1,14 @@
1/* $NetBSD: asm.h,v 1.68 2022/02/27 19:22:12 riastradh Exp $ */ 1/* $NetBSD: asm.h,v 1.69 2022/02/27 19:22:20 riastradh Exp $ */
2 2
3/* 3/*
4 * Copyright (c) 1992, 1993 4 * Copyright (c) 1992, 1993
5 * The Regents of the University of California. All rights reserved. 5 * The Regents of the University of California. All rights reserved.
6 * 6 *
7 * This code is derived from software contributed to Berkeley by 7 * This code is derived from software contributed to Berkeley by
8 * Ralph Campbell. 8 * Ralph Campbell.
9 * 9 *
10 * Redistribution and use in source and binary forms, with or without 10 * Redistribution and use in source and binary forms, with or without
11 * modification, are permitted provided that the following conditions 11 * modification, are permitted provided that the following conditions
12 * are met: 12 * are met:
13 * 1. Redistributions of source code must retain the above copyright 13 * 1. Redistributions of source code must retain the above copyright
14 * notice, this list of conditions and the following disclaimer. 14 * notice, this list of conditions and the following disclaimer.
@@ -571,27 +571,27 @@ _C_LABEL(x): @@ -571,27 +571,27 @@ _C_LABEL(x):
571#endif 571#endif
572 572
573/* compiler define */ 573/* compiler define */
574#if defined(__OCTEON__) 574#if defined(__OCTEON__)
575 /* early cnMIPS have erratum which means 2 */ 575 /* early cnMIPS have erratum which means 2 */
576#define LLSCSYNC sync 4; sync 4 576#define LLSCSYNC sync 4; sync 4
577#define BDSYNC sync 577#define BDSYNC sync
578#define BDSYNC_ACQ sync 578#define BDSYNC_ACQ sync
579#define SYNC_ACQ sync 579#define SYNC_ACQ sync
580#define SYNC_REL sync 580#define SYNC_REL sync
581#define BDSYNC_PLUNGER sync 4 581#define BDSYNC_PLUNGER sync 4
582#define SYNC_PLUNGER sync 4 582#define SYNC_PLUNGER sync 4
583#elif __mips >= 3 || !defined(__mips_o32) 583#elif __mips >= 3 || !defined(__mips_o32)
584#define LLSCSYNC sync 584#define LLSCSYNC /* nothing */
585#define BDSYNC sync 585#define BDSYNC sync
586#define BDSYNC_ACQ sync 586#define BDSYNC_ACQ sync
587#define SYNC_ACQ sync 587#define SYNC_ACQ sync
588#define SYNC_REL sync 588#define SYNC_REL sync
589#define BDSYNC_PLUNGER nop 589#define BDSYNC_PLUNGER nop
590#define SYNC_PLUNGER /* nothing */ 590#define SYNC_PLUNGER /* nothing */
591#else 591#else
592#define LLSCSYNC /* nothing */ 592#define LLSCSYNC /* nothing */
593#define BDSYNC nop 593#define BDSYNC nop
594#define BDSYNC_ACQ nop 594#define BDSYNC_ACQ nop
595#define SYNC_ACQ /* nothing */ 595#define SYNC_ACQ /* nothing */
596#define SYNC_REL /* nothing */ 596#define SYNC_REL /* nothing */
597#define BDSYNC_PLUNGER nop 597#define BDSYNC_PLUNGER nop