everything can execute with preemption disabled, except for the user thread, which does not have its IF flag
conflating preemption and interrupts in a cheap hack.  will fix later.