equivalente a x86 para LWARX e STWCX

Eu estou procurando um equivalente de LWARX e STWCX (como encontrado nos processadores PowerPC) ou uma maneira de implementar uma funcionalidade semelhante na plataforma x86. Além disso, onde seria o melhor lugar para descobrir sobre essas coisas (ou seja, bons artigos / sites / fóruns para a programação de bloqueio / espera-livre).

Editar
Eu acho que talvez precise dar mais detalhes, pois está sendo assumido que estou apenas procurando por uma operação CAS (compare e troque). O que estou tentando fazer é implementar um sistema de contagem de referência livre de bloqueio com ponteiros inteligentes que podem ser acessados ​​e alterados por vários threads. Eu basicamente preciso de uma maneira de implementar a seguinte função em um processador x86.

int* IncrementAndRetrieve(int **ptr)
{
  int val;
  int *pval;
  do
  {
    // fetch the pointer to the value
    pval = *ptr;

    // if its NULL, then just return NULL, the smart pointer
    // will then become NULL as well
    if(pval == NULL)
      return NULL;

    // Grab the reference count
    val = lwarx(pval);

    // make sure the pointer we grabbed the value from
    // is still the same one referred to by  'ptr'
    if(pval != *ptr)
      continue;

    // Increment the reference count via 'stwcx' if any other threads
    // have done anything that could potentially break then it should
    // fail and try again
  } while(!stwcx(pval, val + 1));
  return pval;
}

Eu realmente preciso de algo que imita o LWARX e o STWCX com bastante precisão (não consigo descobrir uma maneira de fazer isso com o CompareExchange, trocar ou adicionar funções que até agora encontrei para o x86).

obrigado