
                             Manuel de Linux/MIPS

Ralf Bchle, ralf@gnu.org Traduction : Robert Jacolin, rjacolin@yahoo.fr

   24 juin 2000
     _________________________________________________________________

   _Cette FAQ dcrit le portage vers l'architecture MIPS du systme
   d'exploitation Linux, ainsi que des problmes courants et propose des
   solutions, des possibilits (voire plus). Il tente aussi d'tre un peu
   utile pour les autres personnes qui lirait cette FAQ dans l'espoir de
   trouver des informations qui, en fait, pourraient tre dtailles
   ailleurs._
     _________________________________________________________________

1. Qu'est-ce-que Linux/MIPS ?

   Linux/MIPS est un portage du trs rpandu clne d'UNIX, Linux, vers
   l'architecture MIPS. Linux/MIPS fonctionne sur un grand nombre de
   systmes, techniquement trs diffrents, qui va des petits systmes
   embarqus et des petits serveurs jusqu'aux gros serveurs et aux
   grosses machines bureautiques qui, au moins  l'poque o ils ont t
   introduit sur le march, taient les meilleurs de leur classes.

   Les avantages de Linux/MIPS par rapport aux autres systmes
   d'exploitation actuels sont :

     * Le systme Linux complet se compose uniquement de Logiciels
       Libres,
     * L'excellent rapport Prix/Performance,
     * L'existance d'une grande quantit de logiciels dont, encore un
       fois, une large part sont des Logiciels Libres,
     * Une compatibilit binaire entre un nombre croissant de
       plates-formes,
     * Une petite taille rendant Linux/MIPS appropri pour beaucoup de
       systmes embarqus.

   En rsum, Linux a t conu et port avec plaisir. Cependant, comme
   d'habitude, le temps que vous allez y consacrer pourra varier et vous
   devrez vrifier que Linux puisse s'adapter  votre projet, ce que ce
   document se propose de faire.

2. Obtenir cette FAQ

   Vous pouvez tlcharger ce document dans plusieurs formats (et en
   anglais, NDT):

     * Une version HTML http://oss.sgi.com/mips/mips-howto.html
     * Une version texte http://oss.sgi.com/mips/mips-howto.txt
     * Une version postscript http://oss.sgi.com/mips/mips-howto.ps
     * Une version Linux-Doc SGML http://oss.sgi.com/mips/mips-howto.sgml

   Cette FAQ est ausi accessible sous forme de code source SGML par CVS
   anonyme sur oss.sgi.com. L'archive contient aussi un Makefile qui le
   convertira en plusieurs formats. Une version ASCII est rgulirement
   poste sur _comp.os.linux.answers_ et les autres cannaux des manuels
   Linux.

3. Quel est le matriel support par Linux/MIPS ?

