Changes between Version 7 and Version 8 of Doc-MIPS-Archi-Asm-kernel


Ignore:
Timestamp:
Sep 17, 2020, 9:14:58 PM (4 years ago)
Author:
franck
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Doc-MIPS-Archi-Asm-kernel

    v7 v8  
    694694}}}
    695695
    696  ||**IE        **||Interrupt Enable ||0 = toutes les interruptions sont masquées\\1 = interruptions non-masquées mais elles peuvent l'être avec IM[7:0]||
    697  ||**EXL       **||Exception Level  ||0 = aucun effet sur le processeur\\1 = le processeur vient d'entrer dans le noyau et donc le processeur est en mode ''kernel'' interruptions massquées||
    698  ||**ERL       **||Error Level      ||1 = une exception est survennue quand EXL == 1, c'est une erreur fatale ||
    699  ||**UM        **||User Mode        ||0 = mode d'exécution ''kernel''\\1 = mode d'exécution ''user''||
    700  ||**IM![7:0]  **||Masques individuels || pour les six lignes d’interruption matérielles (bits IM![7:2])\\et pour les 2 interruptions logicielles (bits IM![1:0])
    701 
    702 - Quelques remarques
    703    - Le processeur a le droit d’accéder aux ressources protégées (registres du coprocessor 0(`c0`),
    704      et aux adresses mémoires >= `0x80000000) si et seulement si le bit UM vaut 0,
    705      ou si l’un des deux bits ERL et EXL vaut 1.
    706    - Les  interruptions sont autorisées si et seulement si le bit IE vaut 1,
    707      et si les deux bits ERL et EXL valent 00, et si le bit correspondant de IM vaut 1.
    708    - Les trois types d’évènements qui déclenchent le branchement au GIET
    709      (interruptions, exceptions et appels système) forcent le bit EXL à 1,
     696 ||**`IE     `**||Interrupt Enable ||0 = toutes les interruptions sont masquées\\1 = interruptions non-masquées mais elles peuvent l'être avec `IM[7:0]`||
     697 ||**`EXL     `**||Exception Level  ||0 = aucun effet sur le processeur\\1 = le processeur vient d'entrer dans le noyau\\et donc le processeur est en mode ''kernel'' et interruptions massquées||
     698 ||**`ERL     `**||Error Level      ||1 = après le signal reset ou certaines erreurs de la mémoire ||
     699 ||**`UM      `**||User Mode        ||0 = mode d'exécution ''kernel''\\1 = mode d'exécution ''user''||
     700 ||**`IM![7:0]`**||Masques individuels || pour les six lignes d’interruption matérielles (bits `IM[7:2]`)\\et pour les 2 interruptions logicielles (bits `IM[1:0]`)
     701
     702- Quelques remarques :
     703   - Le processeur a le droit d’accéder aux ressources protégées (registres du coprocessor 0 `c0`),
     704     et aux adresses mémoires >= `0x80000000`) si et seulement si le bit `UM` vaut `0`,
     705     ou si l’un des deux bits `ERL` et `EXL` vaut `1`.
     706   - Les  interruptions sont autorisées si et seulement si le bit `IE` vaut `1`,
     707     et si les deux bits `ERL` et `EXL` valent `00`, et si le bit correspondant de `IM` vaut `1`.
     708   - Les trois types d’événements qui déclenchent le branchement au noyau:
     709     (interruptions, exceptions et appels système) forcent le bit `EXL` à `1`,
    710710     ce qui masque les interruptions et autorise l’accès aux ressources protégées.
    711    - L’activation du signal RESET qui force le branchement au Boot-Loader force le bit ERL à 1,
     711   - L’activation du signal `RESET` qui force le branchement au code de boot force le bit `ERL` à `1`,
    712712     ce qui masque les interruptions et autorise l’accès aux ressources protégées.
    713    - L’instruction ERET force le bit EXL  à  0.
    714 
    715 Lors de l’activation du RESET :
    716 
    717  - SR contient donc la valeur 0x0004.
    718  - Pour exécuter un programme utilisateur en mode protégé, avec interruptions activées,
    719    il doit contenir la valeur 0xFF11.
    720  - Le code de boot doit écrire la valeur 0xFF13 dans SR et l’adresse du programme utilisateur
    721    dans EPC avant d’appeler l’instruction ERET.
    722 
    723 
    724 
    725 === 7) Gestion du registre de cause CR
    726 
    727 
    728 Le registre CR contient trois champs. Les 4 bits du champ XCODE(3:0) définissent la cause de l'appel au GIET. Les 6 bits du champ IRQ(5:0) représentent l'état des lignes d'interruption externes au moment de l'appel au GIET. Les 2 bits SWI(1:0) représentent les requêtes d'interruption logicielle.
     713   - L’instruction `eret` force le bit `EXL`  à `0`.
     714
     715 -Lors de l’activation du RESET :
     716   - `c0_sr` contient donc la valeur `0x0004` (`0b0000000000000100`).
     717   - Pour exécuter un programme utilisateur en mode protégé, avec interruptions activées,
     718     il doit contenir la valeur `0xFF11`.
     719   - Le noyau doit écrire la valeur `0xFF13` dans `c0_sr` et l’adresse de la première fonction du programme utilisateur dans `c0_epc` avant d’appeler l’instruction `eret`.
     720
     721
     722
     723=== 7) Gestion du registre de cause `c0_cause`
     724
     725
     726Le registre `c0_cause` contient trois champs. Les 4 bits du champ `XCODE[3:0]` définissent la cause de l'appel au GIET. Les 6 bits du champ IRQ(5:0) représentent l'état des lignes d'interruption externes au moment de l'appel au GIET. Les 2 bits SWI(1:0) représentent les requêtes d'interruption logicielle.
    729727
    730728- La figure suivante montre le format du registre de cause CR :