src/hotspot/os/bsd/os_bsd.cpp
changeset 59248 e92153ed8bdc
parent 59247 56bf71d64d51
child 59249 29b0d0b61615
equal deleted inserted replaced
59247:56bf71d64d51 59248:e92153ed8bdc
  3262   uint apic_id = edx;
  3262   uint apic_id = edx;
  3263   int processor_id = Atomic::load(&mapping[apic_id]);
  3263   int processor_id = Atomic::load(&mapping[apic_id]);
  3264 
  3264 
  3265   while (processor_id < 0) {
  3265   while (processor_id < 0) {
  3266     if (Atomic::cmpxchg(-2, &mapping[apic_id], -1) == -1) {
  3266     if (Atomic::cmpxchg(-2, &mapping[apic_id], -1) == -1) {
  3267       Atomic::store(Atomic::add(1, &next_processor_id) - 1, &mapping[apic_id]);
  3267       Atomic::store(&mapping[apic_id], Atomic::add(1, &next_processor_id) - 1);
  3268     }
  3268     }
  3269     processor_id = Atomic::load(&mapping[apic_id]);
  3269     processor_id = Atomic::load(&mapping[apic_id]);
  3270   }
  3270   }
  3271 
  3271 
  3272   assert(processor_id >= 0 && processor_id < os::processor_count(), "invalid processor id");
  3272   assert(processor_id >= 0 && processor_id < os::processor_count(), "invalid processor id");