| plan 9 kernel history: overview | file list | diff list |
1991/1214/pc/trap.c (diff list | history)
| 1991/1114/sys/src/9/pc/trap.c:136,142 – 1991/1214/sys/src/9/pc/trap.c:136,142 (short | long | prev | next) | ||
| 1991/0904 | sethvec(39, intr39, SEGIG, 0); | |
| 1991/0703 | /* | |
| 1991/0710 |
| |
| 1991/1214 | * system calls and break points | |
| 1991/0710 | */ | |
| 1991/0910 | sethvec(Syscallvec, intr64, SEGTG, 3); setvec(Syscallvec, (void (*)(Ureg*))syscall); | |
| 1991/1114/sys/src/9/pc/trap.c:224,229 – 1991/1214/sys/src/9/pc/trap.c:224,231 | ||
| 1991/1113 | } if(v>=256 || ivec[v] == 0){ | |
| 1991/1214 | if(v == 13) return; | |
| 1991/1113 | if(v <= 16){ if(user){ sprint(buf, "sys: %s pc=0x%lux", excname[v], ur->pc); | |
| 1991/1114/sys/src/9/pc/trap.c:247,273 – 1991/1214/sys/src/9/pc/trap.c:249,254 | ||
| 1991/0806 | } /* | |
| 1991/0710 |
| |
| 1991/0718 | * dump registers */ void | |
| 1991/1114/sys/src/9/pc/trap.c:277,289 – 1991/1214/sys/src/9/pc/trap.c:258,275 | ||
| 1991/0718 | print("registers for %s %d\n", u->p->text, u->p->pid); else print("registers for kernel\n"); | |
| 1991/0808 |
| |
| 1991/0718 | ||
| 1991/1214 | print("FLAGS=%lux ECODE=%lux CS=%lux PC=%lux", ur->flags, ur->ecode, ur->cs&0xff, ur->pc); if(ur == (Ureg*)UREGADDR) print(" SS=%lux USP=%lux\n", ur->ss&0xff, ur->usp); else print("\n"); | |
| 1991/0718 | print(" AX %8.8lux BX %8.8lux CX %8.8lux DX %8.8lux\n", ur->ax, ur->bx, ur->cx, ur->dx); | |
| 1991/1214 | print(" SI %8.8lux DI %8.8lux BP %8.8lux\n", ur->si, ur->di, ur->bp); print(" DS %4.4ux ES %4.4ux FS %4.4ux GS %4.4ux\n", ur->ds&0xffff, ur->es&0xffff, ur->fs&0xffff, ur->gs&0xffff); | |
| 1991/0718 | } | |
| 1991/0720 | void | |
| 1991/1114/sys/src/9/pc/trap.c:291,300 – 1991/1214/sys/src/9/pc/trap.c:277,292 | ||
| 1991/0720 | { } | |
| 1991/1214 | long execregs(ulong entry, ulong ssize, ulong nargs) | |
| 1991/0720 | { | |
| 1991/1214 | ulong *sp; sp = (ulong*)(USTKTOP - ssize); *--sp = nargs; ((Ureg*)UREGADDR)->usp = (ulong)sp; | |
| 1991/0720 | ((Ureg*)UREGADDR)->pc = entry; | |
| 1991/1214 | return USTKTOP-BY2WD; /* address of user-level clock */ | |
| 1991/0720 | } | |
| 1991/0718 | /* | |
| 1991/1114/sys/src/9/pc/trap.c:312,318 – 1991/1214/sys/src/9/pc/trap.c:304,309 | ||
| 1991/0720 | ||
| 1991/0718 | u->p->insyscall = 1; u->p->pc = ur->pc; | |
| 1991/1112 |
| |
| 1991/0720 | if((ur->cs)&0xffff == KESEL) panic("recursive system call"); | |
| 1991/0718 | ||