In start.c/timerinit(), timervec be written into mtvec.
But I don't know why this is needed?
As before timerinit(), all interrupts & exceptions are already delegated to supervisor-mode via code:
w_medeleg(0xffff);
w_mideleg(0xffff);
w_sie(r_sie() | SIE_SEIE | SIE_STIE | SIE_SSIE);
Base on my understanding handler in mtvec will not be invoked.