kernel.img added to gitignore
Added a timer.

Turns out volatile is required to prevent my memory accesses from
being optimized away.  Without volatile the while loop would jump to just after
the memory access,  with volatile the loop correctly jumps to the memory access.