diff --git a/infotro/SEm/INT.md b/infotro/SEm/INT.md index 0d1dde2..1d57ac2 100644 --- a/infotro/SEm/INT.md +++ b/infotro/SEm/INT.md @@ -119,6 +119,18 @@ et obtenir l’adresse de la routine de traitement correspondante. | 0x0000001C | Fast Interupt (FIQ) | fiq | 3 | # Entrées / Sorties d'une interruption +L'entrée d'une interruption se fait par la broche ***IRQ*** ou ***FIQ*** du processeur : +1. Termine l'instruction en cours +2. Sauvegarde du contexte : PC, CPSR +3. Met le bit du type d'interruption et le nouveau mode à jour +4. Sauvegarde l'addresse de retour (PC - 4) dans le LR du mode +5. Saute à l'adresse de la routine d'interruption qui se trouve dans la table des vecteurs +6. Sauvegarde les registres de travail +7. Exécute la routine d'interruption +La sortie d'une interruption : +1. Restaure les registres de travail +2. Restaure le SPSR du mode dans le CPSR et simultanément met à jour le PC +3. Reprend l'exécution du programme interrompu