3.1 Les plates-formes matrielles

   Plusieurs machines sont utilisables avec un quantit variable
   d'options CPU qui ne sont pas encore toutes supports. Veuillez
   vrifier que votre type de CPU est support dans la section Types de
   processeurs. C'est une liste de machines qui fonctionnent sous
   Linux/MIPS, de systmes o Linux/MIPS peut tre port ou de systmes
   o l'on a intrt  faire fonctionner Linux/MIPS.

  Le PICA d'Acer

   Le _PICA d'Acer_ est driv de l'architecture _Mips magnum 4000_. Il
   possde un CPU R4400PC fonctionnant  133 Mhz ou ventuellemnt  150
   Mhz plus une mmoire cache de second niveau de 512 Ko (ventuellement
   de 2 Mo); la carte gfx G364 du Magnum a t remplac par une carte
   base sur le S3 968. Le systme est support  l'xception du serveur
   X.

  Les sries Baget/MIPS

   Les sries Baget comprennent plusieurs machines possdant des
   processeurs R3000 : le Baget 23, le Baget 63 et le Baget 83. Les Baget
   23 et 63 ont des cartes mres BT23-201 ou BT23-202 avec respectivement
   un R3500A (qui est,  la base, un composant R3000A)  25 Mhz et un
   R3081E  50 Mhz. La carte BT23-201 possde un bus VME et des puces
   VIC068, VAC068 comme contrleurs systmes. La carte BT23-202 possde
   un bus PCI en interne et une bus VME en externe. Le support de la
   carte BT23-201 a t fait par Gleb Raiko (rajko@mech.math.msu.su) et
   Vladimir Roganov (vroganov@msiu.ru) avec l'aide de Serguei Zimin
   (zimin@msiu.ru). Le support du BT23-202 est en dveloppement avec un
   Baget 23B qui est compos de 3 cartes BT23-201 avec un bus VME
   partag.

   Le Baget 83 est mentionn ici uniquement pour tre xhaustif. Il
   possde uniquement 2 Mo de RAM et il est trop petit pour faire tourner
   Linux. Le code du Baget/MIPS a t fusionn avec le portage des
   stations DEC ; le source pour ces deux plates-formes est sur
   http://decstation.unix-ag.org/.

  Le Qube et le Raq de Cobalt

   Les sries de produits Qube Cobalt sont des systmes de serveurs
   headless de faible cot bass sur un IDT R5230. Cobalt a dvelopp sa
   propre variante de Linux/MIPS pour rpondre aussi bien que possible
   aux besoins particuliers du Qube. Au dpart, le noyau du Qube a t
   driv du noyau de Linux/MIPS 2.1.56, puis ramen  la version 2.0.30
   pour la stabilit, enfin il a t optimis. Les noyaux pour le Cobalt
   sont accessibles sur le site ftp de Cobalt http://www.cobaltnet.com.
   Le support du Qube de Cobalt n'a jamais t intgr dans les noyaux
   officiels 2.1.x de Linux/MIPS.

  Les machines NEC

   Les machines uni-processeur NEC sont des systmes _PICA d'Acer_, voir
   cette section pour plus de dtails. Les systmes SMP sont difrents 
   cause du fait d'avoir plusieurs processeurs. Les dveloppeurs de
   Linux/MIPS n'ont pas les documentations techniques ncessaires pour
   crire un OS. Aussi longtemps qu'il n'y aura pas de changements, ce
   portage restera plus ou moins un bouchon remarqu faisant obstacle au
   portage vers les systmes SMP de NEC.

  Les plates-formes bases sur les VR41xx de NEC

   Le projet VR Linux fait le portage de Linux vers du matriel bas sur
   les micro-processeurs VR41xx de NEC. La plupart de ces matriels
   taient,  l'origine, destins pour faire tourner Windows CE. Le
   projet a produit des noyaux qui fonctionnent avec des drivers de bases
   pour le Vadem Clio, la Casio E-105, l'Everex Freestyle, et bien
   d'autres. Pour de plus amples informations, veuillez consulter le site
   http://linux-vr.org/.

  Les plates-formes TMPR39xx de Toshiba/PR31700 de Philips

   Semblable aux VR41xx, le matriel avec ces processeurs ont t, 
   l'origine, destins pour faire tourner Windows CE. Cependant, il y a
   des noyaux fonctionnels avec des drivers de base pour le _Sharp
   Mobilon_ et la _srie C de Compaq_. Le support d'autre matriels est
   en cours. Le code fait partie du projet VR Linux et donc de plus
   amples informations peuvent tre trouv sur http://linux-vr.org/.

  Le Netpower 100

   Le _Netpower 100_ est apparamment un _PICA d'Acer_ dguis. Il devrait
   tre, par consquence, support mais cela n'a pas t test. S'il y a
   un problme c'est probablement lors de la dtection de la machine.

  La Nintendo 64

   La _nintendo 64_ est une console de jeu bas sur un R4300 avec 4 Mb de
   RAM. Ses puces graphiques ont t dvelopp par Silicon Graphics pour
   nintendo. A l'heure actuelle, ce portage est un rve de joueur et
   continuera de l'tre tant que Nintendo ne dcidera pas de publier les
   informations techniques necessaires. La question qui subsiste est de
   savoir si c'est une bonne ide.

  Le Challenge S de Silicon Graphics

   Cette machine est trs similaire  l'Indy ; la diffrence est qu'elle
   ne possde pas de clavier ni de carte GFX mais un adaptateur bas sur
   un WD33C95 SCSI supplmentaire. Cet adaptateur WD33C95 n'est pas
   support pour l'instant.

  L'Indigo de Silicon Graphics

   Cette machine n'est mentione que parce que certaine personne la
   confonde avec les Indys ou l'Indigo 2. L'Indigo possde une
   architecture diffrente, base sur un R3000 cependant, et n'est pas
   encore support.

  L'Indigo2 de Silicon Graphics

   Cette machine est le successeur de l'Indigo et elle est trs semblable
    l'Indy. Elle est maintenant supporte, bien qu'ellz pche en bien
   des points. Vous devrez utiliser une console srie. Si vous avez une
   Indigo2 et si vous dsirez encore y faire tourner Linux, contactez
   soit Florian Lohoff (flo@rfc822.org) soit Klaus Naumann
   (spock@mgnet.de).

  L'Indy de Silicon Graphics

   L'Indy est, en ce moment, l'unique machine support parmi (la plupart)
   des machines de Silicon Graphics. La seule carte graphique supporte
   est la carte Newport c'est--dire la "XL". L'Indy existe avec un grand
   nombre d'options pour le CPU  des taux d'horloge varis, tous tant
   supports. Il existe aussi maintenant un serveur X crit par Guido
   Guenther (guido.guenther@gmx.net). Si vous pouvez utiliser la console
   de Newport sur votre Indy, il doit tre possible aussi d'utiliser le
   serveur X. Il est bas sur XFree86 4.0 et il fonctionne courament 
   une vitesse de tortue mais semble bien fonctionner. Si vous dsirez
   l'essayer, jetez un oeil sur
   http://honk.physik.uni-konstanz.de/~agx/mipslinux/x/.

  Quantit trange d'espace mmoire

   Lors du boot, le noyau de l'Indy reporte la mmoire utilisable dans un
   message du type :

   Memory: 27976k/163372k available (1220k kernel code, 2324k data)

   Cette importante diffrence entre la premire paire de nombres vient
   de l'existance d'une zone de 128 Mo dans l'espace adressable de la
   mmoire de l'Indy qui reflte les 128 premiers Mo de mmoire. La
   diffrence entre les 2 nombres sera toujours proche de 128 Mo et
   n'indique pas un quelconque problme. Les noyaux depuis la version
   2.3.23 ne compte plus ce trou de 128 Mo.

  Problmes avec la PROM de l'Indy

   Plusieurs personnes ont rapports ces problmes avec leurs machines
   aprs une mise  niveau typiquement  cause de parties en trop. Il
   existe plusieurs versions de PROM pour les Indys. Les machines avec de
   vieilles versions de leur PROM, qui ont t mis  niveau vers une
   variante plus rcente d'un CPU comme un module R4600SC ou un R5000SC,
   peuvent se planter pendant l'auto-test avec un message d'erreur du
   type :
   Exception: <vector=Normal>
   Status register: 0x30004803<CU1,CU0,IM7,IM4,IPL=???,MODE=KERNEL,EXL,IE>
   Cause register: 0x4000<CE=0,IP7,EXC=INT>
   Exception PC: 0xbfc0b598
   Interrupt exception
   CPU Parity Error Interrupt
   Local I/O interrupt register 1: 0x80 <VR/GIO2>
   CPU parity error register: 0x80b<B0,B1,B3,SYSAD_PAR>
   CPU parity error: address: 0x1fc0b598
   NESTED EXCEPTION #1 at EPC: 9fc3df00; first exception at PC: bfc0b598

   Dans ce cas, vous devez mettre  niveau la PROM de votre machine vers
   une version plus rcente ou retourner vers un version plus ancienne du
   CPU. En gnral, les modules R4000SC ou R4400SC devraient fonctionner
   de cette manire. Juste pour tre bien clair, ceci est un problme
   n'ayant aucun rapport avec Linux. C'est uniquement mentionn ici parce
   que plusieurs utilisateurs de Linux nous ont pos la question.

  Le supprot d'ELF avec des vieilles versions de PROMs

   Les vieilles versions de PROM ne connaissent pas le format binaire ELF
   que le noyau de Linux utilise, ce qui l'empche de booter directement
   sur Linux. La solution prfrable  cela reste videment une mise 
   niveau de la PROM. Vous pouvez aussi utiliser Sash d'IRIX 5 ou une
   version plus rcente pour charger le noyau. Sash sait comment charger
   les binaires ELF et ne se proccupe pas de savoir si c'est un noyau
   IRIX ou Linux. Il suffit de taper simplement "Sash"  partir du
   moniteur de la PROM. Vous obtiendrez un autre prompt shell, celui de
   Sash cette fois-ci. Maintenant lancez Linux comme d'habitude.

   Sash peut lire les systmes de fichiers EFS ou XFS ou lire le noyau
   avec bootp / tftp. Cela veut dire que si vous avez l'intention
   d'utiliser Sash pour lancer le noyau  partir d'un disque local, vous
   devrez encore possder une installation minimale d'IRIX sur votre
   systme.

  Pourquoi y-a-t-il autant de mmoire rserve sur mon Indy ?

   Lors du dmarrage, le message "Memory: ..." sur un Indy indique qu'il
   y a 128 Mo de RAM rserv. C'est normal ; de mme que l'architecture
   PC a un trou dans son espace d'adressage mmoire entre 640 Ko et 1024
   Ko, l'Indy possde une zone de 128 Mo dans son espace mmoire o les
   128 premiers Mo de sa mmoire est dupliqu. Linux le sait et ignore
   simplement cette zone mmoire, ce qui explique ce message.

  Les Silicon Graphics Origin 200 et 2000

   Ralf Bchle (ralf@gnu.org) et une quipe d'employs de SGI travaillent
   actuellement sur un portage vers l'Origin 200. Bien qu'il soit encore
   que dans les tapes initiales, il fonctionne en mode mono-processeur
   et multi-processeurs et possde des pilotes pour la carte Ethernet
   IOC3 et l'adaptateur SCSI fourni avec. Le code peut tre pris dans
   l'arbre CVS de Linux/MIPS.

  Les Silicon Graphics Onyx 2

   L'Onyx 2 est,  la base, un Origin 2000 avec du matriel graphique
   supplmentaire. A partir de maintenant,le support de Linux pour le
   matriel graphique n'a pas t dcid. En dpit de ca, Linux devrai
   fonctionner aussi bien qu'une configuration headless Origin 2000.

  Silicon Graphics Power Series

   C'estune trs vieilles sries des systmes R3000 SMP. Il n'existe pas
   de documentation sur le matriel de ces machines, peu d'entre elles
   existant encore, le matriel est bizarre. Pour faire court, les
   chances pour que Linux tourne un jour sur l'une d'elles sont proches
   de zro. Non pas que l'on veuille dcourager des volontaires ...

  Consoles Srie sur les machines SGI

   Assurez-vous que le noyau que vous utilisez inclus le driver appropri
   pour une interface srie et une console srie. Initialisez la variable
   d'environnement _console_ ARC soit avec la valeur _d1_ soit avec la
   valeur _d2_ pour les Indy et les Challenge S en fonction de
   l'interface srie que vous allez utiliser comme console.

   Si vous avez le problme d'affichage de tous les messages du noyau sur
   la console srie lors du dmarrage alors que plus rien n'est affich 
   partir du dbut de la phase d'init, alors vous avez probablement une
   mauvaise configuration pour votre /dev/console. Vous pourrez trouver
   de plus amples informations  ce sujet dans la documentation du source
   du noyau de Linux ; il est situ dans le rpertoire
   /usr/src/linux/Documentation/serial-console.txt si vous avez install
   le source du noyau.

  Les autres machines de Silicon Graphics

   A l'heure actuelle, aucune machine Silicon Graphics n'est supporte.
   Ceci s'applique aussi aux systmes bass sur les _trs_ vieux Motorola
   68k.

  La Playstation de Sony

   La Playstation de Sony est base sur un R3000 drive et utilise un
   ensemble de composants graphiques dvelop par Sony lui-mme. Alors
   que la machine est, en thorie, capable de tourner sous Linux, un
   portage semble difficile, puisque Sony n'a toujours pas fourni les
   informations techniques ncessaires. Cela met de ct la question de
   l'intret du portage. Donc, en rsum, rien ne s'est pass jusqu'ici
   alors que beaucoup de gens ont montr leur intrt en essayant Linux
   sur une Playstation.

  SNI RM200C

   A l'inverse du RM200 (voir en-dessous), cette machine possde des
   slots EISA et PCI. Le RM200 est support  l'exception du controleur
   SCSI NCR53c810A intgr.

  SNI RM200

   Si votre machine possde  la fois des slots EISA et PCI, alors c'est
   un RM200C ; Consultez la section prcdente s'il vous plat. A cause
   de lgres diffrences architecturales entre le RM200 et le RM200C,
   cette machine n'est pas encore supporte dans les sources officiels.
   Michael Engel (engel@numerik.math.uni-siegen.de) a russi  faire
   fonctionner son RM200 partiellement mais les patches n'ont pas encore
   t inclus dans les sources de Linux/MIPS officiels.

  SNI RM300C

   Le RM300 est techniquement trs similaire au RM200C. Il devrai tre
   support par le noyau courant de Linux, mais nous n'avons encore reu
   aucun signalement.

  SNI RM400

   Le RM400 n'est pas support.

  SNI RW320

   Cette machine est une variante OEM d'un SGI Indigo et, par consquent,
   elle n'est pas encore supporte.

  Algorithmics P4032

   Le portage de l'Algorithmics P4032 tourne encore, lors de la redaction
   de ce document, sous Linux 2.1.36.

  Algorithmics P5064

   Le P5064 est,  la base, une variante 64 bits du P4032 bas sur un
   R5000. Un portage est en cours.

  DECstation series

   Pendant la fin des annes 80 et au dbut des annes 90, Digital
   (maintenant Compaq) a construit une station de travail base sur les
   MIPS appele respectivement DECStation et DECsystem. D'autres machines
   bases sur des x86 ou des Alphas ont t vendu sous le nom DECstation,
   mais ils ne sont malheureusement pas le sujet de cette FAQ. Le support
   des DECstations est encore en cours de dveloppement, dbut par Paul
   M. Antoine. A l'heure actuelle, la plupart du travail est fait par
   Harald Koerfgen (Harald.Koerfgen@home.ivm.de) et par d'autres
   personnes. Sur Internet, des informations sur les DECstations peuvent
   tre trouv sur le site http://decstation.unix-ag.org/.

   La famille des DECstations couvre les DECstations 2100 avec une puce
   R2000/R2010  12 MHz jusqu'au DECstation 5000/260 avec un R4400SC  66
   MHz.

   Les modles des DECstations suivants sont activement supports :
     * 2100, nom de code PMAX
     * 5000/xx (DECstation Personnel), nom de code MAXine
     * 5000/1xx, nom de code 3MIN
     * 5000/200, nom de code 3MAX
     * 5000/2x0, nom de code 3MAX+
     * 5900/2x0 (identique au 3MAX+).

   Ces modles de DECstations sont orphelins parce que personne ne
   travaille dessus, alors que leur support peut tre relativement facile
    finir.

     * 3100, identique au 2100 sauf le R2000A/R2010A @ 16 MHz
     * 5100, nom de code MIPSMATE, presque identique au 2100 mais avec
       une puce R3000/R3010.

   Les autres machines de la famille des DECstations,  part ceux bass
   sur x86, devraient tre considr comme des VAXen avec un CPU remplac
   par un CPU MIPS. Il n'y a aucune information existante sur ces
   machines et le support de ces machines est improbable  moins que le
   portage des VAXLinux renait de ses cendres. Ce sont les :

     * 5400, nom de code MIPSFAIR
     * 5500, nom de code MIPSFAIR2
     * 5800, nom de code ISIS

  Mips Magnum 4000 / Olivetti M700-10

   Ces deux machines sont presque compltement identiques. Revenons lors
   de l'initiative d'ACE, Olivetti a pris une license du concept Jazz et
   a mis sur le march la machine avec comme systme d'exploitation
   Windows NT. MIPS Computer Systems, Inc a achet lui-mme le concept
   Jazz et l'a mis sur le march avec la srie de machines MIPS Magnum
   4000. Les systmes Magnum 4000 ont t mis sur le march avec comem
   systme d'exploitation Windows NT et RISC/os.

   Le microcode de la machine dpend du systme d'exploitation qui a t
   install. Linux/MIPS supporte uniquement le microcode "little endian"
   sur ces deux types de machines. Puisque le M700-10 n'a t mis sur le
   march uniquement en tant que machine NT, toutes ces machines ont ce
   matriel install. Le cas du MIPS Magnum est quelque peu plus
   complexe. Si votre machine a t configur en "big endian" pour
   RISC/os alors vous devez recharger le microcode "little endian". Ce
   microcode tait,  l'origine, inclus sur une disquette lors de la
   livraison de chaque Magnum. Si vous ne possdez plus la disquette,
   vous pouvez la tlcharger par ftp anonymes sur le site
   ftp://ftp.fnet.fr.

   Il est possible de reconfigurer les M700 pour des oprations headless
   en positionnant les variables d'environnement du matriel ConsoleIn et
   ConsoleOut sur mluti()serial()term(). Essayez aussi la commande
   _listdev_ qui listera les priphriques ARC existants.

   Dans bien des cas, comme lorsque la carte graphique G364 est absente
   alors que la console est encore configure pour l'utilisation
   graphique normale, il sera ncessaire de modifier le cavalier de
   configuration JP2 sur la carte mre. Aprs le prochain reset, la
   machine redemarrera sur la console COM2.

  MIPS Magnum 4000SC

   Le Mips Magnum 4000SC est semblable au Magnum 4000 (voir ci-dessus)
   sauf qu'il utilise un CPU R4000SCC.

