fix a few oversights. Reference: /n/atom/patch/applied/execregs Date: Fri Nov 6 06:33:10 CET 2015 Signed-off-by: quanstro@quanstro.net --- /sys/src/9/port/sysproc.c Fri Nov 6 06:33:02 2015 +++ /sys/src/9/port/sysproc.c Fri Nov 6 06:33:02 2015 @@ -329,7 +329,7 @@ /* * 8-byte align SP for those (e.g. sparc) that need it. - * execregs() will subtract another 4 bytes for argc. + * execregs() will subtract another sizeof(uintptr) bytes for argc. */ if((ssize+4) & 7) ssize += 4; @@ -338,7 +338,7 @@ /* * Build the stack segment, putting it in kernel virtual for the moment */ - if(spage > TSTKSIZ) + if(spage > USTKSIZE/BY2PG/2) error(Enovmem); qlock(&up->seglock); @@ -376,6 +376,8 @@ charp += n; } free(file0); + file0 = nil; + USED(file0); free(up->text); up->text = elem; @@ -487,7 +489,8 @@ if(up->hang) up->procctl = Proc_stopme; - return execregs(entry, ssize, nargs); + /* should return void* */ + return (long)execregs(entry, ssize, nargs); } int --- /sys/src/9/pcpae/trap.c Fri Nov 6 06:33:02 2015 +++ /sys/src/9/pcpae/trap.c Fri Nov 6 06:33:02 2015 @@ -441,7 +441,7 @@ */ iprint("cpu%d: NMI PC %#p\n", m->machno, ureg->pc); while(m->machno != 0) - ; + halt(); } dumpregs(ureg); if(!user){ @@ -478,14 +478,14 @@ m->machno, up->text, up->pid); else iprint("cpu%d: registers for kernel\n", m->machno); - iprint("FLAGS=%luX TRAP=%luX ECODE=%luX PC=%luX", + iprint("FLAGS=%#p TRAP=%#p ECODE=%#p PC=%#p", ureg->flags, ureg->trap, ureg->ecode, ureg->pc); - iprint(" SS=%4.4luX USP=%luX\n", ureg->ss & 0xFFFF, ureg->sp); - iprint(" AX %8.8luX BX %8.8luX CX %8.8luX DX %8.8luX\n", + iprint(" SS=%.4lux USP=%lux\n", ureg->ss & 0xFFFF, ureg->sp); + iprint(" AX %.8lux BX %.8lux CX %.8lux DX %.8lux\n", ureg->ax, ureg->bx, ureg->cx, ureg->dx); - iprint(" SI %8.8luX DI %8.8luX BP %8.8luX\n", + iprint(" SI %.8lux DI %.8lux BP %.8lux\n", ureg->si, ureg->di, ureg->bp); - iprint(" CS %4.4luX DS %4.4luX ES %4.4luX FS %4.4luX GS %4.4luX\n", + iprint(" CS %.4lux DS %.4lux ES %.4lux FS %.4lux GS %.4lux\n", ureg->cs & 0xFFFF, ureg->ds & 0xFFFF, ureg->es & 0xFFFF, ureg->fs & 0xFFFF, ureg->gs & 0xFFFF); } @@ -980,22 +980,22 @@ } } -long -execregs(ulong entry, ulong ssize, ulong nargs) +void* +execregs(uintptr entry, uint ssize, uint nargs) { - ulong *sp; + uintptr *sp; Ureg *ureg; up->fpstate = FPinit; fpoff(); - sp = (ulong*)(USTKTOP - ssize); + sp = (uintptr*)(USTKTOP - ssize); *--sp = nargs; ureg = up->dbgreg; ureg->sp = PTR2UINT(sp); ureg->pc = entry; - return USTKTOP-sizeof(Tos); /* address of kernel/user shared data */ + return UINT2PTR(USTKTOP-sizeof(Tos)); /* address of kernel/user shared data */ } /*