¿Cómo devuelvo un valor de la función principal en MIPS?

Digamos que quiero escribir el siguiente programa en C en MIPS:

int main () {
  return 5;
}

Cuando intento el siguiente código MIPS enMARTE:

main:   ADDI $v0, $zero, 5     # $v0 = 5
        JR $ra                 # return from main()

Recibo un error de 'contador de programa no válido'. Esto es aparentemente porque tuNo se puede saltar de la función principal en MARS.. Así que intenté reescribirlo así:

main:   ADDI $v0, $zero, 5     # $v0 = 5
        li $v0, 10             # load 10(exit) for syscall
        syscall                # exit

Después de ejecutar esto, el registro $ v0 contiene el valor 10, no 5. Lo que es comprensible ya que tuve que sobrescribir el registro $ v0 para que syscall funcione. Entonces, mi pregunta es ¿dónde guardaría el valor 5 para que se devuelva al llamante de esta aplicación correctamente?