3.2 Les types de processeur

  La famille des R2000, R3000

   Le R2000 est le processeur MIPS original. C'est un processeur 32 Bits
   qui avait une frquence de 8 MHz sortie en 85 lorsque les premiers
   processeurs MIPS arrivrent sur le march. Les versions suivantes
   furent cadences plus rapidement : par exemple, le 53000 est un
   reconception du R2000 100% compatible, juste cadenc plus rapidement.
   A cause de leur haute compatibilit, lorsque ce document mentionne le
   R3000, dans bien des cas, les mmes faits s'appliquent aussi aux
   R2000. Le R3000A est,  la base, un R2000 avec un FPU R3010 et 64 K de
   cache cadenc jusqu' 40 MHz et intgr dans la mme puce.

   Harald Koerfgen (Harald.Koerfgen@home.ivm.de) et Gleb O. Raiko
   (raiko@niisi.msk.ru) ont tous les deux, de faon indpendante,
   travaill sur des patches pour les processeurs R3000. Leur travail a
   t fusionn et intgr dans les sources officiels de Linux/MIPS
   depuis juillet 1999. Actuellement, Linux supporte les processeurs
   R3000 ainsi que des variantes comme le R3081 et le TMPR3912/PR31700.

  R6000

   Parfois, des personnes confondent le R6000, qui est un processeur
   MIPS, avec le RS6000, une srie de stations de travail cre par IBM.
   Donc, si vous lisez ces lignes en esprant trouver des informations
   sur l'utilisation de Linux sur des machines IBM, vous lisez le mauvais
   document.

   Le R6000 n'est pas support pour l'instant. C'est un processeur MIPS
   32 Bits ISA 2 et c'est un morceau de silicon plutt intressant et
   bizarre. Il a t dvelopp et produit par une entreprise appele _BIT
   Technology_. Plus tard, NEC repris la production des semiconducteurs.
   Il tait construit avec la technologie ECL, la mme technologie qui
   tait et qui est encore utilis pour construire des puces extrmement
   rapide comme celles utilises dans les ordinateurs Cray. Le processeur
   possde son propre TLB implment comme une partie des dernires
   paires de lignes du cache primaire externe, une technologie appele
   _tranche TLB (TLB slice)_. Ce qui signifie que son MMU est
   substantiellement diffrent de ceux de la srie des R3000 ou des
   R4000, ce qui est aussi une des raisons pour laquelle le processeur
   n'est pas support.

  La famille des R4000 et R5000

   Linux supporte la plupart des membres de la famille des R4000.
   Actuellement, ce sont le R4000PC, le R4400PC, le R4300, le R4600, le
   R4700, le R5000, le R5230 et le R5260. Beaucoup d'autres fonctionnent
   probablement aussi bien.

   Ceux qui ne sont pas supports, ce sont les CPU R4000MC et R4400MC (ce
   sont des systmes multi-processeurs), de mme que les systme R5000
   avec un cache de second niveau control par le CPU. Cela signifie que
   le cache est contrl par le R5000 lui-mme  la diffrence des
   controleurs de cache externe. La diffrence est importante car,  la
   diffrence des autres systmes, particulirement les PCs, sur les
   MIPS, le cache est visible dans l'architecture et ncessite d'tre
   contrl de faon logiciel.

   Remerciements particuliers pour Ulf Carlsson (ulfc@engr.sgi.com) qui a
   fourni le module CPU pour deboguer le support du R4000SC / R4400SC.

  R8000

   Le R8000 n'est pas support,  l'heure actuelle, d'une part parce que
   ce processeur est relativement rare et qu'il n'a t utilis que dans
   quelques machines de SGI, d'autre part parce que les dveloppeurs de
   Linux/MIPS ne possdent pas d'une machine de ce type.

   Le R8000 est un morceau de silicon plutt intressant. A la diffrence
   des autres membres de la famille MIPS, c'est un ensemble de 7 puces.
   Son cache et son architecture TLB est assez diffrent des autres
   membres de la famille MIPS. Il est n d'un rapide "hack" pour que les
   virgules flotantes redeviennent le fer de lance des Silicon Graphics
   avant que le R10000 soit termin.

  R10000

   Le R10000 est support dans le noyau mips64 qui est actuellement
   support par les IP22 (l'Indy de SGI, le Challenge S et l'Indigo 2) et
   l'Origin.

   A cause de la trs grande difficult pour grer la manire de
   fonctionner de ce processeur dans des systmes sans cache cohrent,
   cela va prendre probablement encore un certain temps avant que nous
   supportions ce processeur pour de tels systmes. A partir de
   maintenant, ces systmes sont les SGI O2 et Indigo.

