> i'm using CP0_Count/CP0_Compare to get timer interrupts. They should be
> turned off while being in kernel mode (performing syscalls / handling
> tlb-misses etc) and enabled in user mode.
This isn't going to work. The hardware does nothing to inhibit
interrupts in kernel mode, and the system depends on them (performance
would be truly dreadful if no interrupt could be taken in kernel mode).
The kernel is already using CP0_Status and Count/Compare for its own
purposes, which you will be breaking...
Whatever it is you were trying to do, you need to do some other way!