the old approach, just waiting for time to expire is not so smart, and likely not to deal well with dodgy hardware or emulation. wait for thr empty instead of waiting for a certain amount of time. Reference: /n/atom/patch/applied/pcipluartout Date: Thu Nov 5 05:07:28 CET 2015 Signed-off-by: quanstro@quanstro.net --- /sys/src/boot/pcipl/sub.c Thu Nov 5 05:05:38 2015 +++ /sys/src/boot/pcipl/sub.c Thu Nov 5 05:05:39 2015 @@ -73,8 +73,13 @@ void uartputc(int c) { - outb(0x3f8 + 0, c); - usleep(78); + int i; + + for(i = 0; i < 78; i++) + if(inb(0x3f8 + 5) & 0x20){ + outb(0x3f8 + 0, c); + return; + } } void