summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrsc <rsc>2007-08-08 09:10:16 +0000
committerrsc <rsc>2007-08-08 09:10:16 +0000
commit5d0fe3445bbe19b85c32ed066b134d7e6ad8cc9d (patch)
tree775f34135f9f0e4d10187100ce2c405f24b45fdc
parent5f0c20ec14dc1c97519e0843d715fd91b430e77c (diff)
downloadxv6-labs-5d0fe3445bbe19b85c32ed066b134d7e6ad8cc9d.tar.gz
xv6-labs-5d0fe3445bbe19b85c32ed066b134d7e6ad8cc9d.tar.bz2
xv6-labs-5d0fe3445bbe19b85c32ed066b134d7e6ad8cc9d.zip
more bugs
-rw-r--r--BUGS7
-rw-r--r--main.c6
2 files changed, 3 insertions, 10 deletions
diff --git a/BUGS b/BUGS
index 509b414..167f5c5 100644
--- a/BUGS
+++ b/BUGS
@@ -4,13 +4,6 @@ index:
mmu.h:
funny \ alignment in mmu.h
-main.c:
- should use static int bcpu to avoid having live
- stack variable across the asm volatile that
- changes %esp and %ebp.
-
- cpus[0] -> cpus[bcpu]
-
proc.c:
as a consequence of the implementation of proc_kill,
any loop calling sleep should check for p->killed
diff --git a/main.c b/main.c
index ad0c9c2..0d2a017 100644
--- a/main.c
+++ b/main.c
@@ -23,7 +23,7 @@ void
main0(void)
{
int i;
- int bcpu;
+ static int bcpu; // cannot be on stack
struct proc *p;
// clear BSS
@@ -37,8 +37,8 @@ main0(void)
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));
+ asm volatile("movl %0, %%esp" : : "r" (cpus[bcpu].mpstack + MPSTACK - 32));
+ asm volatile("movl %0, %%ebp" : : "r" (cpus[bcpu].mpstack + MPSTACK));
lapic_init(bcpu);