home *** CD-ROM | disk | FTP | other *** search
/ PC World 1999 August / PCWorld_1999-08_cd.bin / doc / HOWTO / MIPS-HOWTO < prev    next >
Text File  |  1999-06-04  |  55KB  |  1,651 lines

  1.   Linux/MIPS HOWTO
  2.   Ralf BΣchle, ralf@gnu.org
  3.   v0.1, 31 March 1999
  4.  
  5.   This FAQ describes the MIPS port of the Linux operating system, common
  6.   problems and their solutions, availability and more.  It also tries to
  7.   be a little helpful to other people who might read this FAQ in an
  8.   attempt to find information that actually should be covered elsewhere.
  9.   ______________________________________________________________________
  10.  
  11.   Table of Contents
  12.  
  13.  
  14.  
  15.  
  16.  
  17.  
  18.  
  19.  
  20.  
  21.  
  22.  
  23.  
  24.  
  25.  
  26.  
  27.  
  28.  
  29.  
  30.  
  31.  
  32.  
  33.  
  34.  
  35.  
  36.  
  37.  
  38.  
  39.  
  40.  
  41.  
  42.  
  43.  
  44.  
  45.  
  46.  
  47.  
  48.  
  49.  
  50.  
  51.  
  52.  
  53.  
  54.  
  55.  
  56.  
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63.  
  64.  
  65.  
  66.  
  67.   1. What is Linux/MIPS?
  68.  
  69.   2. What hardware does Linux/MIPS support?
  70.  
  71.      2.1 Hardware platforms
  72.         2.1.1 Acer PICA
  73.         2.1.2 Baget/MIPS series
  74.         2.1.3 Cobalt Qube and Raq
  75.         2.1.4 Netpower 100
  76.         2.1.5 Nintendo 64
  77.         2.1.6 Silicon Graphics Indy
  78.            2.1.6.1 Strange numbers of available memory
  79.            2.1.6.2 Indy PROM related problems
  80.            2.1.6.3 ELF support in old PROM versions
  81.            2.1.6.4 Why is so much memory reserved on my Indy?
  82.         2.1.7 Silicon Graphics Challenge S
  83.         2.1.8 Silicon Graphics Indigo
  84.         2.1.9 Serial console on SGI machines
  85.         2.1.10 Motorola 68k based machines like the Iris 3000
  86.         2.1.11 SGI VisPC
  87.         2.1.12 Other Silicon Graphics machines
  88.         2.1.13 Sony Playstation
  89.         2.1.14 SNI RM200C
  90.         2.1.15 SNI RM200
  91.         2.1.16 SNI RM300C
  92.         2.1.17 SNI RM400
  93.         2.1.18 Algorithmics P4032
  94.         2.1.19 Algorithmics P5064
  95.         2.1.20 DECstation series
  96.         2.1.21 Mips Magnum 4000 / Olivetti M700-10
  97.         2.1.22 MIPS Magnum 4000SC
  98.         2.1.23 VaxStation
  99.      2.2 Processor types
  100.         2.2.1 R2000, R3000 family
  101.         2.2.2 R6000
  102.         2.2.3 R4000 and R5000 family
  103.         2.2.4 R8000
  104.         2.2.5 R10000
  105.  
  106.   3. Linux distributions.
  107.  
  108.      3.1 RedHat
  109.      3.2 Debian
  110.  
  111.   4. Linux/MIPS net resources.
  112.  
  113.      4.1 Anonymous FTP servers.
  114.      4.2 Anonymous CVS servers.
  115.      4.3 Web servers.
  116.      4.4 Mailing lists.
  117.  
  118.   5. Installation of Linux/MIPS and common problems.
  119.  
  120.      5.1 NFS booting fails.
  121.      5.2 Self compiled kernels crash when booting.
  122.      5.3 Booting the kernel on the Indy fails with PROM error messages
  123.      5.4 Where can I get the little endian firmware for my SNI?
  124.      5.5 ld dies with signal 6
  125.  
  126.   6. Milo
  127.  
  128.      6.1 Building Milo
  129.      6.2 Pandora
  130.  
  131.   7. Loadable Modules
  132.  
  133.   8. How do I setup a crosscompiler?
  134.  
  135.      8.1 Diskspace requirements
  136.      8.2 Byte order
  137.      8.3 Configuration names
  138.      8.4 Installation of GNU Binutils.
  139.      8.5 Assert.h
  140.      8.6 First installation of egcs
  141.      8.7 float.h
  142.      8.8 Installing the kernel sources
  143.      8.9 Installing GNU libc
  144.      8.10 Building egcs again
  145.      8.11 Should I build the C++, Objective C or F77 compilers?
  146.      8.12 GDB
  147.  
  148.   9. Related Literature
  149.  
  150.      9.1 See MIPS Run
  151.      9.2 The MIPS Programmer's Handbook
  152.      9.3 Computer Architecture - A Quantitative Approach
  153.  
  154.   10. Linux/MIPS news
  155.  
  156.  
  157.  
  158.   ______________________________________________________________________
  159.  
  160.   1.  What is Linux/MIPS?
  161.  
  162.   Linux/MIPS is a port of the widespread UNIX clone Linux to the MIPS
  163.   architecture.  Linux/MIPS is running on a large number of technically
  164.   very different systems ranging from little embedded systems and
  165.   servers to large desktop machines and servers that, at least at the
  166.   time when they were introduced into the market, were the best of their
  167.   class.
  168.  
  169.  
  170.   Linux/MIPS advantages over other operating systems at this time are
  171.  
  172.   ╖  The entire Linux system consists only of Free Software.
  173.  
  174.   ╖  Excellent Price/Performance ratio.
  175.  
  176.   ╖  Availability of large amounts of software of which a large part
  177.      again is Free Software.
  178.  
  179.   ╖  Binary compatibility across a growing number of platforms.
  180.  
  181.   ╖  Small footprint making Linux/MIPS suitable for many embedded
  182.      systems.
  183.  
  184.   In short, Linux has been designed and ships with Fahrvergnⁿgen.
  185.   However as usual your mileage may vary and you should examine Linux's
  186.   suitability for your purpose which purpose this document tries to
  187.   serve.
  188.  
  189.  
  190.  
  191.   2.  What hardware does Linux/MIPS support?
  192.  
  193.   2.1.  Hardware platforms
  194.  
  195.  
  196.   Many machines are available with a number of different CPU options of
  197.   which not all are currently supported.  Please check section
  198.   ``Processor Types'' to make sure your CPU type is supported.  This is
  199.   a listing of machines that are running Linux/MIPS, systems to which
  200.   Linux/MIPS could be ported or systems that people have an interest in
  201.   running Linux/MIPS.
  202.  
  203.  
  204.   2.1.1.  Acer PICA
  205.  
  206.   The Acer PICA is derived from the Mips Magnum 4000 design.  It has a
  207.   R4400PC CPU running at 133Mhz or optionally 150Mhz plus a 512kb
  208.   (optionally 2mb) second level cache; the Magnum's G364 gfx card was
  209.   replaced with a S3 968 based one.  The system is supported with the
  210.   exception of the X server.
  211.  
  212.  
  213.   2.1.2.  Baget/MIPS series
  214.  
  215.   The Baget series includes several boxes which have R3000 processors:
  216.   Baget 23, Baget 63, and Baget 83.  Baget 23 and 63 have BT23-201 or
  217.   BT23-202 motherboards with R3500A (which is basically a R3000A chip)
  218.   at 25 MHz and R3081E at 50 MHz respectively.  The BT23-201 board has
  219.   VME bus and VIC068, VAC068 chips as system controllers.  The BT23-202
  220.   board has PCI as internal bus and VME as internal.  Support for
  221.   BT23-201 board has been done by Gleb Raiko (rajko@mech.math.msu.su)
  222.   and Vladimir Roganov (vroganov@msiu.ru) with a bit help from Serguei
  223.   Zimin (zimin@msiu.ru).  Support for BT23-202 is under development
  224.   along with Baget 23B which consists of 3 BT23-201 boards with shared
  225.   VME bus.
  226.  
  227.  
  228.   Baget 83 is mentioned here for completeness only. It has only 2mb RAM
  229.   and it's too small to run Linux.  The Baget/MIPS code has been merged
  230.   with the DECstation port; source for both is available at
  231.   <http://decstation.unix-ag.org/>.
  232.  
  233.  
  234.   2.1.3.  Cobalt Qube and Raq
  235.  
  236.   The Cobalt Qube product series are low cost headless server systems
  237.   based on a IDT R5230.  Cobalt has developed its own Linux/MIPS variant
  238.   to fit the special requirements of the Qube as well as possible.
  239.   Basically the Qube kernel has been derived from Linux/MIPS 2.1.56,
  240.   then backported to 2.0.30 for stability's sake, then optimized.
  241.   Cobalt kernels are available from Cobalt's ftp site
  242.   <http://www.cobaltnet.com>.  The Cobalt Qube support has never been
  243.   integrated into the official Linux/MIPS 2.1.x kernels.
  244.  
  245.  
  246.   2.1.4.  Netpower 100
  247.  
  248.   The Netpower 100 is apparently an Acer PICA in disguise.  It should
  249.   therefore be supported but this is untested.  If there is a problem
  250.   then it is probably the machine detection.
  251.  
  252.  
  253.   2.1.5.  Nintendo 64
  254.  
  255.   The Nintendo 64 is R4300 based game console with 4mb RAM.  Its
  256.   graphics chips were developed by Silicon Graphics for Nintendo.  Right
  257.   now this port has pipe dream status and will continue to be in that
  258.   state until Nintendo decides to publish the necessary technical
  259.   information.  The question remains as to whether this is a good idea.
  260.  
  261.  
  262.  
  263.  
  264.  
  265.   2.1.6.  Silicon Graphics Indy
  266.  
  267.  
  268.   The Indy is currently the only (mostly) supported Silicon Graphics
  269.   machine.  The only supported graphics card is the Newport card aka
  270.   ``XL'' graphics.  The Indy is available with a large number of CPU
  271.   options at various clock rates all of which are supported.  There is
  272.   currently no X server available for the Indy; Alan Cox
  273.   (alan@lxorguk.ukuu.org.uk) is working on one.
  274.  
  275.  
  276.   2.1.6.1.  Strange numbers of available memory
  277.  
  278.   On bootup the kernel on the Indy will report available memory with a
  279.   message like
  280.  
  281.      Memory: 27976k/163372k available (1220k kernel code, 2324k data)
  282.  
  283.  
  284.  
  285.   The large difference between the first pair of numbers is caused by a
  286.   128mb area in the Indy's memory address space which mirrors up to the
  287.   first 128mb of memory.  The difference between the two numbers will
  288.   always be about 128mb and does not indicate a problem of any kind.
  289.  
  290.  
  291.   2.1.6.2.  Indy PROM related problems
  292.  
  293.  
  294.   Several people have reported these problems with their machines after
  295.   upgrading them typically from surplus parts.  There are several PROM
  296.   versions for the Indy available.  Machines with old PROM versions
  297.   which have been upgraded to newer CPU variants like a R4600SC or
  298.   R5000SC module can crash during the self test with an error message
  299.   like
  300.  
  301.      Exception: <vector=Normal>
  302.      Status register: 0x30004803<CU1,CU0,IM7,IM4,IPL=???,MODE=KERNEL,EXL,IE>
  303.      Cause register: 0x4000<CE=0,IP7,EXC=INT>
  304.      Exception PC: 0xbfc0b598
  305.      Interrupt exception
  306.      CPU Parity Error Interrupt
  307.      Local I/O interrupt register 1: 0x80 <VR/GIO2>
  308.      CPU parity error register: 0x80b<B0,B1,B3,SYSAD_PAR>
  309.      CPU parity error: address: 0x1fc0b598
  310.      NESTED EXCEPTION #1 at EPC: 9fc3df00; first exception at PC: bfc0b598
  311.  
  312.  
  313.  
  314.   In that case you'll have to upgrade your machine's PROMs to a newer
  315.   version or go back to an older CPU version.  Usually R4000SC or
  316.   R4400SC modules should work in that case.  Just to be clear, this is a
  317.   problem which is unrelated to Linux.  It's only mentioned here because
  318.   several Linux users have asked about it.
  319.  
  320.  
  321.  
  322.   2.1.6.3.  ELF support in old PROM versions
  323.  
  324.   Old PROM versions don't know about the ELF binary format which the
  325.   Linux kernel uses, that is can't boot Linux directly.  The preferable
  326.   solution for this is of course a PROM upgrade.  Alternatively you can
  327.   use Sash of IRIX 5 or newer to boot the kernel.  Sash knows how to
  328.   load ELF binaries and doesn't care if it's an IRIX or Linux kernel.
  329.   Simply type ``Sash'' to the prom monitor.  You should get another
  330.   shell prompt, this time from Sash.  Now launch Linux as usual.
  331.   Sash can read EFS or XFS filesystems or read the kernel from bootp /
  332.   tftp.  That means if you intend to use Sash for booting the kernel
  333.   from local disk you'll still have to have a minimal IRIX installation
  334.   on your system.
  335.  
  336.  
  337.   2.1.6.4.  Why is so much memory reserved on my Indy?
  338.  
  339.   On bootup the `Memory: ...' message on an Indy says that there is
  340.   128mb of RAM reserved.  That is ok; just like the PC architecture has
  341.   a gap in its memory address space between 640kb and 1024kb, the Indy
  342.   has a 128mb-sized area in its memory map where the first 128mb of its
  343.   memory is mirrored.  Linux knows about it and just ignores that
  344.   memory, thus this message.
  345.  
  346.  
  347.  
  348.   2.1.7.  Silicon Graphics Challenge S
  349.  
  350.   This machine is very similar to the Indy; the difference is that it
  351.   doesn't have a keyboard and a GFX card but has an additional SCSI
  352.   WD33C95 based adapter.  This WD33C95 hostadapter is currently not
  353.   supported.
  354.  
  355.  
  356.   2.1.8.  Silicon Graphics Indigo
  357.  
  358.   This machine is only being mentioned here because occasionally people
  359.   have confused it with Indys.  The Indigo series is a different
  360.   architecture however and therefore yet unsupported.  Andrew R. Baker
  361.   (andrewb@uab.edu) announced a university project to port Linux to the
  362.   Indigo on January 2, 1999.
  363.  
  364.  
  365.   2.1.9.  Serial console on SGI machines
  366.  
  367.   Make sure the kernel you're using includes the appropriate driver for
  368.   a serial interface and serial console.  Set the console ARC
  369.   environment variable to either the value d1 or d2 for Indy and
  370.   Challenge S depending on which serial interface you're going to use as
  371.   console.
  372.  
  373.  
  374.   If you have the problem that all kernel messages appear on the serial
  375.   console on bootup but everything is missing from the point when init
  376.   starts, then you probably have the wrong setup for your /dev/console.
  377.   You can find more information about this in the Linux kernel source
  378.   documentation; it's in /usr/src/linux/Documentation/serial-console.txt
  379.   if you have the kernel source installed.
  380.  
  381.  
  382.   2.1.10.  Motorola 68k based machines like the Iris 3000
  383.  
  384.   These are very old machines, probably more than ten years old by now.
  385.   As these machines are not based on MIPS processors this document is
  386.   the wrong place to search for information.  However, in order to make
  387.   things easy, these machines are currently not supported.
  388.  
  389.  
  390.   2.1.11.  SGI VisPC
  391.  
  392.   This is actually an x86 based system, therefore not covered by this
  393.   FAQ.  But to make your search for answers simple, here it is.  Ken
  394.   Klingman (kck@mailbox.esd.sgi.com) posted on January 17, 1999 to SGI's
  395.   Linux mailing list:
  396.  
  397.      We are working on it.  We're actually close to getting
  398.      the base level system support into the 2.2 release.
  399.      Software-only X and OpenGL should follow relatively
  400.      shortly, but hardware-accelerated OpenGL is still
  401.      some time off.  See www.precisioninsight.com for
  402.      news about hardware-accelerated OpenGL.
  403.  
  404.  
  405.  
  406.   For more information see the Documentation/ of Linux kernel versions
  407.   from 2.2.0 and newer.  There is additional information available on
  408.   the web on <http://www.linux.sgi.com/intel/>.  Note that the SGI/MIPS
  409.   and SGI/Intel people are working independently of each other, there¡
  410.   fore the sources in the anonymous CVS on linus.linux.sgi.com may or
  411.   may not work for Intel machines; we don't test this.
  412.  
  413.  
  414.   2.1.12.  Other Silicon Graphics machines
  415.  
  416.   At this time no other Silicon Graphics machine is supported.  This
  417.   also applies to the very old Motorola 68k based systems.
  418.  
  419.  
  420.   2.1.13.  Sony Playstation
  421.  
  422.   The Sony Playstation is based on an R3000 derivative and uses a set of
  423.   graphics chips developed by Sony themselves.  While the machine in
  424.   theory would be capable of running Linux, a port is difficult, since
  425.   Sony so far hasn't provided the necessary technical information.  This
  426.   still leaves the question of whether the port would be worthwhile.  So
  427.   in short, nothing has happend yet even though many people have shown
  428.   their interest in trying Linux on a Playstation so far.
  429.  
  430.  
  431.   2.1.14.  SNI RM200C
  432.  
  433.   In contrast to the RM200 (see below) this machine has EISA and PCI
  434.   slots.  The RM200 is supported with the exception of the availability
  435.   of the onboard NCR53c810A SCSI controller.
  436.  
  437.  
  438.   2.1.15.  SNI RM200
  439.  
  440.   If your machine has both EISA and PCI slots, then it is an RM200C;
  441.   please see above.  Due to the slight architectural differences of the
  442.   RM200 and the RM200C this machine isn't currently supported in the
  443.   official sources.  Michael Engel (engel@numerik.math.uni-siegen.de)
  444.   has managed to get his RM200 working partially but the patches haven't
  445.   yet been included in the official Linux/MIPS sources.
  446.  
  447.  
  448.   2.1.16.  SNI RM300C
  449.  
  450.   The RM300 is technically very similar to the RM200C.  It should be
  451.   supported by the current Linux kernel, but we haven't yet received any
  452.   reports.
  453.  
  454.  
  455.   2.1.17.  SNI RM400
  456.  
  457.   The RM400 isn't supported.
  458.  
  459.  
  460.  
  461.  
  462.  
  463.   2.1.18.  Algorithmics P4032
  464.  
  465.   The Algorithmics P4032 port is at the time of this writing still
  466.   running Linux 2.1.36.
  467.  
  468.  
  469.   2.1.19.  Algorithmics P5064
  470.  
  471.   The P5064 is basically an R5000-based 64bit variant of the P4032.
  472.   It's not yet supported but a Linux port will be quite easy.
  473.  
  474.  
  475.   2.1.20.  DECstation series
  476.  
  477.   During the late 80's and the early 90's Digital (now Compaq) built
  478.   MIPS based Workstations named DECstation resp. DECsystem. Other x86
  479.   and Alpha based machines were sold under the name DECstation, but
  480.   these are obviously not subject of this FAQ. Support for DECstations
  481.   is still under development, started by Paul M. Antoine. These days
  482.   most of the work is done by Harald Koerfgen
  483.   (Harald.Koerfgen@home.ivm.de) and others. On the Internet, DECstation-
  484.   related information can be found at <http://decstation.unix-ag.org/>.
  485.  
  486.   The DECstation family ranges from the DECstation 2100 with an
  487.   R2000/R2010 chipset at 12 Mhz to the DECstation 5000/260 with a 60 MHz
  488.   R4400SC.
  489.  
  490.   The following DECstation models are actively supported:
  491.  
  492.   ╖  2100, codename PMAX
  493.  
  494.   ╖  5000/xx (Personal DECstation), codename MAXine
  495.  
  496.   ╖  5000/1xx, codename 3MIN
  497.  
  498.   ╖  5000/2x0, codename 3MAX+
  499.  
  500.   ╖  5900/2x0 (identical to the 3MAX+).
  501.  
  502.  
  503.   These DECstation models are orphaned because nobody is working on
  504.   them, but support for these should be relatively easy to achieve.
  505.  
  506.   ╖  3100, identical to the 2100 except the R2000A/R2010A @ 16 MHz
  507.  
  508.   ╖  5100, codename MIPSMATE, almost identical to the 2100 but with an
  509.      R3000/R3010 chipset.
  510.  
  511.   ╖  5000/200, codename 3MAX
  512.  
  513.   The other members of the DECstation family, besides the x86 based
  514.   ones, should be considered as VAXen with the CPU replaced by a MIPS
  515.   CPU.  There is absolutely no information available about these
  516.   machines and support for them is unlikely to happen ever unless the
  517.   VAXLinux port comes to a new life. These are:
  518.  
  519.   ╖  5400, codename MIPSFAIR
  520.  
  521.   ╖  5500, codename MIPSFAIR2
  522.  
  523.   ╖  5800, codename ISIS
  524.  
  525.  
  526.   The R2000/R3000 support in the Linux/MIPS kernel is a merge of the
  527.   DECstation and Baget/MIPS code and isn't yet integrated into the
  528.   official Linux/MIPS source tree.
  529.   2.1.21.  Mips Magnum 4000 / Olivetti M700-10
  530.  
  531.   These two machines are almost completely identical.  Back during the
  532.   ACE initiative Olivetti licensed the Jazz design and marketed the
  533.   machine with Windows NT as OS.  MIPS Computer Systems, Inc. itself
  534.   bought the Jazz design and marketed it as the MIPS Magnum 4000 series
  535.   of machines.  Magnum 4000 systems were marketed with Windows NT and
  536.   RISC/os as operating systems.
  537.  
  538.  
  539.   The firmware on the machine depended on the operating system which was
  540.   installed.  Linux/MIPS supports only the little endian firmware on
  541.   these two types of machines.  Since the M700-10 was only marketed as
  542.   an NT machine all M700-10 machines have this firmware installed.  The
  543.   MIPS Magnum case is somewhat more complex.  If your machine has been
  544.   configured big endian for RISC/os then you need to reload the little
  545.   endian firmware.  This firmware was originally included on a floppy
  546.   with the delivery of every Magnum.  If you don't have the floppy
  547.   anymore you can download it via anonymous ftp from
  548.   <ftp://ftp.fnet.fr>.
  549.  
  550.  
  551.   It is possible to reconfigure the M700 for headless operation by
  552.   setting the firmware environment variables ConsoleIn and ConsoleOut to
  553.   multi()serial(0)term().  Also try the command listdev which will show
  554.   the available ARC devices.
  555.  
  556.   In some cases, like where the G364 graphics card is missing but the
  557.   console is still configured to use normal graphics it will be
  558.   necessary to set the configuration jumper JP2 on the board.  After the
  559.   next reset the machine will reboot with the console on COM2.
  560.  
  561.  
  562.   2.1.22.  MIPS Magnum 4000SC
  563.  
  564.   The Mips Magnum 4000SC is the same as a Magnum 4000 (see above) with
  565.   the exception that it uses an R4000SC CPU.
  566.  
  567.  
  568.   2.1.23.  VaxStation
  569.  
  570.   As the name already implies this machine is a member of Digital
  571.   Equipment's VAX family.  It's mentioned here because people often
  572.   confuse it with Digital's MIPS based DECstation family due to the
  573.   similar type numbers.  These two families of architectures share
  574.   little technical similarities.  Unfortunately the VaxStation, like the
  575.   entire VAX family, is currently unsupported.
  576.  
  577.  
  578.   2.2.
  579.  
  580.  
  581.   Processor types
  582.  
  583.   2.2.1.  R2000, R3000 family
  584.  
  585.   The R2000 is the original MIPS processor.  It's a 32 bit processor
  586.   which was clocked at 8MHz back in '85 when the first MIPS processors
  587.   came to the market.  Later versions were clocked faster:  for
  588.   instance, the R3000 is a 100% compatible redesign of the R2000, just
  589.   clocked faster.  Because of their high compatibility, where this
  590.   document mentions the R3000, in most cases the same facts also apply
  591.   to the R2000.
  592.  
  593.   The R3000A is basically an R2000 plus an R3010 FPU and 64k cache
  594.   running at up to 40Mhz and integrated into the same chip.  Support for
  595.   the R3000 processor is currently in the works by various people.
  596.   Harald Koerfgen (Harald.Koerfgen@home.ivm.de) and Gleb O. Raiko
  597.   (raiko@niisi.msk.ru) have both independently worked on patches which
  598.   haven't yet been integrated into the official Linux/MIPS sources.
  599.  
  600.  
  601.   2.2.2.  R6000
  602.  
  603.   Sometimes people confuse the R6000, a MIPS processor, with RS6000, a
  604.   series of workstations made by IBM.  So if you're reading this in hope
  605.   of finding out more about Linux on IBM machines you're reading the
  606.   wrong document.
  607.  
  608.   The R6000 is currently not supported.  It is a 32-bit MIPS ISA 2
  609.   processor and a pretty interesting and weird piece of silicon.  It was
  610.   developed and produced by a company named BIT Technology.  Later NEC
  611.   took over the semiconductor production.  It was built in ECL
  612.   technology, the same technology that was and still is being used to
  613.   build extremely fast chips like those used in some Cray computers.
  614.   The processor had its TLB implemented as part of the last couple of
  615.   lines of the external primary cache, a technology called TLB slice.
  616.   That means its MMU is substantially different from those of the R3000
  617.   or R4000 series, which is also one of the reasons why the processor
  618.   isn't supported.
  619.  
  620.   2.2.3.  R4000 and R5000 family
  621.  
  622.   Linux supports many of the members of the R4000 family.  Currently
  623.   these are R4000PC, R4400PC, R4300, R4600, R4700, R5000, R5230, R5260.
  624.   Many others are probably working as well.
  625.  
  626.   Not supported are R4000MC and R4400MC CPUs (that is multiprocessor
  627.   systems) as well as R5000 systems with a CPU controlled second level
  628.   cache.  This means where the cache is controlled by the R5000 itself
  629.   in contrast to some external external cache controller.  The
  630.   difference is important because, unlike other systems, especially PCs,
  631.   on MIPS the cache is architecturally visible and needs to be
  632.   controlled by software.
  633.  
  634.   Special credit goes to Ulf Carlsson (grim@zigzegv.ml.org) who provided
  635.   the CPU module for debugging the R4000SC / R4400SC support.
  636.  
  637.   2.2.4.  R8000
  638.  
  639.   The R8000 is currently unsupported partly because this processor is
  640.   relatively rare and has only been used in a few SGI machines, partly
  641.   because the Linux/MIPS developers don't have such a machine.
  642.  
  643.   The R8000 is a pretty interesting piece of silicon.  Unlike the other
  644.   members of the MIPS family it is a set of seven chips.  Its cache and
  645.   TLB architecture is pretty different from the other members of the
  646.   MIPS family.  It was born as a hack to get the floating point crown
  647.   back to Silicon Graphics before the R10000 is finished.
  648.  
  649.   2.2.5.  R10000
  650.  
  651.   The R10000 is currently unsupported because the Linux/MIPS developers
  652.   don't have an R10000 machine.
  653.  
  654.  
  655.   3.  Linux distributions.
  656.  
  657.  
  658.  
  659.  
  660.  
  661.   3.1.  RedHat
  662.  
  663.   For MIPSeb, there's Rough Cuts Linux, previously known as Hard Hat
  664.   Linux, which is most of Red Hat Linux 5.1 ported for MIPSeb.  You can
  665.   get this at <ftp://ftp.linux.sgi.com/pub/hardhat>.
  666.  
  667.   It is also bundled along with M68k, UltraSparc and PowerPC in a
  668.   package called "Rough Cuts" pressed by Red Hat, and available wherever
  669.   Red Hat products are sold.  This is a very convenient way to get it
  670.   without having to download 280MB.  You can order Rough Cuts directly
  671.   from Red Hat at <http://www.redhat.com/product.phtml/RC1000>.
  672.  
  673.   As well, there's a distribution based on Red Hat 5.2 that's targetting
  674.   the Cobalt Qubes; those binaries will work perfectly on other MIPSel
  675.   architectures available at <ftp://intel.cleveland.lug.net/pub/Mipsel>.
  676.  
  677.  
  678.   3.2.  Debian
  679.  
  680.   A Debian port is underway.  Current efforts are being bootstrapped
  681.   using SGI/Linux as a base, and dpkg compiles natively with few
  682.   changes.  In addition to the SGI version, some interest has been shown
  683.   in little endian platforms.  Keep an eye on the Debian-MIPS Port page,
  684.   <http://www.debian.org/ports/mips/> for developments.
  685.  
  686.  
  687.   4.  Linux/MIPS net resources.
  688.  
  689.  
  690.   4.1.  Anonymous FTP servers.
  691.  
  692.   The two primary anonymous FTP servers for Linux/MIPS are
  693.  
  694.      ftp.linux.sgi.com
  695.         This server should satisfy almost all your Linux/MIPS related
  696.         ftp desires.  Really.
  697.  
  698.      ftp.fnet.fr
  699.         This server is currently pretty outdated; it's included here
  700.         mostly for completeness and for people with interest in
  701.         prehistoric software.
  702.  
  703.   On all these ftp servers there is a list of mirror sites you may want
  704.   to use for faster access.
  705.  
  706.  
  707.   4.2.  Anonymous CVS servers.
  708.  
  709.   For those who always want to stay on the bleeding edge and want to
  710.   avoid having to download patch files or full tarballs we also have an
  711.   anonymous CVS server.  Using CVS you can checkout the Linux/MIPS
  712.   source tree with the following commands:
  713.  
  714.  
  715.      cvs -d :pserver:cvs@linus.linux.sgi.com:/cvs login
  716.      (Only needed the first time you use anonymous CVS, the password is "cvs")
  717.      cvs -d :pserver:cvs@linus.linux.sgi.com:/cvs co <repository>
  718.  
  719.  
  720.  
  721.   where you insert linux, libc, or gdb for <repository>.
  722.  
  723.   The other important CVS archive of the Linux community is
  724.   vger.rutgers.edu where a lot of code is being collected before being
  725.   sent to Linus for distribution.  Although vger itself no longer offers
  726.   anonymous access, there are mirror sites which do provide anonymous
  727.   access.  For details how to access them see
  728.   <http://cvs.on.openprojects.net/>.  The modules which are of interest
  729.   are ``linux'', ``modutils'', ``pciutils'', ``netutils''.
  730.  
  731.  
  732.   4.3.  Web servers.
  733.  
  734.   The two primary anonymous web servers for Linux/MIPS are
  735.  
  736.      www.linux.sgi.com
  737.         This server covers most of Linux/MIPS; it's somewhat SGI centric
  738.         but since Linux/MIPS tries to be the same on every platform most
  739.         of its information is of interest to all users.
  740.  
  741.      lena.fnet.fr
  742.         This server is currently pretty outdated; it's included here
  743.         mostly for completeness.
  744.  
  745.   All these servers have mirrors scattered all over the world; you may
  746.   want to use one for best performance.
  747.  
  748.  
  749.   4.4.  Mailing lists.
  750.  
  751.   There are three Linux/MIPS oriented mailing lists:
  752.  
  753.      linux-mips@fnet.fr
  754.         This mailing list is used for most non-SGI related communication
  755.         of all kinds.  Subscription is handled by a human; send your
  756.         subscription requests to linux-mips-mips@fnet.fr.  You can
  757.         unsubscribe from this mailing list by sending unsubscribe <your-
  758.         email-address> to the same address.
  759.  
  760.  
  761.      linux@engr.sgi.com
  762.         This mailing list currently has the most traffic.  It's somewhat
  763.         SGI-centric but is nevertheless of interest especially to
  764.         developers as a good number of SGI engineers are subscribed to
  765.         this list.  Subscription to this list is handled via Majordomo
  766.         (majordomo@engr.sgi.com); just send an email with the words
  767.         subscribe linux-mips.  In order to unsubscribe send unsubscribe
  768.         linux-mips.  Note that you have to be subscribed if you want to
  769.         post; the growth of spam forced us into that policy.
  770.  
  771.  
  772.      linux-mips@vger.rutgers.edu
  773.         This mailing list has only very low traffic as most people tend
  774.         to use one of the above mailing lists.  Subscription is handled
  775.         via Majordomo (majordomo@vger.rutgers.edu); just send an email
  776.         with the words subscribe linux-mips.  In order to unsubscribe
  777.         send unsubscribe linux-mips.
  778.  
  779.  
  780.   5.  Installation of Linux/MIPS and common problems.
  781.  
  782.  
  783.  
  784.   5.1.  NFS booting fails.
  785.  
  786.   Usually the reason for this is that people have unpacked the tar
  787.   archive under IRIX, not Linux.  Since the representation of device
  788.   files over NFS is not standardized between various Unices, this fails.
  789.   The symptom is that the system dies with the error message ``Warning:
  790.   unable to open an initial console.'' right after mounting the NFS
  791.   filesystem.
  792.  
  793.   For now the workaround is to use a Linux system (doesn't need to be
  794.   MIPS) to unpack the installation archive onto the NFS server.  The NFS
  795.   server itself may be any type of UNIX.
  796.  
  797.  
  798.  
  799.   5.2.  Self compiled kernels crash when booting.
  800.  
  801.   When I build my own kernel, it crashes.  On an Indy the crash message
  802.   looks like the following; the same problem hits other machines as well
  803.   but may look completely different.
  804.  
  805.  
  806.      Exception: <vector=UTLB Miss>
  807.      Status register: 0x300004803<CU1,CU0,IM4,IPL=???,MODE=KERNEL,EXL,IE>
  808.      Cause register: 0x8008<CE=0,IP8,EXC=RMISS>
  809.      Exception PC: 0x881385cc, Exception RA: 0x88002614
  810.      exception, bad address: 0x47c4
  811.      Local I/O interrupt register 1: 0x80 <VR/GIO2>
  812.      Saved user regs in hex (&gpda 0xa8740e48, &_regs 0xa8741048):
  813.        arg: 7 8bfff938 8bfffc4d 880025dc
  814.        tmp: 8818c14c 8818c14c 10 881510c4 14 8bfad9e0 0 48
  815.        sve: 8bfdf3e8 8bfffc40 8bfb2720 8bfff938 a8747420 9fc56394 0 9fc56394
  816.        t8 48 t9 8bfffee66 at 1 v0 0 v1 8bfff890 k1 bad11bad
  817.        gp 881dfd90 fp 9fc4be88 sp 8bfff8b8 ra 88002614
  818.  
  819.      PANIC: Unexpected exception
  820.  
  821.  
  822.  
  823.  
  824.   This problem is caused by a still unfixed bug in Binutils newer than
  825.   version 2.7.  As a workaround, change the following line in
  826.   arch/mips/Makefile from:
  827.  
  828.  
  829.      LINKFLAGS       = -static -N
  830.  
  831.  
  832.  
  833.  
  834.   to:
  835.  
  836.  
  837.      LINKFLAGS       = -static
  838.  
  839.  
  840.  
  841.  
  842.  
  843.   5.3.  Booting the kernel on the Indy fails with PROM error messages
  844.  
  845.  
  846.      >> boot bootp()/vmlinux
  847.      73264+592+11520+331680+27848d+3628+5792 entry: 0x8df9a960
  848.      Setting $netaddres to 192.168.1.5 (from server deadmoon)
  849.      Obtaining /vmlinux from server deadmoon
  850.  
  851.      Cannot load bootp()/vmlinux
  852.      Illegal f_magic number 0x7f45, expected MIPSELMAGIC or MIPSEBMAGIC.
  853.  
  854.  
  855.  
  856.  
  857.   This problem only happens for Indys with very old PROM versions which
  858.   cannot handle the ELF binary format which Linux uses.  A solution for
  859.   this problem is in the works.
  860.  
  861.  
  862.   5.4.  Where can I get the little endian firmware for my SNI?
  863.  
  864.  
  865.   SNI's system can be operated in both big and little endian modes.  At
  866.   this time Linux/MIPS only supports the little endian firmware.  This
  867.   is somewhat unlucky since SNI hasn't shipped that firmware for quite
  868.   some time, since they dropped NT.
  869.  
  870.   When running in big endian mode the firmware looks similar to an SGI
  871.   Indy which is already supported, therefore fixing the SNI support will
  872.   be relativly easy.  Interested hackers should contact Ralf BΣchle
  873.   (ralf@gnu.org).
  874.  
  875.  
  876.   5.5.  ld dies with signal 6
  877.  
  878.  
  879.      collect2: ld terminated with signal 6 [Aborted]
  880.  
  881.  
  882.  
  883.   This is a known bug in older binutils versions.  You will have to
  884.   upgrade to binutils 2.8.1 plus very current patches.
  885.  
  886.  
  887.   6.  Milo
  888.  
  889.   Milo is the boot loader used to boot the little endian MIPS systems
  890.   with ARC firmware, currently the Jazz family and the SNI RM 200.
  891.   While Milo uses the same name and has a similar purpose to the Alpha
  892.   version of Milo, these two Milos have nothing else in common.  They
  893.   were developed by different people, don't share any code, and work on
  894.   different hardware platforms.  The fact that both have the same name
  895.   is just a kind of historic ``accident''.
  896.  
  897.   Plans are to remove the need for Milo in the near future.
  898.  
  899.  
  900.  
  901.   6.1.  Building Milo
  902.  
  903.   The building procedure of Milo is described in detail in the README
  904.   files in the Milo package.  Since Milo has some dependencies to kernel
  905.   header files which have changed over time Milo often cannot be built
  906.   easily; however the Milo distribution includes binaries for both Milo
  907.   and Pandora.
  908.  
  909.  
  910.   6.2.  Pandora
  911.  
  912.   Pandora is a simple debugger.  It has been primarily developed in
  913.   order to analyze undocumented systems.  Pandora includes a
  914.   dissassembler, memory dump functions and more.  If you only want to
  915.   use Linux there is no need to install Pandora.  It's small though.
  916.  
  917.  
  918.   7.  Loadable Modules
  919.  
  920.   Using modules on Linux/MIPS is quite easy; it should work as expected
  921.   for people who have used it on other Linux systems.  If you want to
  922.   run a module-based system then you should have at least kernel version
  923.   980919 and modutils newer than version 2.1.121 installed.  Older
  924.   versions won't work.
  925.   8.  How do I setup a crosscompiler?
  926.  
  927.   First of all go and download the following source packages:
  928.  
  929.   ╖  binutils-2.8.1.tar.gz
  930.  
  931.   ╖  egcs-1.0.2.tar.gz
  932.  
  933.   ╖  glibc-2.0.6.tar.gz
  934.  
  935.   ╖  glibc-crypt-2.0.6.tar.gz
  936.  
  937.   ╖  glibc-localedata-2.0.6.tar.gz
  938.  
  939.   ╖  glibc-linuxthreads-2.0.6.tar.gz
  940.  
  941.      These are the currently recommended versions.  Older versions may
  942.      or may not be working.  If you're trying to use older versions
  943.      please don't send bug reports; we don't care.  When installing
  944.      please install things in the order binutils, egcs, then glibc.
  945.      Unless you have older versions already installed, changing the
  946.      order will fail.  The installation description below mentions a
  947.      number of patches which you can get from the respective SRPM
  948.      packages on ftp.linux.sgi.com.  However since these SRPM packages
  949.      are intended to be compiled natively it's not possible to just
  950.      rebuild them.
  951.  
  952.  
  953.   8.1.  Diskspace requirements
  954.  
  955.   For the installation you'll have to choose a directory for
  956.   installation.  I'll refer to that directory below with <prefix>.  To
  957.   avoid a certain problem it's best to use the same value for <prefix>
  958.   as your native gcc.  For example if your gcc is installed in
  959.   /usr/bin/gcc then choose /usr for <prefix>.  You must use the same
  960.   <prefix> value for all the packages that you're going to install.
  961.  
  962.   During compilation you'll need about 31mb diskspace for binutils; for
  963.   installation you'll need 7mb diskspace for on <prefix>'s partition.
  964.   Building egcs requires 71mb and installation 14mb.  GNU libc requires
  965.   149mb diskspace during compilation and 33mb for installation.  Note
  966.   these numbers are just a guideline and may differ significantly for
  967.   different processor and operating system architectures.
  968.  
  969.  
  970.   8.2.  Byte order
  971.  
  972.   One of the special features of the MIPS architecture is that all
  973.   processors except the R8000 can be configured to run either in big or
  974.   in little endian mode.  Byte order means the way the processor stores
  975.   multibyte numbers in memory.  Big endian machines store the byte with
  976.   the highest value digits at the lowest address while little endian
  977.   machines store it at the highest address.  Think of it as writing
  978.   multi-digit numbers from left to right or vice versa.
  979.  
  980.   In order to setup your crosscompiler correctly you have to know the
  981.   byte order of the crosscompiler target.  If you don't already know,
  982.   check the section ``Hardware Platforms'' for your machine's byteorder.
  983.  
  984.  
  985.   8.3.  Configuration names
  986.  
  987.   Many of the packages based on autoconf support many different
  988.   architectures and operating systems.  In order to differentiate
  989.   between these many configurations, names are constructed with
  990.   <cpu>-<company>-<os> or even <cpu>-<company>-<kernel>-<os>.  Expressed
  991.   this way the configuration names of Linux/MIPS are mips-unknown-linux-
  992.   gnu for big endian targets or mipsel-unknown-linux-gnu for little
  993.   endian targets.  These names are a bit long and are allowed to be
  994.   abbreviated to mips-linux or mipsel-linux.  You must use the same
  995.   configuration name for all packages that comprise your
  996.   crosscompilation environment.  Also, while other names like mips-sni-
  997.   linux or mipsel-sni-linux are legal configuration names, use mips-
  998.   linux or mipsel-linux instead; these are the configuration names known
  999.   to other packages like the Linux kernel sources and they'd otherwise
  1000.   have to be changed for crosscompilation.
  1001.  
  1002.   I'll refer to the target configuration name below with <target>.
  1003.  
  1004.  
  1005.   8.4.  Installation of GNU Binutils.
  1006.  
  1007.   This is the first and simplest part - at least as long as you're
  1008.   trying to install on any halfway-sane UNIX flavour.  Just cd into a
  1009.   directory with enough free space and do the following:
  1010.  
  1011.      gzip -cd binutils-<version>.tar.gz | tar xf -
  1012.      cd binutils-<version>
  1013.      patch -p1 < ../binutils-<version>-mips.patch
  1014.      ./configure --prefix=<prefix> --target=<target>
  1015.      make CFLAGS=-O2
  1016.      make install
  1017.  
  1018.  
  1019.  
  1020.   This usually works very easily.  On certain machines using GCC 2.7.x
  1021.   as compiler is known to dump core.  This is a known bug in GCC and can
  1022.   be fixed by upgrading to GCC 2.8.1 or egcs.
  1023.  
  1024.  
  1025.   8.5.  Assert.h
  1026.  
  1027.   Some people have an old assert.h headerfile installed, probably a
  1028.   leftover from an old crosscompiler installation.  This file may cause
  1029.   autoconf scripts to fail silently; it was never necessary and was only
  1030.   installed because of a bug in older GCC versions.  Check to see if the
  1031.   file <prefix>/<target>/include/assert.h exists in your installation.
  1032.   If so, just delete the it: it should never have been installed.
  1033.  
  1034.  
  1035.   8.6.  First installation of egcs
  1036.  
  1037.   Now the not-so-funny part begins:  there is a so-called bootstrap
  1038.   problem.  In our case that means the installation process of egcs
  1039.   needs an already- installed glibc, but we cannot compile glibc because
  1040.   we don't have a working crosscompiler yet.  Luckily you'll only have
  1041.   to go through this once when you install a crosscompiler for the first
  1042.   time.  Later when you already have glibc installed things will be much
  1043.   smoother.  So now do:
  1044.  
  1045.      gzip -cd egcs-<version>.tar.gz | tar xf -
  1046.      cd egcs-<version>
  1047.      for i in egcs-1.0.2-libio.patch egcs-1.0.2-hjl.patch \
  1048.            egcs-1.0.2-rth1.patch egcs-1.0.2-rth2.patch egcs-1.0.2-rth3.patch \
  1049.            egcs-1.0.2-rth4.patch egcs-1.0.2-hjl2.patch egcs-1.0.2-jim.patch \
  1050.            egcs-1.0.2-haifa.patch egcs-1.0.1-objcbackend.patch \
  1051.            egcs-1.0.2-mips.patch; do patch -p1 -d < ../$i; done
  1052.      ./configure --prefix=<prefix> --with-newlib --target=<target>
  1053.      cd gcc
  1054.      make LANGUAGES="c"
  1055.  
  1056.  
  1057.   Note that we deliberately don't build gcov, protoize, unprotoize and
  1058.   the libraries.  Gcov doesn't make sense in a crosscompiler environment
  1059.   and protoize and unprotoize might even overwrite your native programs
  1060.   - this is a bug in the gcc makefiles.  Finally we cannot build the
  1061.   libraries because we don't have glibc installed yet.  If everything
  1062.   went successfully, install with:
  1063.  
  1064.      make LANGUAGES="c" install
  1065.  
  1066.  
  1067.  
  1068.  
  1069.  
  1070.   8.7.  float.h
  1071.  
  1072.   Another bootstrap problem is that building GCC requires running
  1073.   programs on the machine for which GCC will generate code, but since a
  1074.   crosscompiler is running on a different type of machine this cannot
  1075.   work.  When building GCC this happens for the header file float.h.
  1076.   Luckily there is a simple solution:  download the header file from one
  1077.   of the Linux/MIPS ftp servers or rip it from one of the native
  1078.   Linux/MIPS binary packages.  Later when recompiling or upgrading egcs
  1079.   usually the already-installed float.h file will do because float.h
  1080.   changes rarely.  Install it with:
  1081.  
  1082.      cp float.h <prefix>/<target/<version>/include/float.h
  1083.  
  1084.  
  1085.  
  1086.   where <version> is the internal version number of the egcs version
  1087.   you're using.  For egcs 1.0.2 for example you would use egcs-2.90.27
  1088.   for <version>.  If not sure - ls is your friend.
  1089.  
  1090.  
  1091.  
  1092.   8.8.  Installing the kernel sources
  1093.  
  1094.   Installing the kernel sources is simple.  Just place them into some
  1095.   directory of your choice and configure them such that some files which
  1096.   are generated by the procedure will be installed.  This works the same
  1097.   as you're used to when configuring the kernel sources for native
  1098.   compilation.  The only problem you may run into is that you may need
  1099.   to install some required GNU programs like bash or have to override
  1100.   the manufacturer-provided versions of programs by placing the GNU
  1101.   versions earlier in the PATH variable.  When configuring you should
  1102.   answer the question ``Are you using a crosscompiler'', that is the
  1103.   option CONFIG_CROSSCOMPILE, with ``yes''.  When you're done with
  1104.   configuring type make clean; make depend; make.  The last make command
  1105.   will generate the header file <linux/version.h> which compiling some
  1106.   programs depends on.  This file is generated right at the beginning of
  1107.   the make command, so if you're not interested in actually building a
  1108.   kernel you may interrupt the compilation after this file has been
  1109.   built.  It may be a good idea, however, to compile the kernel as a
  1110.   test for your newly-built crosscompiler.
  1111.  
  1112.   If you only want the crosscompiler for building the kernel, you're
  1113.   done.  Crosscompiling libc is only required to be able to  compile
  1114.   user applications.
  1115.  
  1116.  
  1117.   8.9.  Installing GNU libc
  1118.  
  1119.   Do:
  1120.  
  1121.  
  1122.  
  1123.      gzip -cd glibc-2.0.6.tar.gz | tar xf -
  1124.      cd glibc-2.0.6
  1125.      gzip -cd glibc-crypt-2.0.6.tar.gz | tar xf -
  1126.      gzip -cd glibc-localedata-2.0.6.tar.gz | tar xf -
  1127.      gzip -cd glibc-linuxthreads-2.0.6.tar.gz | tar xf -
  1128.      patch -p1 < ../glibc-2.0.6-mips.patch
  1129.      mkdir build
  1130.      cd build
  1131.      CC=<target>-gcc BUILD_CC=gcc AR=<target>-ar RANLIB=<target>-ranlib \
  1132.            ../configure --prefix=/usr --host=<target> \
  1133.            --enable-add-ons=crypt,linuxthreads,localedata --enable-profile
  1134.      make
  1135.  
  1136.  
  1137.  
  1138.   You now have a compiled GNU libc which still needs to be installed.
  1139.   Do not just type make install.  That would overwrite your host sys¡
  1140.   tem's files with Linux/MIPS-specific files with disastrous effects.
  1141.   Instead install GNU libc into some other arbitrary directory <somedir>
  1142.   from which we'll move the parts we need for crosscompilation into the
  1143.   actual target directory:
  1144.  
  1145.      make install_root=<somedir> install
  1146.  
  1147.  
  1148.  
  1149.   Now cd into <somedir> and finally install GNU libc manually:
  1150.  
  1151.      cd usr/include
  1152.      find . -print | cpio -pumd <prefix>/<target>/include
  1153.      cd ../../lib
  1154.      find . -print | cpio -pumd <prefix>/<target>/lib
  1155.      cd ../usr/lib
  1156.      find . -print | cpio -pumd <prefix>/<target>/lib
  1157.  
  1158.  
  1159.  
  1160.   GNU libc also contains extensive online documentation.  Your systems
  1161.   might already have a version of this documentation installed, so if
  1162.   you don't want to install the info pages, which will save you a less
  1163.   than a megabyte, or already have them installed, skip the next step:
  1164.  
  1165.      cd ../info
  1166.      gzip -9 *.info*
  1167.      find . -name \*.info\* -print | cpio -pumd <prefix>/info
  1168.  
  1169.  
  1170.  
  1171.   If you're not bootstrapping your installation is now finished.
  1172.  
  1173.  
  1174.   8.10.  Building egcs again
  1175.  
  1176.   The first attempt of building egcs was stopped by lack of a GNU libc.
  1177.   Since we now have libc installed we can rebuild egcs but this time as
  1178.   complete as a crosscompiler installation can be:
  1179.  
  1180.  
  1181.  
  1182.  
  1183.  
  1184.  
  1185.  
  1186.  
  1187.  
  1188.  
  1189.      gzip -cd egcs-<version>.tar.gz | tar xf -
  1190.      cd egcs-<version>
  1191.      for i in egcs-1.0.2-libio.patch egcs-1.0.2-hjl.patch \
  1192.            egcs-1.0.2-rth1.patch egcs-1.0.2-rth2.patch egcs-1.0.2-rth3.patch \
  1193.            egcs-1.0.2-rth4.patch egcs-1.0.2-hjl2.patch egcs-1.0.2-jim.patch \
  1194.            egcs-1.0.2-haifa.patch egcs-1.0.1-objcbackend.patch \
  1195.            egcs-1.0.2-mips.patch; do patch -p1 < ../$i; done
  1196.      ./configure --prefix=<prefix> --target=<target>
  1197.      make LANGUAGES="c c++ objective-c f77"
  1198.  
  1199.  
  1200.  
  1201.   As you can see the procedure is the same as the first time with the
  1202.   exception that we dropped the --with-newlib option.  This option was
  1203.   necessary to avoid the libgcc build breaking due to the lack of libc.
  1204.   Now install with:
  1205.  
  1206.      make LANGUAGES="c c++ objective-c f77" install
  1207.  
  1208.  
  1209.  
  1210.   You're almost finished.  All you have left to do now is to reinstall
  1211.   float.h, which has been overwritten by the last make install command.
  1212.   You'll have to do this every time you reinstall egcs as a crosscom¡
  1213.   piler.  If you think you don't need the Objective C or F77 compilers
  1214.   you can omit them from above commands; each will save you about 3mb.
  1215.   Do not build gcov, protoize or unprotoize.
  1216.  
  1217.  
  1218.   8.11.  Should I build the C++, Objective C or F77 compilers?
  1219.  
  1220.   The answer to this question largely depends on your use of your
  1221.   crosscompiler environment.  If you only intend to rebuild the Linux
  1222.   kernel then you have no need for the full blown setup and can safely
  1223.   omit the Objective C and F77 compilers.  You must, however, build the
  1224.   C++ compiler, because building the libraries included with the egcs
  1225.   distribution requires C++.
  1226.  
  1227.  
  1228.   8.12.  GDB
  1229.  
  1230.   Building GDB as crossdebugger is only of interest to kernel
  1231.   developers; for them GDB may be a life saver.  Such a remote debugging
  1232.   setup always consists of two parts:  the remote debugger GDB running
  1233.   on one machine and the target machine running the Linux/MIPS kernel
  1234.   being debugged.  The machines are typically interconnected with a
  1235.   serial line.  The target machine's kernel needs to be equipped with a
  1236.   ``debugging stub'' which communicates with the GDB host machine using
  1237.   the remote serial protocol.
  1238.  
  1239.  
  1240.   Depending on the target's architecture you may have to implement the
  1241.   debugging stub yourself.  In general you'll only have to write very
  1242.   simple routines for serial.  The task is further simplified by the
  1243.   fact that most machines are using similar serial hardware typically
  1244.   based on the 8250, 16450 or derivatives.
  1245.  
  1246.  
  1247.  
  1248.  
  1249.   9.  Related Literature
  1250.  
  1251.  
  1252.  
  1253.  
  1254.  
  1255.   9.1.  See MIPS Run
  1256.  
  1257.   author Dominic Sweetman, published Morgan Kaufmann, ISBN
  1258.   1-55860-410-3.
  1259.  
  1260.   This is intended as a pretty comprehensive guide to programming MIPS,
  1261.   wherever it's different from programming any other 32-bit CPU.  It's
  1262.   the first time anyone tried to write a readable and comprehensive
  1263.   explanation and account of the wide range of MIPS CPUs available, and
  1264.   should be very helpful for anyone programming MIPS who isn't insulated
  1265.   by someone else's operating system.  And the author is a free-unix
  1266.   enthusiast who subscribes to the Linux/MIPS mailing list!
  1267.  
  1268.   John Hennessey, father of the MIPS architecture, was kind enough to
  1269.   write in the foreword: `` ... this book is the best combination of
  1270.   completeness and readability of any book on the MIPS architecture
  1271.   ...''
  1272.  
  1273.   It includes some context about RISC CPUs, a description of the
  1274.   architecture and instruction set including the "co-processor 0"
  1275.   instructions used for CPU control; sections on caches, exceptions,
  1276.   memory management and floating point.  There's a detailed assembly
  1277.   language guide, some stuff about porting, and some fairly heavy-duty
  1278.   software examples.
  1279.  
  1280.   Available from:
  1281.  
  1282.  
  1283.   ╖  <http://www.algor.co.uk/algor/info/seemipsrun.html> (europe)
  1284.  
  1285.   ╖  <http://www.mkp.com/books_catalog/1-55860-410-3.asp> (US)
  1286.  
  1287.   and from good bookshops anywhere.  It's 512 pages and costs around $50
  1288.   in the US, ú39.95 in the UK.
  1289.  
  1290.   I'd be inclined to list two other books too, both from Morgan Kaufmann
  1291.   and available from www.mkp.com or any good bookshop:
  1292.  
  1293.  
  1294.   9.2.  The MIPS Programmer's Handbook
  1295.  
  1296.   authors Farquhar and Bunce, published by Morgan Kaufmann,
  1297.   ISBN 1-55860-297-6.
  1298.  
  1299.   A readable introduction to the practice of programming MIPS at the low
  1300.   level, by the author of PMON.  Strengths: lots of examples; weakness:
  1301.   leaves out some big pieces of the architecture (such as memory
  1302.   management, floating point and advanced caches) because they didn't
  1303.   feature in the LSI ``embedded'' products this book was meant to
  1304.   partner.
  1305.  
  1306.  
  1307.   9.3.  Computer Architecture - A Quantitative Approach
  1308.  
  1309.   authors Hennessy & Patterson, published Morgan Kaufmann,
  1310.   ISBN 1-58860-329-8.
  1311.  
  1312.   The bible of modern computer architecture and a must-read if you want
  1313.   to understand what makes programs run slow or fast.  Is it about MIPS?
  1314.   Well, it's mostly about something very like MIPS...  Its sole defect
  1315.   is its size and weight - but unlike most big books it's worth every
  1316.   page.
  1317.  
  1318.  
  1319.  
  1320.  
  1321.   10.  Linux/MIPS news
  1322.  
  1323.   Some of this chapter is pretty historic ...
  1324.  
  1325.  
  1326.      04-Dec-98
  1327.         Ariel Faigon announces that SGI has joined Linux International.
  1328.  
  1329.  
  1330.      13-Oct-98
  1331.         Ralf BΣchle fixes the support for R4000SC / R4400SC CPUs.
  1332.  
  1333.  
  1334.      12-Oct-98
  1335.         Vladimir Roganov reports that his R3000 system is now stable
  1336.         enough to compile GDB.
  1337.  
  1338.  
  1339.      03-Oct-98
  1340.         Harald K÷rfgen reports that his DECstation 5000/133 is now
  1341.         running single user.  Congratulations!
  1342.  
  1343.  
  1344.      29-Sep-98
  1345.         Ralf starts rewriting this FAQ to fit with reality.
  1346.  
  1347.  
  1348.      10-Jun-98
  1349.         ftp.linux.sgi.com now offers anonymous CVS access.
  1350.  
  1351.  
  1352.      01-Feb-98
  1353.         First commercial Linux/MIPS based product accounced.
  1354.  
  1355.  
  1356.      26-Jan-98
  1357.         One more timewarp in this list because the maintainer is
  1358.         lazy^H^H^H^H busy coding.  The driver for the NCR53c8xx has been
  1359.         modified and has been successfully tested with several machines,
  1360.         most notably the SNI RM200.  Even better, the initial version
  1361.         seems to be reliable.
  1362.  
  1363.         Already some time ago Thomas Bogend÷rfer implemented the
  1364.         necessary changes to the NCR53C9x driver aka ESP driver, so
  1365.         there is now SCSI support for the builtin hostadapters in the
  1366.         Mips Magnum 4000, Olivetti M700-10 and Acer PICA.
  1367.  
  1368.  
  1369.      28-Nov-97
  1370.         First public release of X11 client binaries.
  1371.  
  1372.  
  1373.      30-Aug-97
  1374.         Duh, time warp in this page once again.  A lot has happend in
  1375.         the meantime and the maintainer of this pages is a lazy person
  1376.         that rather prefers to code and hack than write docs...
  1377.  
  1378.         SGI now has its own Linux/MIPS server reachable as
  1379.         http://www.linux.sgi.com, with lots of SGI specific information
  1380.         and many links.  The server is also reachable under
  1381.         ftp.linux.sgi.com.  In addition to binaries, sources and docs
  1382.         specific to Silicon Graphic machines this server also has all
  1383.         the other Linux/MIPS stuff in stock.  Only available on this
  1384.         server is the developers' cvs archive for download.  Sorry, no
  1385.         anonymous CVS yet.
  1386.  
  1387.         Silicon Graphics has supported some of the Linux key developers'
  1388.         work on Linux/MIPS with hardware.  As a result the work is now
  1389.         advancing more quickly and Ralf is no longer the lone workhorse
  1390.         ...
  1391.  
  1392.         Already available for some time the Indy port is now in the
  1393.         standard kernel source tree.
  1394.  
  1395.         Long missing, but finally there: Thomas Bogendoerfer contributed
  1396.         patches to the NCR53C9x driver for Mips Magnum 4000, Olivetti
  1397.         M700 and Acer PICA.
  1398.  
  1399.         Many more packages of a RedHat port to MIPS are now available
  1400.         for ftp download.  Installing is still more a thing for experts
  1401.         ...  but we're working on it!
  1402.  
  1403.         Eeecmacs lovers will be pleased to hear that this FAQ has been
  1404.         edited by Emacs running on a Linux/MIPS machine.
  1405.  
  1406.  
  1407.      6-May-97
  1408.         David Monro releases version 1.01 of bfsd.  bfsd is a daemon
  1409.         that can be used to boot the machines built by Mips
  1410.         Computersystems, Inc. over a network.
  1411.  
  1412.  
  1413.      10-Jun-96
  1414.         Release of Linux/MIPS kernel 2.0.4.  This release features a
  1415.         partially rewritten signal handler that should match POSIX.1.
  1416.  
  1417.  
  1418.      3-Jun-96
  1419.         First release of shared libraries for Linux/MIPS based on GNU
  1420.         libc snapshot 960619.
  1421.  
  1422.         Release of Linux/MIPS kernel 2.0.1.
  1423.  
  1424.  
  1425.  
  1426.      25-May-96
  1427.         David S. Miller starts working on SGI support at Silicon
  1428.         Graphics.
  1429.  
  1430.  
  1431.  
  1432.      20-May-96
  1433.         Release 1.3.98 of the kernel adds support for the SNI RM200 PCI.
  1434.  
  1435.  
  1436.  
  1437.      27-Mar-96
  1438.         Linux/MIPS works as NFS server.
  1439.  
  1440.         The IDE CD driver now also supports Linux/MIPS.
  1441.  
  1442.  
  1443.      24-Mar-96
  1444.         Added reference to literature available online form SGI to the
  1445.         FAQ.
  1446.  
  1447.  
  1448.  
  1449.      23-Mar-96
  1450.         New chapter in the FAQ about the ARC standard.
  1451.  
  1452.  
  1453.      27-Jan-96
  1454.         Release of Milo 0.26 and a kernel patch to use it.  This release
  1455.         passes parameters to the kernel in a completly different way
  1456.         that makes porting Linux/MIPS to another architecture a lot
  1457.         easier.
  1458.  
  1459.  
  1460.      24-Jan-96
  1461.         Release of crosscompiler binaries based on the FSF's Binutils
  1462.         version 2.6.  This release brings lots of new features and many
  1463.         bugfixes.
  1464.  
  1465.  
  1466.      21-Jan-96
  1467.         Warner Losh started working on a port of Linux/MIPS to
  1468.         Deskstation rPC44.
  1469.  
  1470.  
  1471.      20-Jan-96
  1472.         Linux/MIPS kernel updated to version 1.3.58.
  1473.  
  1474.         Patch gcc-2.7.2-1.diffs.gz has been released.
  1475.  
  1476.         Patch binutils-2.6-1.diffs.gz has been released.  This patch
  1477.         contains lots of bugfixes.  The Linux kernel Makefiles will
  1478.         automatically detect whether Binutils 2.6 or an older version is
  1479.         installed and use the new features resulting in a much smaller
  1480.         kernel executable which is especially useful for bootdisks.
  1481.  
  1482.  
  1483.  
  1484.      15-Jan-96
  1485.         Release of a complete root and /usr filesystem that can be NFS
  1486.         mounted to use a Linux/MIPS system as a diskless client.  A
  1487.         native development kit based on GCC 2.7.2, Binutils 2.6 and GNU
  1488.         libc snapshot 951218 is included as well as many of the standard
  1489.         utilities.
  1490.  
  1491.  
  1492.  
  1493.      25-Dec-95
  1494.         Linux/MIPS boots off an NFS filesystem as a diskless client.
  1495.         This also means that the rest of Linux/MIPS networking is
  1496.         operational now.
  1497.  
  1498.  
  1499.      7-Jan-95
  1500.         Soft-N-Hard GMBH and SNI sign a contract.  SNI will loan an
  1501.         RM200 to Soft-N-Hard for porting Linux/MIPS to it.
  1502.  
  1503.  
  1504.      22-Sep-95
  1505.         The Linux/MIPS FTP archive and mailing list have been moved to
  1506.         fnet.fr.  (There is much more news I currently have no time to
  1507.         document)
  1508.  
  1509.  
  1510.      18-Jul-95
  1511.         New crossdevelopment tools released. GCC-2.6.3-2 and
  1512.         Binutils-2.5.2-2 for Linux/i386 need kernels with ELF support
  1513.         and libc-5.0.9 installed.  The new crossdev tools are required
  1514.         for Linux/MIPS kernels above 1.2.9.  A.out versions of the
  1515.         crossdev tools will follow soon.
  1516.  
  1517.  
  1518.  
  1519.      14-Jul-95
  1520.         We have a working shell!
  1521.  
  1522.  
  1523.      12-Jul-95
  1524.         Patches 2.6.3-2 for Linux/MIPS GCC released. This compiler
  1525.         better complies with the MIPS standard of symbol names.
  1526.  
  1527.  
  1528.      10-Jul-95
  1529.         Linux/MIPS kernel 1.2.9 released.
  1530.  
  1531.  
  1532.      9-Jun-95
  1533.         Milo 0.24 released. This version features improved machine type
  1534.         detection and many cleanups and bugfixes.
  1535.  
  1536.  
  1537.      24-May-95
  1538.         Linux/MIPS kernel 1.2.8 released. This version features many
  1539.         bugfixes and has the Magnum 4000 specific changes from
  1540.         Linux-1.2.7 integrated.
  1541.  
  1542.         Milo 0.23 released. This version features built-in support for
  1543.         Olivetti M700 machines. Milo is now split into two binaries: A
  1544.         simple bootloader and a standalone debugger/monitor with boot
  1545.         capability.
  1546.  
  1547.  
  1548.  
  1549.      23-5-95
  1550.         Linux/MIPS kernel 1.2.7 on Olivetti M700 mounts root file
  1551.         system.
  1552.  
  1553.  
  1554.  
  1555.      22-May-95
  1556.         Linux/MIPS kernel 1.2.7 on Mips Magnum 4000 mounts root file
  1557.         system.
  1558.  
  1559.         Added NEC RiscStation and RiscServer to target list.
  1560.  
  1561.         Milo 0.22 successfully tested on NEC RiscStation and RiscServer.
  1562.  
  1563.  
  1564.      18-May-95
  1565.         Linux/MIPS kernel 1.2.7 released. This release features initial
  1566.         Magnum 4000 support and tons of bugfixes.
  1567.  
  1568.  
  1569.  
  1570.      12-May-95
  1571.         Milo 0.22 released. This version contains some cleanups and
  1572.         several bugfixes.
  1573.  
  1574.  
  1575.      5-May-95
  1576.         The Linux/MIPS archive is now also available from
  1577.         ftp://ftp.mcc.ac.uk/pub/linux/MIPS.
  1578.  
  1579.  
  1580.      3-May-95
  1581.         Milo 0.21 released. This version features more built-in
  1582.         debugger/monitor commands and contains some important bug fixes.
  1583.  
  1584.  
  1585.      30-Apr-95
  1586.         Milo 0.20 released. This version features a built-in
  1587.         debugger/monitor and a lot of new library functions.
  1588.  
  1589.         Port to Olivetti M700 started.
  1590.  
  1591.  
  1592.  
  1593.      26-Apr-95
  1594.         Linux/MIPS kernel 1.2.6 released.
  1595.  
  1596.  
  1597.      13-Apr-95
  1598.         Milo 0.19 released. This version includes some minor fixes plus
  1599.         initial support for kernels in ELF format.
  1600.  
  1601.  
  1602.      13-Apr-95
  1603.         Milo 0.18b released.  This version includes support for Mips
  1604.         Magnum 4000. Port to Mips Magnum 4000 started.
  1605.  
  1606.  
  1607.      27-Mar-95
  1608.         Linux/MIPS kernel 1.2.2 released.  Kernel now mounts its root
  1609.         file system.
  1610.  
  1611.  
  1612.      22-Mar-95
  1613.         Milo 0.18 released.  This version includes support for
  1614.         Deskstation rPC44 systems.
  1615.  
  1616.         Port to DeskStation rPC44 started.
  1617.  
  1618.  
  1619.  
  1620.  
  1621.  
  1622.  
  1623.  
  1624.  
  1625.  
  1626.  
  1627.  
  1628.  
  1629.  
  1630.  
  1631.  
  1632.  
  1633.  
  1634.  
  1635.  
  1636.  
  1637.  
  1638.  
  1639.  
  1640.  
  1641.  
  1642.  
  1643.  
  1644.  
  1645.  
  1646.  
  1647.  
  1648.  
  1649.  
  1650.  
  1651.