links();
chandevreset();
pageinit();
- swapinit();
sharedseginit();
fpsave(&initfp);
initfp.fpscr = 0;
s->flushme++;
p->seg[TSEG] = s;
pg = newpage(1, 0, UTZERO);
- memset(pg->cachectl, PG_TXTFLUSH, sizeof(pg->cachectl));
+ pg->txtflush = ~0;
segpage(s, pg);
k = kmap(s->map[0]->pages[0]);
memmove((ulong*)VA(k), initcode, sizeof initcode);
}
void
-exit(int ispanic)
+exit(int)
{
- int ms, once;
-
- lock(&active);
- if(ispanic)
- active.ispanic = ispanic;
- else if(m->machno == 0 && (active.machs & (1<<m->machno)) == 0)
- active.ispanic = 0;
- once = active.machs & (1<<m->machno);
- active.machs &= ~(1<<m->machno);
- active.exiting = 1;
- unlock(&active);
-
- if(once)
- print("cpu%d: exiting\n", m->machno);
- spllo();
- for(ms = 5*1000; ms > 0; ms -= TK2MS(2)){
- delay(TK2MS(2));
- if(active.machs == 0 && consactive() == 0)
- break;
- }
-
- if(active.ispanic && m->machno == 0){
- if(cpuserver)
- delay(10000);
- else if(conf.monitor)
- for(;;);
- }
- else
- delay(1000);
-
+ cpushutdown();
+ for(;;) idlehands();
}
/*
p->kentry -= t;
if(p->fpstate == FPactive){
if(p->state != Moribund)
- fpsave(&up->fpsave);
+ fpsave(up->fpsave);
p->fpstate = FPinactive;
}
}
*/
imagmem->maxsize = kpages;
}
-
-// conf.monitor = 1; /* BUG */
}
static int
return 0;
}
+
+void
+setupwatchpts(Proc *, Watchpt *, int n)
+{
+ if(n > 0)
+ error("no watchpoints");
+}