add pause support for the nix k10 architecture to marginally improve power consumption, and to improve perfomance under contention. Reference: /n/atom/patch/applied2013/k10pause Date: Sun Aug 25 19:21:28 CES 2013 Signed-off-by: quanstro@quanstro.net --- /sys/src/nix/k10/archk10.c Sun Aug 25 19:20:55 2013 +++ /sys/src/nix/k10/archk10.c Sun Aug 25 19:20:56 2013 @@ -214,7 +214,7 @@ r = rdtsc(); for(t = r + m->cpumhz*µs; r < t; r = rdtsc()) - ; + pause(); } void @@ -224,5 +224,5 @@ r = rdtsc(); for(t = r + m->cpumhz*1000ull*ms; r < t; r = rdtsc()) - ; + pause(); } --- /sys/src/nix/k10/fns.h Sun Aug 25 19:20:56 2013 +++ /sys/src/nix/k10/fns.h Sun Aug 25 19:20:57 2013 @@ -85,6 +85,7 @@ void outs(int, ushort); void outsl(int, void*, int); void outss(int, void*, int); +void pause(void); int pcicap(Pcidev*, int); int pcicfgr16(Pcidev*, int); int pcicfgr32(Pcidev*, int); --- /sys/src/nix/k10/l64v.s Sun Aug 25 19:20:58 2013 +++ /sys/src/nix/k10/l64v.s Sun Aug 25 19:20:58 2013 @@ -354,6 +354,10 @@ MOVL $0, AX /* return 0 */ RET +TEXT pause(SB), 1, $-4 + PAUSE + RET + TEXT hardhalt(SB), 1, $-4 STI HLT