diff --git a/boot/qemu b/boot/qemu index 379c53ba..bdb039c4 100755 --- a/boot/qemu +++ b/boot/qemu @@ -30,7 +30,7 @@ u9fs="guestfwd=tcp:10.0.2.1:564-cmd:../sys/src/cmd/unix/u9fs/u9fs -a none -u $US tftp='tftp=..' mac=mac=52:54:00:12:34:56 -qemu-system-x86_64 -m 1G -smp 1 -serial stdio \ +qemu-system-x86_64 -m 1G -smp 2 -serial stdio \ -drive file=$pxe,format=raw -snapshot \ -device virtio-net-pci,netdev=net0,$mac \ -netdev "user,id=net0,$u9fs,$tftp" diff --git a/cfg/pxe/525400123456 b/cfg/pxe/525400123456 index 7bfb4bd6..16491012 100644 --- a/cfg/pxe/525400123456 +++ b/cfg/pxe/525400123456 @@ -28,7 +28,7 @@ fs=10.0.2.1 auth=10.0.2.1 sysname=gnot *nobiosload=1 -*nomp=1 +#*nomp=1 partition=new factotumopts=-n user=glenda diff --git a/sys/src/9k/k10/mem.h b/sys/src/9k/k10/mem.h index 3e6d34ed..bb930e48 100644 --- a/sys/src/9k/k10/mem.h +++ b/sys/src/9k/k10/mem.h @@ -56,6 +56,7 @@ */ #define UTZERO (0+2*MiB) /* first address in user text */ #define UTROUND(t) ROUNDUP((t), 2*MiB) +#define UADDRMASK 0x00007fffffffffffull /* canonical address mask */ #define USTKTOP 0x00007ffffffff000ull #define USTKSIZE (16*1024*1024) /* size of user stack */ #define TSTKTOP (USTKTOP-USTKSIZE) /* end of new stack in sysexec */ diff --git a/sys/src/9k/k10/trap.c b/sys/src/9k/k10/trap.c index 4592a143..8fbc9809 100644 --- a/sys/src/9k/k10/trap.c +++ b/sys/src/9k/k10/trap.c @@ -621,24 +621,14 @@ userpc(Ureg* ureg) void setregisters(Ureg* ureg, char* pureg, char* uva, int n) { - u64int cs, flags, ss; - u16int ds, es, fs, gs; + u64int flags; - ss = ureg->ss; flags = ureg->flags; - cs = ureg->cs; - gs = ureg->cs; - fs = ureg->cs; - es = ureg->cs; - ds = ureg->cs; memmove(pureg, uva, n); - ureg->ds = ds; - ureg->es = es; - ureg->fs = fs; - ureg->gs = gs; - ureg->cs = cs; + ureg->cs = SSEL(SiUCS, SsTIGDT|SsRPL3); + ureg->ss = SSEL(SiUDS, SsTIGDT|SsRPL3); ureg->flags = (ureg->flags & 0x00ff) | (flags & 0xff00); - ureg->ss = ss; + ureg->ip &= UADDRMASK; } /* Give enough context in the ureg to produce a kernel stack for