3.3 Matriel qui ne sera jamais support

  IBM RS6000

   Comme son nom l'indique, c'est une machine IBM qui est bas sur la
   srie de processeur RS6000 et, en tant que tel, ils ne font pas partie
   du projet Linux/MIPS. Les gens confondent souvent l'IBM RS6000 avec
   l'architecture MIPS R6000. Cependant, le projet Linux/PPC doit s'en
   occuper. Consultez le site http://www.linuxppc.org/ pour de plus
   amples informations.

  VaxStation

   Comme son nom l'indique dj, cette machine est un membre de la
   famille des VAX de Digital Equipment. On le mentionne ici parce qu'il
   est souvent confondu avec la famille des DECstation bas sur le MIPS
   de Digital  cause des types de numros similaires. Malheureusement,
   le VaxStation, de mme que la famille entire des VAX, n'est pas
   support pour l'instant.

  SGI VisPC

   C'est un systme bas sur les x86, par consquent, il n'est pas
   couvert par cette FAQ. Cependant, pour faciliter vos recherches, voici
   quelques infos. Ken Klingman (kck@mailbox.esd.sgi.com) post le 17
   Janvier 1999 sur la liste de discussion Linux de SGI :

  Nous y travaillons. Nous terminons actuellement de mettre le support
  du niveau de base dans la release de la 2.2. Les logiciels uniquement bas su
r
  X et OpenGl devrait suivre relativement rapidement, mais le matriel acclr
  pour OpenGL n'est pas encore planifi. Voir www.precisioninsight.com pour des
  nouvelles sur le matriel acclr pour OpenGL.


   Pour plus d'informations, voir la Documentation/ du noyau de Linux 
   partir de la version 2.2 ou suprieure. Il y a des informations
   supplmentaires sur le web  l'adresse http://oss.sgi.com/. Notez que
   le personnel de SGI/MIPS et de SGI/Intel travaille indpendemment de
   chacun des autres, par consquent, les sources sur le CVS anonyme sur
   oss.sgi.com peut ou ne peut trs bien ne pas fonctionner pour les
   machines Intel ; nous n'avons pas test cela.

  Les machines bas sur le 68k de Motorola comme l'Iris 30000

   Ce sont de _trs_ vieilles machines, probablement ags de plus de 10
   ans maintenant. Comme ces machines ne sont pas bas sur des
   processeurs MIPS, ce document est le mauvais endroit pour y chercher
   des informations. Cependant, dans le but de vous faciliter les choses,
   ces machines ne sont pas supportes actuellement.

4. Les distributions Linux

4.1 RedHat

   Pour les MIPS, il y a la Rough Cuts Linux, anciennement Hard Hat
   Linux, qui est plus qu'un simple portage d'une Red Hat Linux 5.1 sur
   MIPS. Il est possible de l'obtenir sur ftp://oss.sgi.com/pub/hardhat.

   Il est aussi empaquet avec le support de l'architecture M68k,
   UltraSparc et PowerPC dans un paquetage appel "Rough Cuts" labor
   par Red Hat, et on peut l'obtenir l o les produits Red Hat sont
   vendus. C'est une manire trs pratique de l'obtenir sans avoir 
   tlcharger 280 Mo. Vous pouvez commander Rough Cuts directement chez
   Red Hat  l'adresse http://www.redhat.com/product.phtml/RC1000.

   De plus, il existe une distribution bas sur la Red Hat 5.2 qui a pour
   cible les Qubes de Cobalt ; ses binaires fonctionneront parfaitement
   sur d'autres architectures MIPS et sont accessibles sur
   ftp://intel.cleveland.lug.net/pub/Mipsel. ftp://bolug.uni-bonn.de/mips
   possde plusieurs paquetages rpm Redhat 6.0 et 6.1.

4.2 Debian

   Un portage de la Debian est en cours. Les efforts actuels ont t
   amorc en utilisant SGI/Linux comme base, et dpkg compile en natif
   avec peu de changements. En plus de la version SGI, des personnes ont
   montr leur intrt pour des plateformes "little endian". Gardez un
   oeil sur la page du portage Debian-MIPS,
   http://www.debian.org/ports/mips/ pour le dveloppement.

4.3 Simple

   Cette distribution a t faite, jusqu'ici, uniquement pour les
   systmes "big endian". Elle est hautement exprimentale, pour une
   utilisation pour des dveloppeurs pour tester les dernires versions
   de gcc, de binutils, de la glibc et du noyau. C'est la seule
   distribution base sur la glibc 2.2 disponible pour MIPS. Vous pouvez
   toujours rcuprer la dernire version de cette distribution et les
   notes de publications qui l'accompagnent sur
   ftp://oss.sgi.com/pub/linux/mips/mips-linux/simple. Un systme de
   cross-compilation est galement disponible pour aider le
   dveloppement.

5. Ressources Linux/MIPS sur le net

