« Forum anonimo (sperimentale)

eret e riabilitazione degli interrupt

3 replies
Last

durate la lezione è stato detto che la istruzione eret riabilitava gli interrupt automaticamente alla fine del exception handler, ma nella appendice A nella sezione delle eccezioni, esempio "Exception Handler" il libro dice: 


"Before returning, the exception handler clears the Cause register; resets

the Status register to enable interrupts and clear the EXL bit, which allows

subsequent exceptions to change the EPC register;"


e nel codice di esempio è l'exception handler che riattiva le interruzioni


mfc0 $k0, $12

andi $k0, Oxfffd

ori $k0, 0x1

mtc0 $k0, $12


quindi volevo capire se il compito di riattivare le interruzione spetta al exception handler o lo fa automaticamente eret

3 replies
  1. Re: eret e riabilitazione degli interrupt

    Se non vengono riattivate si ha la situazione di esecuzione dell'handler ad interruzioni disabilitate, che oggigiorno non è più solo una situazione che descriviamo come semplificazione didattica della realtà, perché con un handler "snello" ed i clock elevati che oggi sono comuni, si ha che il tempo di attraversamento dell'handler, ovvero il tempo per cui si resta sordi alle eccezioni, è abbastanza breve.

    Come dicevo a lezione, nulla vieta di seguire invece la strada della riabilitazione; in questa modalità si modifica il mascheramento prima di riabilitare globalmente, di modo da indurre una diversa priorità nella capacità interrompente delle diverse linee. Al termine si disabilita, ripristina il precedente mascheramento (che quindi andava salvato) e poi eret.

    Spero sia più chiaro, nel caso richieda.

    1 reply
  2. Re: eret e riabilitazione degli interrupt
    in un caso "normale" dove non permetto interrupt nel exception handler, quando arrivo alla fine del exception handler e devo "ritornare" al indirizzo del EPC (eventualmente sommato a 4) volevo capire se è l'exception handler che ha il compito di attivare il bit interrupt enable e mettere a 0 il bit EXL (per ri-attivare gli interrupt) o se è una cosa che fa automaticamente la istruzione eret
    1 reply
  3. Re: eret e riabilitazione degli interrupt

    Quando si arriva in fondo ancora con interrupt globalmente disabilitati si esegue eret, eret effettua la riabilitazione globale degli interrupt.