mirror of
https://codeberg.org/ziglang/zig.git
synced 2026-04-29 12:08:48 +03:00
66d97267c7
This excludes all headers in /usr/include/dev because that directory is bonkers huge (18M). We can add these on an as-needed basis.
45 lines
1.4 KiB
C
Vendored
45 lines
1.4 KiB
C
Vendored
/* $OpenBSD: atomic.h,v 1.3 2020/07/08 15:53:59 visa Exp $ */
|
|
|
|
/*
|
|
* Copyright (c) 2017 Visa Hankala
|
|
*
|
|
* Permission to use, copy, modify, and/or distribute this software for any
|
|
* purpose with or without fee is hereby granted, provided that the above
|
|
* copyright notice and this permission notice appear in all copies.
|
|
*
|
|
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
|
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
|
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
|
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
|
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
|
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
*/
|
|
|
|
#ifndef _OCTEON_ATOMIC_H_
|
|
#define _OCTEON_ATOMIC_H_
|
|
|
|
#ifdef _KERNEL
|
|
|
|
static inline void
|
|
octeon_syncw(void)
|
|
{
|
|
__asm__ volatile (
|
|
" .set push\n"
|
|
" .set arch=octeon\n"
|
|
/* Issue the barrier twice to work around CN3xxx erratum Core-401.
|
|
* A single syncw might not enforce write ordering properly. */
|
|
" syncw\n"
|
|
" syncw\n"
|
|
" .set pop\n"
|
|
: : : "memory");
|
|
}
|
|
|
|
#define membar_consumer() __asm__ volatile ("" : : : "memory")
|
|
#define membar_producer() octeon_syncw()
|
|
|
|
#endif /* _KERNEL */
|
|
|
|
#include <mips64/atomic.h>
|
|
|
|
#endif /* !_OCTEON_ATOMIC_H_ */ |