5.1 Serveurs FTP anonymes

   Les deux serveurs FTP anonymes principaux pour Linux/MIPS sont :

   _oss.sgi.com_
          Ce serveur devrait satisfaire presque tous vos dsirs ftp sur
          Linux/MIPS. Vraiement.

   _ftp.fnet.fr_
          Ce serveur n'est actuellement plus tout  fait  jour ; il est
          inclus ici pour tre exhaustif et pour les gens qui sont
          intresss par des logiciels prhistoriques.

   Sur tous ces serveurs ftp, il existe une liste de sites mirroirs que
   vous devrez plutt utiliser pour avoir des accs plus rapide.

   Une autre source de binaires MIPS "little endian" se situe sur
   ftp://intel.cleveland.lug.net/pub/Mipsel qui contient la plupart des
   versions trs rcentes des binaires pour la Redhat avec les binaires
   du Cobalt.

5.2 Serveurs CVS anonymes

   Pour ceux qui veulent toujours rester au bord du goufre et qui veulent
   viter d'avoir  tlcharger des patches ou des archives tar
   compltes, nous avons aussi un serveur CVS anonymes. En utilisant CVS,
   vous pouvez rapatrier l'arbre des sources de Linux/MIPS avec les
   commandes suivantes :

   cvs -d :pserver:cvs@oss.sgi.com:/cvs login
   (Ncessaire uniquement lors de la premire utilisation du CVS anonyme, le mo
t
  de passe est "cvs")
   cvs -d :pserver:cvs@oss.sgi.com:/cvs co <repository>

   o vous insrez linux, libc, gdb ou faq  la place de <repository>.
   L'autre archive CVS importante de la communaut Linux est
   vger.rutgers.edu o beaucoup de code est centralis avant d'tre
   envoy  Linus pour distribution. Bien que vger lui-mme n'offre plus
   d'accs anonyme, il y a des sites mirroirs qui fournissent un accs
   anonyme. Pour plus de dtails sur la manire d'y accder, voir
   http://cvs.on.openprojects.net/. Les modules qui ont de l'intrt sont
   "linux", "modutils", "pciutils", "netutils".

5.3 Serveurs Web

   Les deux principaux serveurs web pour Linux/MIPS sont :

   _http://oss.sgi.com/mips_
          Ce serveur couvre la presque totallit de Linux/MIPS ; il est
          plutt centre sur SGI mais comme Linux/MIPS essaye d'tre
          identique sur toute les plateformes, la plupart de ces
          informations restent intressantes pour tous les utilisateurs.

   _http://lena.fnet.fr_
          Ce serveur n'est actuellement plus trs  jour ; il est inclu
          ici principalement pour tre exhaustif.

   Tous ces serveurs possdent des mirroirs parpills  travers le monde
   ; vous devrez sans doute en utiliser un pour obtenir de meilleures
   performances.

5.4 Serveur Web CVS

   Via http://oss.sgi.com/mips/cvsweb vous avez un accs direct aux
   sources du nouveau noyau Linux/MIPS et  quelques autres projets grs
   dans la mme archive CVS. L'interface intuitive vous permet de suivre
   le dveloppement avec des clics de souris.

5.5 Listes de discussions

   Il existe trois listes de discussions sur Linux/MIPS :

   _linux-mips@fnet.fr_
          Cette liste de discussions est utilise pour des communications
          de toutes sortes autres qu' propos de SGI. Les inscriptions
          sont grs par une personne ; envoyez votre requtes
          d'inscription  linux-mips-request@fnet.fr. Vous pouvez vous
          desinscrire  partir de la liste de discussions en envoyant
          _unsubscribe <votre-adresse-mail>_  la mme adresse.

   _linux-mips@oss.sgi.com_
          Cette liste de discussions possde actuellement le plus de
          traffic. Elle est plus ou moins centre sur SGI mais elle a
          pourtant de l'intrt, spcialement pour les dveloppeurs
          puisqu'un grand nombre d'ingnieurs de SGI sont inscrits  la
          liste. L'inscription  cette liste se fait par Majordomo
          (majordomo@oss.sgi.com) ; envoyez simplement un courrier
          lectronique avec les mots _subscribe linux_. Pour se
          dsinscrire, envoyez _unsubscribe linux_. Notez que vous devez
          vous inscrire pour pouvoir poster un courrier ; l'augmentation
          de spasm nous a forc cette politique. Pour de plus amples
          informations, voir aussi http://oss.sgi.com/mips/email.html.

   _linux-mips@vger.rutgers.edu_
          Cette liste de discussions a vraiment trs peu de traffic
          puisque la plupart des gens ont tendance  utiliser une des
          listes de discussions ci-dessus. Les inscriptions sont gres
          par Majordomo (majordomo@vger.rutgers.edu) ; envoyez juste un
          courrier lectronique avec les mots _subscribe linux-mips_.
          Pour se dsinscrire envoyez un courrier avec _unsubscribe
          linux-mips_.

5.6 Canal IRC

   Il existe un canal IRC nomm #mipslinux pour Linux/MIPS qui peut tre
   trouv sur irc.openprojects.net.

6. L'installation de Linux/MIPS et ses problmes classiques

6.1 Le boot sur NFS choue

   En gnral, cela vient du fait que la personne a dcompress l'archive
   tar sous IRIX, et pas sous Linux. Puisque la reprsentation des
   fichiers des priphriques  travers NFS n'est pas standardis entre
   les Unices, cela choue. Le symptome est le blocage du systme avec le
   message d'erreur "Warning: unable to open an initial console." juste
   aprs le montage du systme de fichiers NFS.

   Pour le moment, il faut utiliser un systme Linux (pas ncessairement
   un MIPS) pour dcompresser l'archive d'installation sur un serveur
   NFS. Le serveur NFS lui-mme peut tre n'importe quel UNIX.

6.2 Des noyaux compils plantent au dmarrage

   Lorsque je construit mon propre noyau, il plante. Sur un Indy, le
   message lors du plantage ressemble  ce qui suit ; le mme problme
   apparat aussi sur d'autres machines mais ce qui est affich diffre
   compltement.

   Exception: <vector=UTLB Miss>
   Status register: 0x300004803<CU1,CU0,IM4,IPL=???,MODE=KERNEL,EXL,IE>
   Cause register: 0x8008<CE=0,IP8,EXC=RMISS>
   Exception PC: 0x881385cc, Exception RA: 0x88002614
   exception, bad address: 0x47c4
   Local I/O interrupt register 1: 0x80 <VR/GIO2>
   Saved user regs in hex (&gpda 0xa8740e48, &_regs 0xa8741048):
     arg: 7 8bfff938 8bfffc4d 880025dc
     tmp: 8818c14c 8818c14c 10 881510c4 14 8bfad9e0 0 48
     sve: 8bfdf3e8 8bfffc40 8bfb2720 8bfff938 a8747420 9fc56394 0 9fc56394
     t8 48 t9 8bfffee66 at 1 v0 0 v1 8bfff890 k1 bad11bad
     gp 881dfd90 fp 9fc4be88 sp 8bfff8b8 ra 88002614

   PANIC: Unexpected exception

   Ce problme vient d'une erreur non rsolue encore dans le module
   Binutils dans les versions suprieures  la version 2.7. Pour le
   rsoudre, changez la ligne suivante dans le fichier arch/mips/Makefile

   LINKFLAGS       = -static -N

   en :

   LINKFLAGS       = -static

6.3 Le dmarrage du noyau sur l'Indy choue avec des messages d'erreurs de la
PROM

   >> boot bootp()/vmlinux
   73264+592+11520+331680+27848d+3628+5792 entry: 0x8df9a960
   Setting $netaddres to 192.168.1.5 (from server deadmoon)
   Obtaining /vmlinux from server deadmoon

   Cannot load bootp()/vmlinux
   Illegal f_magic number 0x7f45, expected MIPSELMAGIC or MIPSEBMAGIC.

   Ce problme survient uniquement pour des Indys avec des versions trs
   anciennes de la PROM qui ne peuvent pas grer le format binaire ELF
   que Linux utilise. Une solution  ce problme est en cours de
   rsolution.

