Have you compared the latency of the multiply instructions to the overhead of saving those registers in the interrupt handler? What about the case where performance is priority, and the developer knows that the interrupt handlers don't use the multiply registers?
Also, your code doesn't properly handle the case where the interrupts are already disabled when those functions are called. It would re-enable interrupts before the main code was prepared for it.