提交 b63bb0fd 创建 作者: rsc's avatar rsc

Clean up lapic code.

One initialization function now, not three. Use #defines instead of enums (consistent with other code, but sigh). Still boots in Bochs in SMP mode.
上级 112873bc
......@@ -69,12 +69,12 @@ void kinit(void);
// lapic.c
int cpu(void);
extern uint* lapicaddr;
extern volatile uint* lapic;
void lapic_disableintr(void);
void lapic_enableintr(void);
void lapic_eoi(void);
void lapic_init(int);
void lapic_startap(uchar, int);
void lapic_startap(uchar, uint);
void lapic_timerinit(void);
void lapic_timerintr(void);
......
差异被折叠。
......@@ -37,7 +37,6 @@ main0(void)
asm volatile("movl %0, %%ebp" : : "r" (cpus[bcpu].mpstack+MPSTACK));
lapic_init(bcpu);
cprintf("\ncpu%d: starting xv6\n\n", cpu());
pinit(); // process table
......@@ -53,10 +52,7 @@ main0(void)
console_init(); // I/O devices & their interrupts
ide_init(); // disk
mp_startthem(); // other CPUs
if(ismp){
lapic_timerinit(); // smp timer
lapic_enableintr(); // local interrupts
}else
if(!ismp)
pit8253_timerinit(); // uniprocessor timer
userinit(); // first user process
......@@ -74,8 +70,6 @@ mpmain(void)
cprintf("cpu%d: starting\n", cpu());
idtinit();
lapic_init(cpu());
lapic_timerinit();
lapic_enableintr();
setupsegs(0);
cpuid(0, 0, 0, 0, 0); // memory barrier
......
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论