6.4 O puis-je obtenir le microcode en "little endian" pour mon SNI ?

   Le systme SNI peut tourner  la fois en modes "big endian" et "little
   endian". Actuellement, Linux/MIPS supporte uniquement le microcode
   "little endian". C'est plutt malchanceux car SNI n'a plus mis en
   place ce microcode depuis un certain temps, depuis qu'ils sont passs
   en NT. Lorsqu'il tourne en mode "big endian", le microcode se comporte
   de faon similaire  un Indy SGI qui est dj support, par consquent
   la rsolution du support des SNI sera relativement facile. Les hackers
   intresss peuvent contacter Ralf Bchle (ralf@gnu.org).

6.5 ld meurt avec un signal 6

   collect2: ld terminated with signal 6 [Aborted]

   C'est un problme connu dans de vieilles versions de binutils. Vous
   devrez remettre  niveau binutils 2.8.1 plus des patches trs
   rcentes.

6.6 Ma machine ne tlcharge pas mon noyau lorsque j'essaye de booter par le
rseau

   Votre machine rpond aux paquets de BOOTP (vous devriez vrifier cela
   en utilisant des sniffers de paquets comme tcpdump ou ethereal) mais
   ne tlcharge pas le noyau  partir du serveur BOOTP. Cela arrive si
   votre serveur de boot tourne sous un noyau de la srie 2.3 ou
   suprieure. Le problme peut tre contourn en faisant un "echo 1 >
   /proc/sys/net/ipv4/ip_no_pmtu_disc" sous compte administrateur (root)
   sur votre serveur de dmarrage.

6.7 Erreur dans la version 2 de DHCP

   Lors de l'utilisation de DHCP version 2, vous devrez voir apparatre
   le problme suivant : Votre machine a reu sa rponse de BOOTP 3 fois
   mais refuse de dmarrer TFTP. Vous pouvez rsoudre cela en faisant un
   "unsetenv netaddr" dans la console de commande de la PROM avant de
   booter votre systme. La version 3 de DHCP rsoud ce problme.

7. Milo

   Milo est le chargeur de dmarrage utilis pour dmarrer les systmes
   MIPS en mode "little endian" avec du microcode ARC, actuellement la
   famille Jazz et le SNI RM 200. Bien que Milo utilise le mme nom et
   possde le mme rle que la version Alpha de Milo, ces deux Milo n'ont
   rien en commun. Ils sont dvelopps par des gens diffrents, ne
   partagent pas de code, et travaillent sur des plateformes matrielles
   diffrentes. Le fait d'avoir le mme nom est simplement une sorte
   d'``accident'' historique.

   Il est prvu de supprimer l'utilisation de Milo dans un futur proche.

7.1 Compiler Milo

   La procdure de compilation de Milo est dcrite en dtail dans les
   fichiers README dans le paquetage de Milo. Puisque Milo dpend des
   fichiers d'en-tte du noyau qui ont chang plusieurs fois de suite,
   Milo, bien souvent, ne peut tre compil aisment ; cependant, la
   distribution de Milo inclus les binaires pour Milo et Pandora  la
   fois.

7.2 Pandora

   Pandora est un simple dbugeur. Il a t initialement dvelop pour
   analyser les systmes non-documents. Pandora inclus un dsassembleur,
   des fonctions de dump mmoire et bien plus. Si vous voulez simplement
   utiliser Linux, il est inutile d'installer Pandora. Cependant, il ne
   prend pas beaucoup de place.

8. Modules chargeables

   L'utilisation des modules sous Linux/MIPS est plutt facile ; cela
   devrait marcher normalement pour les personnes qui l'ont utilis sous
   d'autres systmes Linux. Si vous dsirez lancer un systme bas sur
   des modules alors il vous faut au moins un noyau de version 980919 et
   installer modutils avec un numro de version plus rcente que 2.1.121.
   Des versions plus anciennes ne fonctionneront pas.

9. Comment configurer un compilateur crois ?

9.1 Binaires existant

   La chose la plus simple pour configurer un compilateur crois est de
   tlcharger les binaires. Pour les machines Linux/i386 et les cibles
   "big endian", les paquetages ncessaires sont :

  binutils-mips-linux-2.8.1-1.i386.rpm
  egcs-c++-mips-linux-1.0.3a-1.i386.rpm
  egcs-g77-mips-linux-1.0.3a-1.i386.rpm
  egcs-libstdc++-mips-linux-2.8.0-1.i386.rpm
  egcs-mips-linux-1.0.3a-1.i386.rpm
  egcs-objc-mips-linux-1.0.3a-1.i386.rpm

   Et voici la liste des paquetages pour les cibles "little endian" :

  binutils-mipsel-linux-2.8.1-1.i386.rpm
  egcs-c++-mipsel-linux-1.0.3a-1.i386.rpm
  egcs-g77-mipsel-linux-1.0.3a-1.i386.rpm
  egcs-libstdc++-mipsel-linux-2.8.0-1.i386.rpm
  egcs-mipsel-linux-1.0.3a-1.i386.rpm
  egcs-objc-mipsel-linux-1.0.3a-1.i386.rpm

   Il n'est pas ncessaire de tous les installer ; la plupart des
   personnes peuvent oublier les compilateurs C++, Objective C et
   Fortran 77. Les binaires pour Intel ont t link avec la GNU libc
   2.1, donc vous devez l'installer aussi pour une mise  jour.

9.2 Construire votre propre compilateur crois

   Avant toute chose, tlchargez les paquetages des sources et les
   patches :

     * binutils-2.8.1.tar.gz
     * binutils-2.8.1-2.diff.gz
     * egcs-1.0.3a.tar.gz
     * egcs-1.0.3a-1.diff.gz
     * glibc-2.0.6.tar.gz
     * glibc-crypt-2.0.6.tar.gz
     * glibc-localedata-2.0.6.tar.gz
     * glibc-linuxthreads-2.0.6.tar.gz

   Ce sont les versions actuellement recommandes. Des versions plus
   anciennes peuvent marcher comme elles ne peuvent pas marcher. Si vous
   essayez d'utiliser des versions plus anciennes, ne nous envoyez pas de
   rapport de bug s'il vous plat ; nous n'y prterons pas attention.
   Lors de l'installation, veuillez procder dans l'ordre binutils, egcs,
   puis glibc. A moins que vous ayez des versions plus anciennes dj
   installes, le fait de changer l'ordre _fera_ chouer l'installation.
   La description de l'installation suivante mentionne un certain nombre
   de patches que vous pouvez rcuprer  partir des paquetages SRPM
   respectifs sur oss.sgi.com. Cependant, puisque ces paquetages SRPM
   sont censs tre compils dans la bonne architecture, il n'est pas
   possible de simplement les recompiler.

9.3 Espace disque ncessaire

   Vous devez choisir un rpertoire pour l'installation. Je ferais
   rfrence  ce rpertoire par <prefix>. Pour viter certain problme,
   il vaut mieux utiliser la mme valeur pour <prefix> que pour le gcc
   natif. Par exemple, si votre gcc est install dans /usr/bin/gcc alors
   choisissez /usr pour <prefix>. Vous devez utiliser la mme valeur de
   <prefix> pour tous les paquetages que vous allez installer.

   Pendant l'installation, il vous faudra environ 31 Mo d'espace disque
   pour binutils ; pour l'installation il vous faudra 7 Mo d'espace
   disque sur la partition contenant <prefix>. La compilation d'egcs
   ncesite 71 Mo et 14 Mo pour l'installation. GNU libc ncessite 149 Mo
   d'espace disque pendant la compilation et 33 Mo pour l'installation.
   Notez que ces quantits ne sont que des indications et peuvent varier
   significativement pour diffrentes architectures de processeurs et de
   systmes d'exploitation.

