diff options
author | rtm <rtm> | 2006-06-13 15:50:40 +0000 |
---|---|---|
committer | rtm <rtm> | 2006-06-13 15:50:40 +0000 |
commit | 84eb544b23b17fed07b8c33142d48fdceffce10c (patch) | |
tree | 9a55dccdf62c1c68f265fa07aed35c92ad76dbf9 /trap.c | |
parent | 0a70d042d04e084da4226e7d0d684dedcae06d78 (diff) | |
download | xv6-labs-84eb544b23b17fed07b8c33142d48fdceffce10c.tar.gz xv6-labs-84eb544b23b17fed07b8c33142d48fdceffce10c.tar.bz2 xv6-labs-84eb544b23b17fed07b8c33142d48fdceffce10c.zip |
foo
Diffstat (limited to 'trap.c')
-rw-r--r-- | trap.c | 34 |
1 files changed, 34 insertions, 0 deletions
@@ -0,0 +1,34 @@ +#include "types.h" +#include "param.h" +#include "mmu.h" +#include "proc.h" +#include "defs.h" +#include "x86.h" + +struct Gatedesc idt[256]; +struct Pseudodesc idt_pd = { 0, sizeof(idt) - 1, (unsigned) &idt }; +extern unsigned vectors[]; /* vectors.S, array of 256 entry point addresses */ + +extern void trapenter(); +extern void trapenter1(); + +void +tinit() +{ + int i; + + for(i = 0; i < 256; i++){ + SETGATE(idt[i], 1, SEG_KCODE << 3, vectors[i], 3); + } + asm volatile("lidt %0" : : "g" (idt_pd.pd_lim)); +} + +void +trap(struct Trapframe *tf) +{ + /* which process are we running? */ + cprintf("trap %d tf %x\n", tf->tf_trapno, tf); + while(1) + ; + // XXX probably ought to lgdt on trap return +} |