summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Morris <[email protected]>2012-08-28 12:57:13 -0400
committerRobert Morris <[email protected]>2012-08-28 12:57:13 -0400
commitc1ee7eb4d31bd17e48857479fec8f4c2065d4b7d (patch)
treee54d9304b6f5d90bdf7a926808fd7d5923d39526
parent8960f60b30b69a1f45ffa9d8b2b204714725f1fa (diff)
parent951b77f7eced2165312d5c12d6256e874dba10f8 (diff)
downloadxv6-labs-c1ee7eb4d31bd17e48857479fec8f4c2065d4b7d.tar.gz
xv6-labs-c1ee7eb4d31bd17e48857479fec8f4c2065d4b7d.tar.bz2
xv6-labs-c1ee7eb4d31bd17e48857479fec8f4c2065d4b7d.zip
Merge branch 'master' of git+ssh://amsterdam.csail.mit.edu/home/am0/6.828/xv6
-rw-r--r--defs.h4
-rw-r--r--exec.c2
-rw-r--r--lapic.c2
-rw-r--r--main.c4
-rwxr-xr-xprintpcs14
-rw-r--r--proc.c2
-rw-r--r--syscall.c4
-rw-r--r--syscall.h1
-rw-r--r--vm.c10
9 files changed, 27 insertions, 16 deletions
diff --git a/defs.h b/defs.h
index 7f1e88d..23b1019 100644
--- a/defs.h
+++ b/defs.h
@@ -74,7 +74,7 @@ void kbdintr(void);
int cpunum(void);
extern volatile uint* lapic;
void lapiceoi(void);
-void lapicinit(int);
+void lapicinit(void);
void lapicstartap(uchar, uint);
void microdelay(int);
@@ -164,7 +164,7 @@ void uartputc(int);
void seginit(void);
void kvmalloc(void);
void vmenable(void);
-pde_t* setupkvm();
+pde_t* setupkvm(void);
char* uva2ka(pde_t*, char*);
int allocuvm(pde_t*, uint, uint);
int deallocuvm(pde_t*, uint, uint);
diff --git a/exec.c b/exec.c
index 312a5c3..a85e203 100644
--- a/exec.c
+++ b/exec.c
@@ -29,7 +29,7 @@ exec(char *path, char **argv)
if(elf.magic != ELF_MAGIC)
goto bad;
- if((pgdir = setupkvm(kalloc)) == 0)
+ if((pgdir = setupkvm()) == 0)
goto bad;
// Load program into memory.
diff --git a/lapic.c b/lapic.c
index effceb1..94b484f 100644
--- a/lapic.c
+++ b/lapic.c
@@ -50,7 +50,7 @@ lapicw(int index, int value)
//PAGEBREAK!
void
-lapicinit(int c)
+lapicinit(void)
{
if(!lapic)
return;
diff --git a/main.c b/main.c
index c0c3a91..712958f 100644
--- a/main.c
+++ b/main.c
@@ -20,7 +20,7 @@ main(void)
kinit1(end, P2V(4*1024*1024)); // phys page allocator
kvmalloc(); // kernel page table
mpinit(); // collect info about this machine
- lapicinit(mpbcpu());
+ lapicinit();
seginit(); // set up segments
cprintf("\ncpu%d: starting xv6\n\n", cpu->id);
picinit(); // interrupt controller
@@ -48,7 +48,7 @@ mpenter(void)
{
switchkvm();
seginit();
- lapicinit(cpunum());
+ lapicinit();
mpmain();
}
diff --git a/printpcs b/printpcs
new file mode 100755
index 0000000..81d039b
--- /dev/null
+++ b/printpcs
@@ -0,0 +1,14 @@
+#!/bin/sh
+
+# Decode the symbols from a panic EIP list
+
+# Find a working addr2line
+for p in i386-jos-elf-addr2line addr2line; do
+ if which $p 2>&1 >/dev/null && \
+ $p -h 2>&1 | grep -q '\belf32-i386\b'; then
+ break
+ fi
+done
+
+# Enable as much pretty-printing as this addr2line can do
+$p $($p -h | grep ' -[aipsf] ' | awk '{print $1}') -e kernel "$@"
diff --git a/proc.c b/proc.c
index 05cb85f..bcdbfea 100644
--- a/proc.c
+++ b/proc.c
@@ -83,7 +83,7 @@ userinit(void)
p = allocproc();
initproc = p;
- if((p->pgdir = setupkvm(kalloc)) == 0)
+ if((p->pgdir = setupkvm()) == 0)
panic("userinit: out of memory?");
inituvm(p->pgdir, _binary_initcode_start, (int)_binary_initcode_size);
p->sz = PGSIZE;
diff --git a/syscall.c b/syscall.c
index 45f758e..799ebc2 100644
--- a/syscall.c
+++ b/syscall.c
@@ -129,9 +129,7 @@ syscall(void)
int num;
num = proc->tf->eax;
- if(num >= 0 && num < SYS_open && syscalls[num]) {
- proc->tf->eax = syscalls[num]();
- } else if (num >= SYS_open && num < NELEM(syscalls) && syscalls[num]) {
+ if(num > 0 && num < NELEM(syscalls) && syscalls[num]) {
proc->tf->eax = syscalls[num]();
} else {
cprintf("%d %s: unknown sys call %d\n",
diff --git a/syscall.h b/syscall.h
index 59a4576..bc5f356 100644
--- a/syscall.h
+++ b/syscall.h
@@ -13,7 +13,6 @@
#define SYS_sbrk 12
#define SYS_sleep 13
#define SYS_uptime 14
-
#define SYS_open 15
#define SYS_write 16
#define SYS_mknod 17
diff --git a/vm.c b/vm.c
index fa7b706..7cfdc4e 100644
--- a/vm.c
+++ b/vm.c
@@ -118,15 +118,15 @@ static struct kmap {
uint phys_end;
int perm;
} kmap[] = {
- { (void*) KERNBASE, 0, EXTMEM, PTE_W}, // I/O space
- { (void*) KERNLINK, V2P(KERNLINK), V2P(data), 0}, // kernel text+rodata
- { (void*) data, V2P(data), PHYSTOP, PTE_W}, // kernel data, memory
- { (void*) DEVSPACE, DEVSPACE, 0, PTE_W}, // more devices
+ { (void*)KERNBASE, 0, EXTMEM, PTE_W}, // I/O space
+ { (void*)KERNLINK, V2P(KERNLINK), V2P(data), 0}, // kernel text+rodata
+ { (void*)data, V2P(data), PHYSTOP, PTE_W}, // kernel data+memory
+ { (void*)DEVSPACE, DEVSPACE, 0, PTE_W}, // more devices
};
// Set up kernel part of a page table.
pde_t*
-setupkvm()
+setupkvm(void)
{
pde_t *pgdir;
struct kmap *k;