atomic_mips64x.mx raw

   1  // Copyright 2015 The Go Authors. All rights reserved.
   2  // Use of this source code is governed by a BSD-style
   3  // license that can be found in the LICENSE file.
   4  
   5  //go:build mips64 || mips64le
   6  
   7  package atomic
   8  
   9  import "unsafe"
  10  
  11  //go:noescape
  12  func Xadd(ptr *uint32, delta int32) uint32
  13  
  14  //go:noescape
  15  func Xadd64(ptr *uint64, delta int64) uint64
  16  
  17  //go:noescape
  18  func Xadduintptr(ptr *uintptr, delta uintptr) uintptr
  19  
  20  //go:noescape
  21  func Xchg(ptr *uint32, new uint32) uint32
  22  
  23  //go:noescape
  24  func Xchg8(ptr *uint8, new uint8) uint8
  25  
  26  //go:noescape
  27  func Xchg64(ptr *uint64, new uint64) uint64
  28  
  29  //go:noescape
  30  func Xchguintptr(ptr *uintptr, new uintptr) uintptr
  31  
  32  //go:noescape
  33  func Load(ptr *uint32) uint32
  34  
  35  //go:noescape
  36  func Load8(ptr *uint8) uint8
  37  
  38  //go:noescape
  39  func Load64(ptr *uint64) uint64
  40  
  41  // NO go:noescape annotation; *ptr escapes if result escapes (#31525)
  42  func Loadp(ptr unsafe.Pointer) unsafe.Pointer
  43  
  44  //go:noescape
  45  func LoadAcq(ptr *uint32) uint32
  46  
  47  //go:noescape
  48  func LoadAcq64(ptr *uint64) uint64
  49  
  50  //go:noescape
  51  func LoadAcquintptr(ptr *uintptr) uintptr
  52  
  53  //go:noescape
  54  func And8(ptr *uint8, val uint8)
  55  
  56  //go:noescape
  57  func Or8(ptr *uint8, val uint8)
  58  
  59  // NOTE: Do not add atomicxor8 (XOR is not idempotent).
  60  
  61  //go:noescape
  62  func And(ptr *uint32, val uint32)
  63  
  64  //go:noescape
  65  func Or(ptr *uint32, val uint32)
  66  
  67  //go:noescape
  68  func And32(ptr *uint32, val uint32) uint32
  69  
  70  //go:noescape
  71  func Or32(ptr *uint32, val uint32) uint32
  72  
  73  //go:noescape
  74  func And64(ptr *uint64, val uint64) uint64
  75  
  76  //go:noescape
  77  func Or64(ptr *uint64, val uint64) uint64
  78  
  79  //go:noescape
  80  func Anduintptr(ptr *uintptr, val uintptr) uintptr
  81  
  82  //go:noescape
  83  func Oruintptr(ptr *uintptr, val uintptr) uintptr
  84  
  85  //go:noescape
  86  func Cas64(ptr *uint64, old, new uint64) bool
  87  
  88  //go:noescape
  89  func CasRel(ptr *uint32, old, new uint32) bool
  90  
  91  //go:noescape
  92  func Store(ptr *uint32, val uint32)
  93  
  94  //go:noescape
  95  func Store8(ptr *uint8, val uint8)
  96  
  97  //go:noescape
  98  func Store64(ptr *uint64, val uint64)
  99  
 100  // NO go:noescape annotation; see atomic_pointer.go.
 101  func StorepNoWB(ptr unsafe.Pointer, val unsafe.Pointer)
 102  
 103  //go:noescape
 104  func StoreRel(ptr *uint32, val uint32)
 105  
 106  //go:noescape
 107  func StoreRel64(ptr *uint64, val uint64)
 108  
 109  //go:noescape
 110  func StoreReluintptr(ptr *uintptr, val uintptr)
 111