From 55e95b16db458b7f9abeca96e541acbdf8d7f85b Mon Sep 17 00:00:00 2001 From: rtm Date: Mon, 12 Jun 2006 15:22:12 +0000 Subject: import --- main.c | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 main.c (limited to 'main.c') diff --git a/main.c b/main.c new file mode 100644 index 0000000..a1c08c9 --- /dev/null +++ b/main.c @@ -0,0 +1,40 @@ +#include "types.h" +#include "param.h" +#include "mmu.h" +#include "proc.h" +#include "defs.h" +#include "x86.h" + +char junk1[20000]; +char junk2[20000] = { 1 }; + +main() +{ + struct proc *p; + + cprintf("\nxV6\n\n"); + + // initialize physical memory allocator + kinit(); + + // create fake process zero + p = &proc[0]; + p->state = WAITING; + p->sz = PAGE; + p->mem = kalloc(p->sz); + memset(p->mem, 0, p->sz); + p->kstack = kalloc(KSTACKSIZE); + p->tf = (struct Trapframe *) (p->kstack + KSTACKSIZE - sizeof(struct Trapframe)); + memset(p->tf, 0, sizeof(struct Trapframe)); + p->tf->tf_es = p->tf->tf_ds = p->tf->tf_ss = (SEG_UDATA << 3) | 3; + p->tf->tf_cs = (SEG_UCODE << 3) | 3; + p->tf->tf_eflags = FL_IF; + setupsegs(p); + + p = newproc(&proc[0]); + // xxx copy instructions to p->mem + p->tf->tf_eip = 0; + p->tf->tf_esp = p->sz; + + swtch(&proc[0]); +} -- cgit v1.2.3