9.4 Ordre des octets

   Une des fonctionnalits particulires des architectures MIPS est que
   tous les processeurs sauf le R8000 peuvent tre configur pour tourner
   en mode gros ou petit boutien (big ou little endian). L'ordre des
   octets indique la manire dont le processeur stocke en mmoire les
   nombres sur plusieurs octets. Les machines gros boutiens stockent
   l'octet de poids le plus fort  l'adresse la plus basse alors que les
   machines petits boutiens les stockent  l'adresse la plus haute.
   Pensez  cela lors de l'criture de nombres sur plusieurs octets de
   gauche  droite ou vice-versa.

   Pour configurer correctement votre compilateur crois, vous devez
   connatre l'ordre des octets du compilateur crois cible. Si vous ne
   le savez pas dj, consultez la section Hardware Platforms pour
   l'ordre des octets des machines.

9.5 Les noms de configuration

   La plupart des paquetages bass sur autoconf supportent plusieurs
   architectures et systmes d'exploitation diffrents. Pour diffrencier
   chaque configuration, les noms sont construits selon les schmas
   <cpu>-<entreprise>-<SE> voire mme <cpu>-<entreprise>-<noyau>-<SE>.
   Selon ces schmas, les noms de configuration de Linux/MIPS sont
   mips-unknown-linux-gnu pour les gros boutiens ou
   mipsel-unknown-linux-gnu pour les petits boutiens. Ces noms sont un
   peu long et il est permis de les abrger en mips-linux ou
   mipsel-linux. Vous _devez_ utiliser les mmes noms de configuration
   pour tous les paquetages qui comprennent votre environnement de
   compilateur crois. Ainsi, bien que les autres noms comme
   mips-sni-linux ou mipsel-sni-linux sont les noms de configuration
   lgaux, utilisez linux-mips ou mipsel-linux  la place ; ce sont les
   noms de configuration connu par les autres paquetages comme les
   sources du noyau Linux, autrement il devra tre modifi pour les
   compilations croises.

   Je ferais maintenant rfrence au nom de configuration cible par
   <target>.

9.6 Installation de GNU binutils

   Ceci est la premire partie et la plus simple - du moins si vous
   essayez de faire l'installation sur un quelconque UNIX sain. Entrez
   simplement dans un rpertoire avec suffisamment d'espace disque et
   faites ce qui suit :

   gzip -cd binutils-<version>.tar.gz | tar xf -
   cd binutils-<version>
   patch -p1 < ../binutils-<version>-mips.patch
   ./configure --prefix=<prefix> --target=<target>
   make CFLAGS=-O2
   make install

   Cela fonctionne trs bien habituellement. Sur certaines machines qui
   utilise GCC 2.7.x comme compilateur, on raporte des dump core. C'est
   un bug connu de GCC et peut tre rsolu en mettant GCC  niveau  la
   version 2.8.1 ou en mettant  niveau egcs.

9.7 Assert.h

   Des personnes possdent un vieux fichier d'en-tte assert.h install,
   probablement des restes d'une ancienne installation d'un compilateur
   crois. Ce fichier a pour consquence de faire chouer silencieuement
   les scripts autoconf ; il n'est jamais ncessaire et il a t
   uniquement install  cause d'un bug dans des versions plus anciennes
   de GCC. Vrifiez si le fichier <prefix>/<target>/include/assert.h
   existe dans votre installation. Si c'est le cas, effacez-le : il
   n'aurait jamais d tre install pour une quelconque version du
   compilateur crois et causera des perturbations.

9.8 Installation des sources du noyau

   L'installation des sources du noyau est simple. Placez-les simplement
   dans un rpertoire de votre choix et configurez-les. Leur
   configuration est ncessaire pour que les fichiers qui sont gnrs
   par la procdure soient installs. Assurez-vous que vous ayez activ
   CONFIG_CROSSCOMPILE vers la fin du processus de configuration.
   L'unique problme que vous pourriez rencontrer est d'avoir besoin
   d'installer des programmes GNU ncessaires comme bash ou devoir
   craser les versions de programmes fournies par le constructeur en
   plaant les versions GNU plus tt dans la variables PATH.

   Maintenant, allez dans le rpertoire <prefix>/<target>/include et
   crez deux liens symboliques nomms asm et linux pointant
   respectivement sur include/asm et include/linux dans vos sources du
   noyau qui viennent juste d'tre installs et configurs. Ils sont
   ncessaires pour que les fichiers d'en-ttes ncessaires soient
   trouvs pendant l'tape suivante.

9.9 Premire installation d'egcs

   Maintenant la partie la moins rigolote commence : il existe un
   soit-disant problme d'amorage. Dans notre cas, cela signifie que le
   processus d'installation d'egcs ncessite une glibc prcdemment
   installe, mais nous ne pouvons pas compiler glibc parce que nous ne
   possdons pas encore de compilateur crois. Heureusement, vous devrez
   uniquement passer par l lorsque vous installerez un compilateur
   crois pour la premire fois. Plus tard, lorsque vous aurez dj
   install la glibc les choses seront plus aises. Mais pour l'instant
   faites :

   gzip -cd egcs-1.0.3a.tar.gz | tar xf -
   cd egcs-<version>
   patch -p1 < ../egcs-1.0.3a-mips.patch
   ./configure --prefix=<prefix> --with-newlib --target=<target>
   make SUBDIRS="libiberty texinfo gcc" ALL_TARGET_MODULES= \
           CONFIGURE_TARGET_MODULES= INSTALL_TARGET_MODULES= LANGUAGES="c"

   Notez que nous n'avons pas dlibrement compil gcov, protoize,
   unprotoize et les bibliothques. Gcov n'a pas de sens dans un
   environnement de compilateur crois et protoize et unprotoize
   craserait carrment vos programmes natifs - c'est un bug dans les
   makefiles de gcc. Enfin, nous ne pouvons compiler les bibliothques
   parce que nous n'avons pas encore install la glibc. Si tout ce passe
   avec succs, lancez l'installation avec :

   make SUBDIRS="libiberty texinfo gcc" INSTALL_TARGET_MODULES= \
           LANGUAGES="c" install

   Si vous dsirez le compilateur crois pour compiler le noyau, vous
   avez finis. La compilation croise de la libc est maintenant
   ncessaire pour pouvoir compiler les applications utilisateurs.

9.10 Tester ce que vous avez fait jusqu'ici

   Simplement pour s'assurer que ce que vous avez fait jusqu'ici
   fonctionne, vous devriez maintenant essayer de compiler le noyau.
   Entrez dans les sources du noyau MIPS et tapez "make clean; make dep;
   make". Si tout se droule bien, faites un "make clean" une fois de
   plus pour nettoyer les sources.

9.11 L'installation de la GNU libc

   Faites :

   gzip -cd glibc-2.0.6.tar.gz | tar xf -
   cd glibc-2.0.6
   gzip -cd glibc-crypt-2.0.6.tar.gz | tar xf -
   gzip -cd glibc-localedata-2.0.6.tar.gz | tar xf -
   gzip -cd glibc-linuxthreads-2.0.6.tar.gz | tar xf -
   patch -p1 < ../glibc-2.0.6-mips.patch
   mkdir build
   cd build
   CC=<target>-gcc BUILD_CC=gcc AR=<target>-ar RANLIB=<target>-ranlib \
         ../configure --prefix=/usr --host=<target> \
         --enable-add-ons=crypt,linuxthreads,localedata --enable-profile
   make

   Vous avez maintenant une GNU libc compile qui doit encore tre
   installe. _Ne_ faites _pas_ un simple make install. Cela craserait
   vos fichiers systme de votre machine par les fichiers spcifiques de
   Linux/MIPS avec des effets dsastreux. A la place, installez la GNU
   libc dans un autre rpertoire choisie arbitrairement <somedir> 
   partir du quel nous dplacerons dans le rpertoire cible actuel les
   parties que nous avons besoin pour la compilation croise :

   make install_root=<somedir> install

   Maintenant pntrez dans <somedir> et installez finalement la GNU libc
   manuellement

   cd usr/include
   find . -print | cpio -pumd <prefix>/<target>/include
   cd ../../lib
   find . -print | cpio -pumd <prefix>/<target>/lib
   cd ../usr/lib
   find . -print | cpio -pumd <prefix>/<target>/lib

   La GNU libc contient aussi une vaste documentation en ligne. Votre
   systme doit dj possder une version de cette documentation, donc si
   vous ne dsirez pas installer les pages infos ce qui vous sauvera un
   peu moins d'un mega octets, ou si vous les avez dj installs, sautez
   la prochaine tape :

   cd ../info
   gzip -9 *.info*
   find . -name \*.info\* -print | cpio -pumd <prefix>/info

   Si vous n'avez pas de programme d'amorce, votre installation n'est pas
   finis

