コード例 #1
0
ファイル: store_n.c プロジェクト: jroelofs/darwin-gcc-5
void
SIZE(libat_store) (UTYPE *mptr, UTYPE newval, int smodel)
{
    UWORD magic;

    pre_seq_barrier (smodel);
    magic = protect_start (mptr);

    *mptr = newval;

    protect_end (mptr, magic);
    post_seq_barrier (smodel);
}
コード例 #2
0
ファイル: load_n.c プロジェクト: ChaosJohn/gcc
UTYPE
SIZE(libat_load) (UTYPE *mptr, int smodel)
{
  UTYPE ret;
  UWORD magic;

  pre_seq_barrier (smodel);
  magic = protect_start (mptr);

  ret = *mptr;

  protect_end (mptr, magic);
  post_seq_barrier (smodel);

  return ret;
}
コード例 #3
0
ファイル: tas_n.c プロジェクト: AlexMioMio/gcc
bool
SIZE(libat_test_and_set) (UTYPE *mptr, int smodel)
{
  UTYPE oldval;
  UWORD magic;

  pre_seq_barrier (smodel);
  magic = protect_start (mptr);

  oldval = *mptr;
  *mptr = __GCC_ATOMIC_TEST_AND_SET_TRUEVAL;

  protect_end (mptr, magic);
  post_seq_barrier (smodel);

  return oldval != 0;
}
コード例 #4
0
ファイル: exch_n.c プロジェクト: 0day-ci/gcc
UTYPE
SIZE(libat_exchange) (UTYPE *mptr, UTYPE newval, int smodel UNUSED)
{
  UTYPE oldval;
  UWORD magic;

  pre_seq_barrier (smodel);
  magic = protect_start (mptr);

  oldval = *mptr;
  *mptr = newval;

  protect_end (mptr, magic);
  post_seq_barrier (smodel);

  return oldval;
}
コード例 #5
0
ファイル: fop_n.c プロジェクト: kostyll/gccpy
UTYPE
SIZE(C3(libat_,NAME,_fetch)) (UTYPE *mptr, UTYPE opval, int smodel UNUSED)
{
    UTYPE ret;
    UWORD magic;

    pre_seq_barrier (smodel);
    magic = protect_start (mptr);

    ret = OP (*mptr, opval);
    *mptr = ret;

    protect_end (mptr, magic);
    post_seq_barrier (smodel);

    return ret;
}
コード例 #6
0
ファイル: cas_n.c プロジェクト: android-ide/toolchain-gcc
bool
SIZE(libat_compare_exchange) (UTYPE *mptr, UTYPE *eptr, UTYPE newval,
			      int smodel, int fmodel UNUSED)
{
  UTYPE oldval;
  UWORD magic;
  bool ret;

  pre_seq_barrier (smodel);
  magic = protect_start (mptr);

  oldval = *mptr;
  ret = (oldval == *eptr);
  if (ret)
      *mptr = newval;
  else
  *eptr = oldval;

  protect_end (mptr, magic);
  post_seq_barrier (smodel);

  return ret;
}