diff options
Diffstat (limited to 'i386')
-rw-r--r-- | i386/intel/pmap.c | 3 | ||||
-rw-r--r-- | i386/intel/pmap.h | 1 |
2 files changed, 3 insertions, 1 deletions
diff --git a/i386/intel/pmap.c b/i386/intel/pmap.c index fa5bcc3c..129e600b 100644 --- a/i386/intel/pmap.c +++ b/i386/intel/pmap.c @@ -3013,7 +3013,8 @@ void signal_cpus( cpu_update_needed[which_cpu] = TRUE; simple_unlock(&update_list_p->lock); - if (((cpus_idle & (1 << which_cpu)) == 0) || (pmap == kernel_pmap)) + __sync_synchronize(); + if (((cpus_idle & (1 << which_cpu)) == 0)) interrupt_processor(which_cpu); use_list &= ~(1 << which_cpu); } diff --git a/i386/intel/pmap.h b/i386/intel/pmap.h index 78d27bc8..68784ac9 100644 --- a/i386/intel/pmap.h +++ b/i386/intel/pmap.h @@ -424,6 +424,7 @@ pt_entry_t *pmap_pte(const pmap_t pmap, vm_offset_t addr); * interrupt if this happens. \ */ \ i_bit_clear((my_cpu), &cpus_idle); \ + __sync_synchronize(); \ \ if (cpu_update_needed[(my_cpu)]) \ pmap_update_interrupt(); \ |