equal
deleted
inserted
replaced
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"); |