Equivalente a x86 para LWARX y STWCX

Estoy buscando un equivalente de LWARX y STWCX (como se encuentra en los procesadores PowerPC) o una forma de implementar una funcionalidad similar en la plataforma x86. Además, ¿dónde sería el mejor lugar para averiguar sobre tales cosas (es decir, buenos artículos / sitios web / foros para la programación de bloqueo / espera libre).

Editar
Creo que debo dar más detalles, ya que se supone que solo estoy buscando una operación CAS (comparar e intercambiar). Lo que estoy tratando de hacer es implementar un sistema de conteo de referencias sin bloqueo con punteros inteligentes a los que se puede acceder y cambiar mediante varios subprocesos. Básicamente necesito una forma de implementar la siguiente función en un procesador 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;
}

Realmente necesito algo que imite a LWARX y STWCX con bastante precisión para lograr esto (no puedo encontrar una manera de hacerlo con el Intercambio de Comparar, intercambiar o agregar funciones que he encontrado hasta ahora para el x86).

Gracias

Respuestas a la pregunta(6)

Su respuesta a la pregunta