How to generate periodic timer interrupt in fe310?

Timer interrupts are generated when mtime >= mtimecmp value. the trivial way to generate periodic timer interrupt would be to increase the mtimecmp register value by the period value inside the timer interrupt handler for every interrupt. Is this the only way? or any better way?

Also, when would be the mtip flag in mip register cleared? In fe310 manual this is a read ONLY flag, so curious to know when would this be cleared? if not cleared, I guess the next interrupt won’t occur.