9.12 Recompilation d'egcs

   La premire tentative de compilation d'egcs a t stoppe par
   l'absence de la GNU libc. Puisque nous avons maintenant la libc
   d'installe, nous pouvons reconstruire egcs mais cette fois de faon
   aussi complte que l'installation d'un compilateur crois puisse
   l'tre :

   gzip -cd egcs-<version>.tar.gz | tar xf -
   cd egcs-<version>
   patch -p1 < ../egcs-1.0.3a-mips.patch
   ./configure --prefix=<prefix> --target=<target>
   make LANGUAGES="c c++ objective-c f77"

   Comme vous pouvez le constater, la procdure est identique que la
   premire fois sauf que nous avons laiss tomb l'option --with-newlib.
   Cette option tait ncessaire pour enlever l'arrt de la compilation
   de libgcc  cause de l'absence de la libc. Maintenant lancez
   l'installation avec :

   make LANGUAGES="c c++ objective-c f77" install

   Vous avez presque termin. Si vous pensez ne pas avoir besoin des
   compilateurs Objective C ou F77, vous pouvez les enlever des commandes
   ci-dessus ; chacune vous sauvera environ 3 Mo. Ne compilez pas gcov,
   protoize ou unprotoize.

9.13 Dois-je compiler les compilateurs C++, Objective C ou F77 ? La rponse 
cette question dpend largement de l'utilisation que vous ferez de votre
environnement de compilateur crois. Si vous avez pour unique but de recompiler
le noyau Linux alors vous n'avez pas besoin d'une configuration pleine 
craquer et vous pouvez ommettre en toute scurit les compilateurs Objective C
et F77. Vous devez, cependant, compiler le compilateur C++, parce que la
compilation des bibliothques inclues avec la distribution d'egcs ncessite
C++.

9.14 Problme connu lors de compilation croise

  Plantage d'IRIX

   Origin 200 tournant sous IRIX 6.5.1 peut se planter lors d'un "make
   depend" dans les sources de noyau Linux. IRIX 6.5 sur un Indy et
   IRIX 6.5.4 sur un Origin 200 sont connus pour fonctionner
   correctement. Tout rapports pour aider  isoler le problme de
   configuration est la bienvenue.

  Ressources limites sur les machines bases sur le standard System V

   Les Unix bass sur le standard System V comme IRIX ou Solaris ont des
   valeurs limites maximum sur les nombres d'argument pouvant tre passs
    un processus enfant qui peuvent tre dpasss lors de la compilation
   croise de logiciels comme le noyau Linux ou la GNU libc. Pour les
   systmes IRIX, la taille maximum de la liste d'arguments vaut par
   dfaut 20 Ko alors la valeur par dfaut pour Linux est d'au moins 128
   Ko. Cette taille peut tre modifi par la commande "systune ncargs
   131072" sous root.

9.15 GDB

   La compilation de GDB comme debugeur crois a uniquement d'intrt
   pour les dveloppeurs du noyau ; leur GDB peut leur sauver la vie. Une
   telle configuration de debugage distant est compose de deux parties :
   le debugeur GDB distant fonctionnant sur une machine et la machine
   cible faisant tourner le noyau Linux/MIPS qui doit tre dbugu. Les
   machines sont habituellement inter-connectes par une ligne srie. Le
   noyau de la machine cible doit tre quip d'un "embryon de dbugage"
   qui communique avec le GDB de la machine hte en utilisant le
   protocole srie distant.

   Suivant l'architecture cible, il vous faudra implmenter l'embryon de
   dbugage vous-mme. En gnral, vous devrez uniquement crire des
   routines sries trs simple. La tche est, de plus, simplifie par le
   fait que la plupart des machines utilisent des priphriques sries
   semblables, en gnral bas sur le 8250, le 16450 ou des drivs.

10. Litteratures sur le mme thme

10.1 Voir un MIPS tourner (See MIPS Run)

   auteur Dominic Sweetman, publi par Morgan Kaufmann, ISBN
   1-55860-410-3. Il a t crit pour tre un guide plutt comprhensif
   pour la programmation MIPS, l o celui-ci diffre de la programmation
   d'autres CPU 32 bits. C'est la premire fois que quelqu'un tente
   d'crire une explication lisible et comprhensive et qui prend en
   compte l'immense gamme de CPU MIPS existant, et devrait tre trs
   utile pour toutes personnes programmant en MIPS qui n'est pas isol
   par le systme d'exploitation de quelqu'un d'autre. Et l'auteur est un
   enthousiaste pro-unix-libre qui s'est inscrit  la liste de
   discussions de Linux/MIPS ! John Hennessey, le pre de l'architecture
   MIPS, a t assez aimable pour crire dans la prface " ... ce livre
   est la meilleure combinaison entre l'exhaustivit et la lisibilit de
   tout livre sur l'architecture MIPS ... " ; Il contient une partie sur
   les CPU RISC, une description de l'architecture et de l'ensemble
   d'instructions incluant les instructions du "co-processeur 0" utilis
   pour le contrle du CPU ; des sections sur les caches, les exceptions,
   la gestion mmoire et les virgules flottantes. Il y a un guide
   dtaill sur le langage assembleur, des trucs sur le portage et des
   exemples de logiciels plutt  usage industriel. Il est disponible sur
   :

     * http://www.algor.co.uk/algor/info/seemipsrun.html (europe)
     * http://www.mkp.com/books_catalog/1-55860-410-3.asp (US)

   et chez tous les bonnes librairies. Il contient 512 pages et cote
   environ 50 $ aux Etats-Unis et 39.95  au Royaume-Unis. J'aimerais
   parler de deux autres livres aussi, publis chez Morgan Kaufmann et
   disponible sur www.mkp.com ou chez n'importe quelle librairie :

10.2 Le manuel du programmeur MIPS (The MIPS Programmer's Handbook)

   auteurs Farquhar et Bunce, publi par Morgan Kaufmann,
   ISBN 1-55860-297-6. Une introduction lisible pour la pratique de la
   programmation bas niveau d'un MIPS, par l'auteur de PMON. Sa qualit :
   beaucoup d'exemples ; son dfaut : ne parle pas d'importantes parties
   de l'architecture (telle que la gestion de la mmoire, des virgules
   flottantes et les caches avancs) parce qu'ils n'ont pas t prsent
   dans le LSI "embarqus" ; ce livre a l'intention d'tre un partenaire.

10.3 Architecture informatique - Une approche quantitative (Computer
Architecture - A Quantitative Approach)

   auteurs Hennessy & Patterson, publi chez Morgan Kaufmann,
   ISBN 1-55860-329-8. La bible de l'architecture informatique moderne et
   qui se doit d'tre lu si vous dsirez comprendre pourquoi un programme
   fonctionne lentement ou rapidement. Parle-t-il du MIPS ? Eh bien, cela
   tourne principalement autours de chose _semblable_ au MIPS ... Son
   seul dfaut est sa taille et son poids - mais  la diffrence des gros
   bouquins, il le vaut  chaque page.

10.4 Supplment pour les processeur MIPS ABI sous UNIX System V (UNIX System V
ABI MIPS Processor Supplement)

   par Prentice Hall, publi le 05 1991, ISBN 0-13880-170-3. Ce livre
   dfinit la plupart des standards techniques spcifiques  la
   technologie MIPS comme les conventions des appels, les proprits ELF
   et bien d'autre choses utilises par Linux/MIPS. Malheureusement, il
   est en rupture de stock. Paralllement, le site
   _"http://www.mipsabi.org/"_ ne rpond plus.
