From 5cb7877e0f1dd09a513859f018d3981a9c9d17ad Mon Sep 17 00:00:00 2001 From: kaashoek <kaashoek> Date: Fri, 8 Sep 2006 14:48:07 +0000 Subject: [PATCH] use bootstrap processor as specified by MP table. typically 0, but not guaranteed. --- main.c | 12 +++++++----- mp.c | 3 ++- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/main.c b/main.c index cd893d5..5781322 100644 --- a/main.c +++ b/main.c @@ -23,22 +23,24 @@ void main0(void) { int i; + int bcpu; struct proc *p; // clear BSS memset(edata, 0, end - edata); - // switch to bootstrap processor's stack - asm volatile("movl %0, %%esp" : : "r" (cpus[0].mpstack + MPSTACK - 32)); - asm volatile("movl %0, %%ebp" : : "r" (cpus[0].mpstack + MPSTACK)); - // Prevent release() from enabling interrupts. for(i=0; i<NCPU; i++) cpus[i].nlock = 1; mp_init(); // collect info about this machine + bcpu = mp_bcpu(); + + // switch to bootstrap processor's stack + asm volatile("movl %0, %%esp" : : "r" (cpus[0].mpstack + MPSTACK - 32)); + asm volatile("movl %0, %%ebp" : : "r" (cpus[0].mpstack + MPSTACK)); - lapic_init(mp_bcpu()); + lapic_init(bcpu); cprintf("\ncpu%d: starting xv6\n\n", cpu()); diff --git a/mp.c b/mp.c index 59beda3..c34982d 100644 --- a/mp.c +++ b/mp.c @@ -191,7 +191,8 @@ mp_init(void) int mp_bcpu(void) { - return bcpu-cpus; + if (ismp) return bcpu-cpus; + else return 0; } extern void mpmain(void); -- GitLab