summaryrefslogtreecommitdiffstats
path: root/sys/pc98/pc98/machdep.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/pc98/pc98/machdep.c')
-rw-r--r--sys/pc98/pc98/machdep.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/sys/pc98/pc98/machdep.c b/sys/pc98/pc98/machdep.c
index ed253cb..ddd958c 100644
--- a/sys/pc98/pc98/machdep.c
+++ b/sys/pc98/pc98/machdep.c
@@ -815,9 +815,14 @@ cpu_idle(void)
#ifndef SMP
if (cpu_idle_hlt) {
disable_intr();
- if (procrunnable()) {
+ if (procrunnable()) {
enable_intr();
} else {
+ /*
+ * we must absolutely guarentee that hlt is the
+ * absolute next instruction after sti or we
+ * introduce a timing window.
+ */
__asm __volatile("sti; hlt");
}
}
@@ -1758,9 +1763,9 @@ init386(first)
* Initialize mutexes.
*
* icu_lock: in order to allow an interrupt to occur in a critical
- * section, to set pcpu->ipending (etc...) properly, we
- * must be able to get the icu lock, so it can't be under
- * witness.
+ * section, to set pcpu->ipending (etc...) properly, we
+ * must be able to get the icu lock, so it can't be
+ * under witness.
*/
mtx_init(&Giant, "Giant", MTX_DEF | MTX_RECURSE);
mtx_init(&sched_lock, "sched lock", MTX_SPIN | MTX_RECURSE);
OpenPOWER on IntegriCloud