46 | | |
47 | | == 4. Première interruption == |
48 | | |
49 | | Il s'agit maintenant de commencer à traiter les interruptions. Nous allons seulement traiter les interruptions venant des TTY. |
50 | | Nous allons pour cela mettre un bout de code à l'adresse du point d'entrée du système (pour le mips32 c'est 0x80000180). |
51 | | Ce code va devoir analyser le registre de cause qui contient la raison pour laquelle le système est invoqué. |
52 | | Nous n'allons considérer que deux causes. Soit c'est une interruption, soit c'est autre chose. |
53 | | Dans le cas d'une interruption, nous sauvegarderons dans la pile courante, les registres temporaires avant d'appeler la fonction `__do_interrupt()`. |
54 | | Au retour de la fonction, les registres sont restaurés et on retourne au code interrompu. |
55 | | La fonction `__do_interrupt()` prendra comme paramètre, le numéro du CPU et le masque |
56 | | des interruptions (le second octet du registre cause). |
57 | | Son but est de déterminer quelle TTY a émis l'interruption, lire le caractère (ce qui acquitte l'interruption) et l'écrire sur l'écran. C'est un echo. |
58 | | Il faudra aussi modifier __do_init pour initialiser l'ICU. |