Changes between Version 63 and Version 64 of Archi-1-TP11


Ignore:
Timestamp:
Nov 16, 2024, 4:38:08 PM (5 days ago)
Author:
franck
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Archi-1-TP11

    v63 v64  
    5151**Allez dans le répertoire `1_gameover`**
    5252
    53 Le code de l'application est le suivant (dans uapp/main.c)
     53Le code de l'application est le suivant (dans `1_gameover/uapp/main.c`)
    5454
    5555{{{#!c
     
    86861. Pour essayer le jeu (dans le répertoire `tp3/1_gameover`) : tapez `make exec`\\
    8787   comme vous pouvez le constater, vous avez le temps de jouer.
    88 1. Dans la version précédente du gestionnaire de syscall, nous avions masqué les IRQ en écrivant `0` dans le registre `c0_status`(registre $12 du coprocesseur 0). Cela avait pour conséquence de mettre tout à 0, entre autres le bit `IE`. Il faut modifier ça, parce que sinon, lorsque l'utilisateur demandera à lire le clavier avec l'appel système `fgets()`, l'IRQ venant du timer ne sera jamais prise en compte (`TODO1`), ensuite au retour de la fonction qui réalise l'appel système, il faut masquer les IRQ pour ne pas avoir d'interruption pendant la restauration des registres jusqu'au `eret` qui fait sortir du kernel.
     881. Dans la version précédente du gestionnaire de syscall, nous avions masqué les IRQ en écrivant `0` dans le registre `c0_status`(registre $12 du coprocesseur 0). Cela avait pour conséquence de mettre tous les bits à 0, entre autres le bit `IE`. Il faut modifier ça, parce que sinon, lorsque l'utilisateur demandera à lire le clavier avec l'appel système `fgets()`, l'IRQ venant du timer ne sera jamais prise en compte (voir le commentaire `TODO1` dans le code ci-après), ensuite au retour de la fonction qui réalise l'appel système, il faut masquer les IRQ pour ne pas avoir d'interruption pendant la restauration des registres jusqu'au `eret` qui fait sortir du kernel.
    8989{{{#!c
    9090syscall_handler: