--- /sys/src/9/port/proc.c +++ /sys/src/9/port/proc.c @@ -1381,13 +1381,15 @@ procflushseg(Segment *s) * wait for all processors to take a clock interrupt * and flush their mmu's */ -again: - for(nm = 0; nm < conf.nmach; nm++){ - if(nm != m->machno && MACHP(nm)->flushmmu){ - sched(); - goto again; - } - } + /* + * since the 386 is short of registers, m always contains the constant + * MACHADDR, not MACHP(m->machno); see ../pc/dat.h. so we can't just + * compare addresses with m. + */ + for(nm = 0; nm < conf.nmach; nm++) + if(nm != m->machno) + while(MACHP(nm)->flushmmu) + sched(); } void