evidently a coherence is needed here. this can only make sense if there is something very special about executable code with no context switching. does anyone know for certain? Reference: /n/atom/patch/applied/warpcoherence Date: Sat May 24 19:30:58 CES 2014 Signed-off-by: quanstro@quanstro.net --- /sys/src/nix/k10/main.c Sat May 24 19:30:04 2014 +++ /sys/src/nix/k10/main.c Sat May 24 19:30:04 2014 @@ -351,6 +351,7 @@ void (*f)(uintmem, uintmem, usize); writeconf(); + synccons(); procwired(up, 0); for(i = 1; i < active.nonline; i++) @@ -358,7 +359,6 @@ while((a=active.nonline)>1) monmwait(&active.nonline, a); - synccons(); devtabshutdown(); pcireset(); splhi(); @@ -376,6 +376,7 @@ f = UINT2PTR(REBOOTADDR); memmove(f, rebootcode, sizeof(rebootcode)); print("warp32...\n"); + coherence(); /* necessary */ f(PTR2UINT(entry), PADDR(code), size); }