root/src/pkg/runtime/atomic_386.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. runtime揃atomicload
  2. runtime揃atomicloadp
  3. runtime揃xadd64
  4. runtime揃xchg64

// Copyright 2009 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

#include "runtime.h"
#include "../../cmd/ld/textflag.h"

#pragma textflag NOSPLIT
uint32
runtime揃atomicload(uint32 volatile* addr)
{
        return *addr;
}

#pragma textflag NOSPLIT
void*
runtime揃atomicloadp(void* volatile* addr)
{
        return *addr;
}

#pragma textflag NOSPLIT
uint64
runtime揃xadd64(uint64 volatile* addr, int64 v)
{
        uint64 old;

        do
                old = *addr;
        while(!runtime揃cas64(addr, old, old+v));

        return old+v;
}

#pragma textflag NOSPLIT
uint64
runtime揃xchg64(uint64 volatile* addr, uint64 v)
{
        uint64 old;

        do
                old = *addr;
        while(!runtime揃cas64(addr, old, v));

        return old;
}

/* [<][>][^][v][top][bottom][index][help] */