Penguin
Diff: HowToMIPSHOWTO
EditPageHistoryDiffInfoLikePages

Differences between current version and predecessor to the previous major change of HowToMIPSHOWTO.

Other diffs: Previous Revision, Previous Author, or view the Annotated Edit History

Newer page: version 3 Last edited on Thursday, October 21, 2004 5:29:15 pm by AristotlePagaltzis
Older page: version 2 Last edited on Friday, June 7, 2002 1:07:02 am by perry Revert
@@ -1,2101 +1 @@
-  
-  
-  
-Linux/MIPS HOWTO  
-  
-  
-  
-----  
-  
-!!!Linux/MIPS HOWTO  
-  
-!!Ralf Baumlchle, ralf@gnu.orgJanuary 8, 2001  
-  
-  
-----  
-''This FAQ describes the MIPS port of the Linux operating system, common  
-problems and their solutions, availability and more. It also tries to  
-be helpful to other people who might read this FAQ in an attempt to  
-find information that actually should be covered elsewhere.''  
-----  
-  
-  
-  
-  
-!!1. What is Linux/MIPS?  
-  
-  
-  
-  
-!!2. Getting this FAQ  
-  
-  
-  
-  
-!!3. What hardware does Linux/MIPS support?  
-  
-  
-*3.1 Hardware Platforms  
-  
-*3.2 Processor types  
-  
-*3.3 Hardware we're never going to support  
-  
-  
-  
-  
-  
-!!4. Linux distributions.  
-  
-  
-*4.1 !RedHat  
-  
-*4.2 Debian  
-  
-*4.3 Simple  
-  
-*4.4 Other  
-  
-  
-  
-  
-  
-!!5. Linux/MIPS net resources.  
-  
-  
-*5.1 Anonymous FTP servers.  
-  
-*5.2 Anonymous CVS servers.  
-  
-*5.3 Web servers.  
-  
-*5.4 Web CVS server.  
-  
-*5.5 Mailing lists.  
-  
-*5.6 IRC channel.  
-  
-  
-  
-  
-  
-!!6. Installation of Linux/MIPS and common problems.  
-  
-  
-*6.1 NFS booting fails.  
-  
-*6.2 Self-compiled kernels crash when booting.  
-  
-*6.3 Booting the kernel on the Indy fails with PROM error messages  
-  
-*6.4 Where can I get the little endian firmware for my SNI?  
-  
-*6.5 ld dies with signal 6  
-  
-*6.6 My machine doesn't download the kernel when I try to netboot  
-  
-*6.7 Bug in DHCP version 2  
-  
-  
-  
-  
-  
-!!7. Milo  
-  
-  
-*7.1 Building Milo  
-  
-*7.2 Pandora  
-  
-  
-  
-  
-  
-!!8. Loadable Modules  
-  
-  
-  
-  
-!!9. How do I set up a cross-compiler?  
-  
-  
-*9.1 Available binaries  
-  
-*9.2 Recommended compiler versions  
-  
-*9.3 Building your own cross-compiler  
-  
-*9.4 Disk space requirements  
-  
-*9.5 Byte order  
-  
-*9.6 Configuration names  
-  
-*9.7 Installation of GNU Binutils.  
-  
-*9.8 Assert.h  
-  
-*9.9 Installing the kernel sources  
-  
-*9.10 First installation of egcs  
-  
-*9.11 Test what you've done so far  
-  
-*9.12 Installing GNU libc  
-  
-*9.13 Building egcs again  
-  
-*9.14 Should I build the C++, Objective C or F77 compilers?  
-  
-*9.15 How about float.h?  
-  
-*9.16 Known problem when cross-compiling  
-  
-*9.17 GDB  
-  
-  
-  
-  
-  
-!!10. Related Literature  
-  
-  
-*10.1 See MIPS Run  
-  
-*10.2 The MIPS Programmer's Handbook  
-  
-*10.3 Computer Architecture - A Quantitative Approach  
-  
-*10.4 UNIX System V ABI MIPS Processor Supplement  
-  
-*10.5 The mips.com site  
-  
-*10.6 The NEC site  
-  
-----  
-  
-!!1. What is Linux/MIPS?  
-  
-  
-Linux/MIPS is a port of the widespread UNIX clone Linux to the MIPS  
-architecture. Linux/MIPS is running on a large number of technically very  
-different systems ranging from small embedded systems and servers to large  
-desktop machines and servers that, at least at the time when they were  
-introduced into the market, were the best of their class.  
-  
-  
-  
-  
-  
-Linux/MIPS advantages over other operating systems at this time are  
-  
-  
-*The entire Linux system consists only of Free Software.  
-*  
-  
-*Excellent Price/Performance ratio.  
-*  
-  
-*Availability of large amounts of software of which a large part  
-again is Free Software.  
-*  
-  
-*Binary compatibility across a growing number of platforms.  
-*  
-  
-*Small footprint making Linux/MIPS suitable for many embedded systems.  
-*  
-  
-  
-  
-In short, Linux has been designed and ships with Fahrvergnuumlgen.  
-However, as usual your mileage may vary and you should examine the  
-suitability of Linux for your task - something which we hope this document  
-helps you to accomplish.  
-  
-  
-  
-  
-  
-  
-----  
-  
-!!2. Getting this FAQ  
-  
-  
-You can download this document in various formats:  
-  
-  
-  
-  
-  
-*The HTML version  
-http://oss.sgi.com/mips/mips-howto.html  
-*  
-  
-*The text version  
-http://oss.sgi.com/mips/mips-howto.txt  
-*  
-  
-*The Postscript version  
-http://oss.sgi.com/mips/mips-howto.ps  
-*  
-  
-*The Linux-Doc SGML version.  
-http://oss.sgi.com/mips/mips-howto.sgml  
-*  
-  
-  
-  
-This FAQ is also available as SGML source code via anonymous CVS from  
-oss.sgi.com. The archive also has a Makefile which will translate it into  
-various formats. An ASCII version is regularly being posted via  
-''comp.os.linux.answers'' and the other Linux HOWTO channels.  
-  
-  
-  
-----  
-  
-!!3. What hardware does Linux/MIPS support?  
-  
-!!3.1 Hardware Platforms  
-  
-  
-  
-  
-  
-  
-Many machines are available with a number of different CPU options of which  
-not all are currently supported. Please check section  
-Processor Types to make sure your CPU type  
-is supported. This is a listing of machines that are running  
-Linux/MIPS, systems to which Linux/MIPS could be ported, or systems that  
-people have an interest in running Linux/MIPS.  
-  
-  
-  
-  
-!Acer PICA  
-  
-  
-The ''Acer PICA'' is derived from the ''Mips Magnum 4000'' design.  
-It has a R4400PC CPU running at 133MHz or optionally 150MHz plus a 512KB  
-(optionally 2MB) second level cache; the Magnum's G364 gfx card was replaced  
-with a S3 968 based one. The system is supported with the exception of the  
-X server.  
-  
-  
-  
-  
-!Baget/MIPS series  
-  
-  
-The Baget series includes several boxes which have R3000 processors: Baget  
-23, Baget 63, and Baget 83. Baget 23 and 63 have BT23-201 or BT23-202  
-motherboards with R3500A (which is basically a R3000A chip) at 25 MHz and  
-R3081E at 50 MHz respectively. The BT23-201 board has VME bus and VIC068,  
-VAC068 chips as system controllers. The BT23-202 board has PCI as internal  
-bus and VME as internal.  
-Support for BT23-201 board has been done by  
-Gleb Raiko (rajko@mech.math.msu.su) and  
-Vladimir Roganov (vroganov@msiu.ru)  
-with a bit of help from  
-Serguei Zimin (zimin@msiu.ru). Support for BT23-202 is under  
-development along with Baget 23B which consists of 3 BT23-201 boards  
-with shared VME bus.  
-  
-  
-  
-  
-  
-Baget 83 is mentioned here for completeness only. It has only 2MB RAM and  
-it's too small to run Linux. The Baget/MIPS code has been merged with the  
-DECstation port. The source for both is available at  
-http://decstation.unix-ag.org/.  
-  
-  
-  
-  
-!Cobalt Qube and Raq  
-  
-  
-The Cobalt Qube product series are low cost headless server systems  
-based on a IDT R5230. Cobalt has developed its own Linux/MIPS  
-variant to fit the special requirements of the Qube as well as possible.  
-Basically, the Qube kernel was derived from Linux/MIPS 2.1.56,  
-backported to 2..30 for stability's sake, then optimized. Cobalt kernels  
-are available from Cobalt's ftp site  
-http://www.cobaltnet.com.  
-The Cobalt Qube support has never been integrated into the official  
-Linux/MIPS 2.1.x kernels.  
-  
-  
-  
-  
-!NEC machines  
-  
-  
-The NEC uniprocessor machines are OEM ''Acer PICA'' systems, see  
-that section for details. The SMP systems are different from that. The  
-Linux/MIPS developers have no technical documentation as necessary to write  
-an OS. As long as that does not change, this will pretty much stay a show-  
-stopper, preventing a port to NEC's SMP systems.  
-  
-  
-  
-  
-!NEC VR41xx-based platforms  
-  
-  
-The Linux VR project is porting Linux to devices based on the NEC VR41xx  
-microprocessors. Many of these devices were originally designed to run  
-Windows CE. The project has produced working kernels with basic drivers  
-for the Vadem Clio, Casio E-105, Everex Freestyle, and more. For more  
-information please see  
-http://linux-vr.org/.  
-  
-  
-  
-  
-!Toshiba TMPR39xx/Philips PR31700 platforms  
-  
-  
-Similar to the VR41xx, devices with these processors were originally intended  
-for running Windows CE. However, there are working kernels with basic drivers  
-for ''Sharp Mobilon'' and the ''Compaq C-Series''. Support for more devices  
-is under construction. The code is part of the Linux VR project and as such  
-more information can be found at  
-http://linux-vr.org/.  
-  
-  
-  
-  
-!Netpower 100  
-  
-  
-The ''Netpower 100'' is apparently an ''Acer PICA'' in disguise.  
-It should therefore be supported but this is untested. If there is a  
-problem then it is probably the machine detection.  
-  
-  
-  
-  
-!Nintendo 64  
-  
-  
-The ''Nintendo 64'' is R4300-based game console with 4MB RAM. Its  
-graphics chips were developed by Silicon Graphics for Nintendo. Right now  
-this port has pipe dream status and will continue to be in that state until  
-Nintendo decides to publish the necessary technical information. The  
-question remains as to whether porting the Linux/MIPS code to this platform  
-is a good idea.  
-  
-  
-  
-  
-!Silicon Graphics Challenge S  
-  
-  
-This machine is very similar to the Indy, the differences are that it doesn't  
-have a keyboard or graphics card, but has an additional SCSI WD33C95-based  
-adapter. This WD33C95 hostadapter is currently not supported.  
-  
-  
-  
-  
-!Silicon Graphics Indigo  
-  
-  
-This machine is only being mentioned here because people have occasionally  
-confused it with Indys or the Indigo 2. The Indigo is a different  
-R3000-based architecture however, and is not yet unsupported.  
-  
-  
-  
-  
-!Silicon Graphics Indigo2  
-  
-  
-This machine is the successor to the Indigo and is very similar to the Indy.  
-It is now supported, but is lacking in several areas. You will have  
-to use serial console. If you have an Indigo2 and still want to run Linux on  
-it, contact either  
-Florian Lohoff (flo@rfc822.org) or  
-Klaus Naumann (spock@mgnet.de) .  
-  
-  
-  
-  
-!Silicon Graphics Indy  
-  
-  
-The Indy is currently the only (mostly) supported Silicon Graphics  
-machine. The only supported graphics card is the Newport card, a.k.a.  
-``XL'' graphics. The Indy is available with a large number of  
-CPU options at various clock rates, all of which are supported.  
-There is also a X server available, now written by  
-Guido Guenther (guido.guenther@gmx.net).  
-If you're able to use the Newport console on your Indy it should be  
-possible to also use this X server. It's based on XFree86 4.0 and  
-currently runs at snail-like speeds, but it seems to work quite well.  
-If you want to try it, take a look at  
-http://honk.physik.uni-konstanz.de/~agx/mipslinux/x/ .  
-  
-  
-  
-  
-!Strange amounts of available memory  
-  
-  
-On bootup, the kernel on the Indy will report available memory with a  
-message like:  
-  
-Memory: 27976k/163372k available (1220k kernel code, 2324k data)  
-  
-The large difference between the first pair of numbers is caused by a  
-128MB area in the Indy's memory address space which mirrors up to the  
-first 128MB of memory. The difference between the two numbers will  
-always be about 128MB and does not indicate a problem of any kind.  
-Kernels since 2.3.23 don't count this 128MB gap any more.  
-  
-  
-  
-  
-!Indy PROM related problems  
-  
-  
-Several people have reported these problems with their machines after  
-upgrading them typically from surplus parts. There are several PROM  
-versions for the Indy available. Machines with old PROM versions which  
-have been upgraded to newer CPU variants, like a R4600SC or R5000SC module,  
-can crash during the self test with an error message like:  
-  
-Exception: <vector=Normal>  
-Status register: 0x30004803<CU1,CU0,IM7,IM4,IPL=???,MODE=KERNEL,EXL,IE>  
-Cause register: 0x4000<CE=,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  
-  
-In that case, you'll have to upgrade your machine's PROM to a newer version,  
-or go back to an older CPU version (usually R4000SC or R4400SC modules  
-should work). Just to be clear, this is a problem which is unrelated to  
-Linux, it is only mentioned here because several Linux users have asked  
-about it.  
-  
-  
-  
-  
-  
-  
-  
-!ELF support in old PROM versions  
-  
-  
-Old PROM versions don't know about the ELF binary format which the Linux  
-kernel uses, so Linux cannot boot directly. The preferable solution  
-for this is of course a PROM upgrade. Alternatively, you can use Sash for  
-IRIX 5 or newer to boot the kernel. Sash knows how to load ELF binaries  
-and doesn't care if it's an IRIX or Linux kernel. Simply type  
-``Sash'' to the PROM monitor. You should get another shell  
-prompt, this time from Sash. Now launch Linux as usual.  
-  
-  
- Sash can read  
-EFS or XFS filesystems or read the kernel from bootp / tftp. That means  
-if you intend to use Sash for booting the kernel from local disk, you'll  
-still have to have a minimal IRIX installation on your system.  
-  
-  
-  
-  
-!Why is so much memory reserved on my Indy?  
-  
-  
-On bootup, the `Memory: ...' message on an Indy says that there is  
-128MB of RAM reserved. That is ok. Just like the PC architecture has  
-a gap in its memory address space between 640KB and 1024KB, the Indy  
-has a 128MB-sized area in its memory map where the first 128MB of  
-its memory is mirrored. Linux knows about it and just ignores  
-that memory, and thus this message.  
-  
-  
-  
-  
-  
-  
-  
-!Silicon Graphics Origin 200 and 2000  
-  
-  
-  
-Ralf Baumlchle (ralf@gnu.org)  
-and a team of SGI employees are currently working on a port to the  
-Origin 200. While still in it's early stages, it's running in  
-uniprocessor and multiprocessor mode and has drivers for the built-in  
-IOC3 Ethernet and SCSI hostadapters. The code is available in the  
-Linux/MIPS CVS tree.  
-  
-  
-  
-  
-  
-  
-  
-!Silicon Graphics Onyx 2  
-  
-  
-The Onyx 2 is basically an Origin 2000 with additional graphics  
-hardware. As of now, writing Linux support for the graphics hardware has  
-not yet been done. Aside from that, Linux should run just as well as  
-on a normal, headless Origin 2000 configuration.  
-  
-  
-  
-  
-  
-  
-  
-!Silicon Graphics Power Series  
-  
-  
-This is a very old series of R3000 SMP systems. There is no hardware  
-documentation for these machines, few of them even exist anymore, and the  
-hardware is weird. In short, the chances that Linux will ever run on them  
-are approximating zero. Not that we want to discourage any takers ...  
-  
-  
-  
-  
-!Serial console on SGI machines  
-  
-  
-Make sure that the kernel you're using includes the appropriate driver for a  
-serial interface and serial console. Set the ''console''  
-ARC environment variable to either the value ''d1'', or ''d2''  
-for Indy and Challenge S depending on which serial interface you're  
-going to use as the console.  
-  
-  
-  
-  
-  
-If you have the problem that all kernel messages appear on the serial  
-console on boot-up, but everything is missing from the point when init starts,  
-then you probably have the wrong setup for your /dev/console.  
-You can find more information about this in the Linux kernel source  
-documentation which is in /usr/src/linux/Documentation/serial-console.txt if  
-you have the kernel source installed.  
-  
-  
-  
-  
-!Other Silicon Graphics machines  
-  
-  
-At this time, no other Silicon Graphics machine is supported. This also  
-applies to the ''very'' old Motorola 68k-based systems.  
-  
-  
-  
-  
-!Sony Playstation  
-  
-  
-The Sony Playstation is based on an R3000 derivative and uses a set of  
-graphics chips developed by Sony themselves. While the machine, in theory,  
-is capable of running Linux, a port is difficult since Sony so far  
-hasn't provided the necessary technical information. This still leaves the  
-question of whether the port would be worthwhile. So in short, nothing has  
-happened yet even though many people have shown an interest in running Linux  
-on this system.  
-  
-  
-  
-  
-!SNI RM200C  
-  
-  
-In contrast to the RM200 (see below), this machine has EISA and PCI slots.  
-The RM200 is supported with the exception of the availability of the onboard  
-NCR53c810A SCSI controller.  
-  
-  
-  
-  
-!SNI RM200  
-  
-  
-If your machine has both EISA and PCI slots, then it is an RM200C (please  
-see above). Due to the slight architectural differences of the RM200 and  
-the RM200C, this machine isn't currently supported in the official sources.  
-Michael Engel (engel@numerik.math.uni-siegen.de) has managed to get  
-his RM200 working partially, but the patches haven't yet been included in the  
-official Linux/MIPS sources.  
-  
-  
-  
-  
-!SNI RM300C  
-  
-  
-The RM300 is technically very similar to the RM200C. It should be supported  
-by the current Linux kernel, but we haven't yet received any reports.  
-  
-  
-  
-  
-!SNI RM400  
-  
-  
-The RM400 isn't supported.  
-  
-  
-  
-  
-!SNI RW320  
-  
-  
-This machine is a OEM variant of the SGI Indigo and therefore also  
-unsupported.  
-  
-  
-  
-  
-!Algorithmics P-4032, P-5064, P-6032  
-  
-  
-Algorithmics (  
-http://www.algor.co.uk/) make a series of  
-single-board computers for MIPS prototyping, and maintain Linux kernels  
-for all of them:  
-  
-  
-*P-6032 is a new board for CPUs with 32-bit buses (QED  
-RM5231, NEC Vr43x0, NEC Vr5432, IDT 64x74)  
-*  
-  
-*P-4032 is an older board obsoleted by P-6032.  
-*  
-  
-*P-5064 is for CPUs with 64-bit buses, notably QED's RM70xx  
-and RM52xx series.  
-*  
-  
-  
-  
-All the boards have common I/O plus ethernet and disk interfaces onboard,  
-with spare PCI slots for adding different controllers. They're highly  
-configurable, so will run with either byte order. All are suitable targets  
-for 64-bit kernels, but (so far) all the Linux work we've done has been using  
-32-bit code.  
-  
-  
-They're available, supported and documented with PDF manuals available  
-online, like  
-http://www.algor.co.uk/ftp/pub/doc/p6032-user.pdf  
-for the P-6032.  
-  
-  
-At the time of writing (November 2000) we are using a 2.2.x kernel; kernel  
-code is shared with the ports being done by people from  
-MIPS Technologies, Inc.).  
-Algorithmics wrote the floating point trap handler and emulator used in this  
-kernel - essential for MIPS CPUs to run floating point operations reliably  
-and correctly.  
-  
-  
-Algorithmics' kernels and a link to the MIPS userland can be found from a  
-jump page at  
-http://www.algor.co.uk/algor/info/linux.html  
-  
-You can contact us at  
-Algorithmics.  
-  
-  
-  
-  
-!DECstation series  
-  
-  
-During the late 80's and the early 90's, Digital (now Compaq) built MIPS-based  
-Workstations named DECstation resp. DECsystem. Other x86 and Alpha-based  
-machines were sold under the name DECstation, but these are obviously not the  
-subject of this FAQ. Support for DECstations is still under development,  
-started by Paul M. Antoine. These days, most of the work is done by  
-Harald Koerfgen (Harald.Koerfgen@home.ivm.de) and others. On the  
-Internet, DECstation-related information can be found at  
-http://decstation.unix-ag.org/.  
-  
-  
-The DECstation family ranges from the DECstation 2100 with an R2000/R2010  
-chipset at 12 MHz, to the DECstation 5000/260 with a 60 MHz R4400SC.  
-  
-  
-The following DECstation models are actively supported:  
-  
-  
-*2100, codename PMAX  
-*  
-  
-*5000/xx (Personal DECstation), codename MAXine  
-*  
-  
-*5000/1xx, codename 3MIN  
-*  
-  
-*5000/200, codename 3MAX  
-*  
-  
-*5000/2x0, codename 3MAX+  
-*  
-  
-*5900/2x0 (identical to the 3MAX+).  
-*  
-  
-  
-  
-These DECstation models are orphaned because nobody is working on them,  
-but support for them should be relatively easy to achieve.  
-  
-  
-*3100, identical to the 2100 except the R2000A/R2010A @ 16 MHz  
-*  
-  
-*5100, codename MIPSMATE, almost identical to the 2100 but with an  
-R3000/R3010 chipset.  
-*  
-  
-  
-  
-The other members of the DECstation family, besides the x86 based ones,  
-should be considered as VAXen with the CPU replaced by a MIPS CPU.  
-There is absolutely no information available about these machines and support  
-for them is unlikely to ever happen unless the VAXLinux port comes back to  
-life. These are:  
-  
-  
-*5400, codename MIPSFAIR  
-*  
-  
-*5500, codename MIPSFAIR2  
-*  
-  
-*5800, codename ISIS  
-*  
-  
-  
-  
-  
-  
-!Mips Magnum 4000 / Olivetti M700-10  
-  
-  
-These two machines are almost completely identical. Back during the  
-ACE initiative, Olivetti licensed the Jazz design and marketed the machine  
-with Windows NT as the OS. MIPS Computer Systems, Inc. bought the  
-Jazz design and marketed it as the MIPS Magnum 4000 series of machines.  
-Magnum 4000 systems were marketed with Windows NT and RISC/os as the  
-operating systems.  
-  
-  
-  
-  
-  
-The firmware on the machine depended on the operating system which was  
-installed. Linux/MIPS supports only  
-the little endian firmware on these two types of machines. Since the  
-M700-10 was only marketed as an NT machine, all M700-10 machines have this  
-firmware installed. The MIPS Magnum case is somewhat more complex. If  
-your machine has been configured big endian for RISC/os, then you need  
-to reload the little endian firmware. This firmware was originally  
-included on a floppy with the delivery of every Magnum. If you don't  
-have the floppy anymore you can download it via anonymous ftp from  
-ftp://ftp.fnet.fr.  
-  
-  
-  
-  
-  
-It is possible to reconfigure the M700 for headless operation by setting  
-the firmware environment variables !ConsoleIn and !ConsoleOut to  
-multi()serial()term(). Also, try the command ''listdev'' which will  
-show the available ARC devices.  
-  
-  
-In some cases, like where the G364 graphics card is missing but the console  
-is still configured to use normal graphics, it will be necessary to set  
-the configuration jumper JP2 on the board. After the next reset, the machine  
-will reboot with the console on COM2.  
-  
-  
-  
-  
-!MIPS Magnum 4000SC  
-  
-  
-The MIPS Magnum 4000SC is the same as a Magnum 4000 (see above) with  
-the exception that it uses an R4000SC CPU.  
-  
-  
-  
-  
-!! 3.2 Processor types  
-  
-  
-!R2000, R3000 family  
-  
-  
-The R2000 is the original MIPS processor. It's a 32 bit processor which  
-was clocked at 8MHz back in '85 when the first MIPS processors came to the  
-market. Later versions were clocked faster, for example,  
-the R3000 is a 100% compatible redesign of the R2000 which is just clocked  
-faster. Because of their high compatibility, where this document mentions  
-the R3000, in most cases the same facts also apply to the R2000.  
-The R3000A is basically an R2000, plus an R3010 FPU,  
-and 64K cache running at up to 40MHz all integrated onto the same chip.  
-  
-  
-  
-  
-  
-  
-Harald Koerfgen (Harald.Koerfgen@home.ivm.de) and  
-Gleb O. Raiko (raiko@niisi.msk.ru)  
-have both independently worked on patches for R3000 processors.  
-The work has been merged and integrated into the official Linux/MIPS  
-sources since July 1999. Actually, Linux supports R3000 processors including  
-some derivatives like the R3081 and the TMPR3912/PR31700  
-  
-  
-  
-  
-  
-  
-  
-!R6000  
-  
-  
-Sometimes people confuse the R6000, a MIPS processor, with RS6000, a series  
-of workstations made by IBM. So, if you're reading this in hope of finding  
-out more about Linux on IBM machines, then you're reading the wrong document.  
-  
-  
-  
-  
-  
-The R6000 is currently not supported. It is a 32-bit MIPS ISA 2 processor;  
-a pretty interesting and weird piece of silicon. It was developed  
-and produced by a company named ''BIT Technology''. Later, NEC took  
-over the semiconductor production. It was built using ECL technology, the  
-same technology that was, and still is, being used to build extremely fast  
-chips like those used in some Cray computers. The processor had its  
-TLB implemented as part of the last couple of lines of the external  
-primary cache, a technology called ''TLB slice''. That means its  
-MMU is substantially different from those of the R3000 or R4000 series,  
-which is also one of the reasons why the processor isn't supported.  
-  
-  
-  
-  
-!R4000 and R5000 family  
-  
-  
-Linux supports many of the members of the R4000 family. Currently, these  
-are: R4000PC, R4400PC, R4300, R4600, R4700, R5000, R5230, R5260. Many  
-others are probably supported as well.  
-  
-  
-  
-  
-  
-Not supported are the R4000MC and R4400MC CPUs (that is multiprocessor  
-systems), as well as R5000 systems with a CPU-controlled second level cache.  
-This means that the cache is controlled by the R5000 itself, in contrast to  
-some external cache controller. The difference is important because,  
-unlike other systems, especially PCs, on MIPS the cache is architecturally  
-visible and needs to be controlled by software.  
-  
-  
-Special credit goes to  
-Ulf Carlsson (ulfc@engr.sgi.com) who provided the CPU module for  
-debugging the R4000SC / R4400SC support.  
-  
-  
-  
-  
-!R8000  
-  
-  
-The R8000 is currently unsupported partly because this processor is  
-relatively rare and has only been used in a few SGI machines, and partly because  
-the Linux/MIPS developers don't have such a machine.  
-  
-  
-The R8000 is a pretty interesting piece of silicon. Unlike the other  
-members of the MIPS family it is a set of seven chips. It's cache and TLB  
-architecture are pretty different from the other members of the MIPS family.  
-It was born as a quick hack to get the floating point crown back to  
-Silicon Graphics before the R10000 is finished.  
-  
-  
-  
-  
-!R10000  
-  
-  
-The R10000 is supported as part of the mips64 kernel which currently is  
-supported on the IP22 (SGI Indy, Challenge S and Indigo 2) and  
-Origin.  
-  
-  
-Due to the very hard-to-handle way this processor works in non-cachecoherent  
-systems, it will probably be some time until we support this processor  
-in such systems. As of today, these systems are the SGI O2 and  
-Indigo  
-  
-  
-  
-  
-  
-  
-  
-!Processors without TLB  
-  
-  
-For embedded purposes, there are special derivates of the above CPU available  
-which often lack a full TLB. We don't support those types nor should you  
-ever expect such support to be added.  
-  
-  
-  
-  
-  
-Hackers may want to take a look at a Linux subset named Microcontroller  
-Linux, or short, ucLinux. This would be supportable on TLB-less processors.  
-Given the litte difference between CPU types with and without TLB, we  
-still recommend that you choose a processor with TLB. It's going to save you  
-a lot of engineering.  
-  
-  
-  
-  
-!Processors with partial or no FPU  
-  
-  
-In theory, these processors are supportable, especially when applications  
-don't rely on the presence of a FPU. We, however, don't support that yet.  
-  
-  
-  
-  
-!!3.3 Hardware we're never going to support  
-  
-  
-  
-  
-  
-!IBM RS6000  
-  
-  
-As the name says, these are IBM machines which are based on the RS6000  
-processor series, and, as such, they're not the subject of the Linux/MIPS project.  
-People frequently confuse the IBM RS6000 with the MIPS R6000 architecture.  
-However, the Linux/PPC project might support these machines. Checkout  
-http://www.linuxppc.org/ for further information.  
-  
-  
-  
-  
-!!VaxStation  
-  
-  
-As the name already implies, this machine is a member of Digital Equipment's  
-VAX family. It's mentioned here because people often confuse it with  
-Digital's MIPS-based DECstation family due to the similar type numbers. These  
-two families of architectures share little technical similarities.  
-Unfortunately, the !VaxStation, like the entire VAX family, is currently  
-unsupported.  
-  
-  
-  
-  
-!SGI VisPC  
-  
-  
-This is actually an x86-based system, therefore not covered by this FAQ.  
-There is some limited Linux support available for the older Visual  
-Workstations. The current series of Visual Workstations is an officially  
-supported SGI product. Please see  
-http://oss.sgi.com and  
-http://www.sgi.com for more information.  
-  
-  
-  
-  
-!Motorola 68k-based machines like the Iris 3000  
-  
-  
-These are ''very'' old machines, probably more than ten years old by  
-now. As these machines are not based on MIPS processors, and therefore not  
-supported by the Linux/MIPS project, this document is the wrong place to  
-search for information.  
-  
-  
-  
-----  
-  
-!!4. Linux distributions.  
-  
-  
-  
-  
-!!4.1 !RedHat  
-  
-  
-  
-For MIPSeb, there's Rough Cuts Linux, previously known as Hard Hat Linux,  
-which is most of !RedHat Linux 5.1 ported for MIPSeb. You can get this at  
-ftp://oss.sgi.com/pub/linux/mips/redhat.  
-  
-  
-  
-  
-  
-It is bundled along with M68k, !UltraSparc, and PowerPC in a package called  
-"Rough Cuts" pressed by !RedHat, and available wherever !RedHat products are  
-sold. This is a very convenient way to get it without having to download  
-280MB. Redhat is no longer offering this product but if you're lucky you  
-may still find the CD in some shops or somewhere on the net.  
-  
-  
-A distribution based on Red Hat 5.2 that's targeting the Cobalt Qubes. Those  
-binaries will work perfectly on other MIPSel architectures and are available  
-at  
-ftp://intel.cleveland.lug.net/pub/Mipsel.  
-ftp://bolug.uni-bonn.de/mips has various rpm packages from  
-Redhat 6., 6.1 and 6.2.  
-  
-  
-  
-  
-!!4.2 Debian  
-  
-  
-  
-A Debian port is underway. Current efforts are being bootstrapped using  
-SGI/Linux as a base, and dpkg compiles natively with few changes. In  
-addition to the SGI version, some interest has been shown in little endian  
-platforms. Keep an eye on the Debian-MIPS Port page,  
-http://www.debian.org/ports/mips/ for developments.  
-  
-  
-  
-  
-!!4.3 Simple  
-  
-  
-  
-This distribution is for big-endian systems only so far. It's highly  
-experimental, intended for developers' use in testing the latest versions  
-of gcc, binutils, glibc, and the kernel. This is the only glibc 2.2-based  
-distribution available for MIPS. You can always get the latest version of  
-this distribution and accompanying release notes at  
-ftp://oss.sgi.com/pub/linux/mips/mips-linux/simple. Also available  
-is a cross-compiler system to aid in development.  
-  
-  
-  
-  
-!!4.4 Other  
-  
-  
-  
-Kevin Kissel of MIPS, Inc. has put together a compilation of the  
-!RedHat 5.2 mipsel distribution that includes the all the packages  
-from the Cleveland LUG site  
-ftp://intel.cleveland.lug.net/pub/Mipsel, plus quite a few  
-others from elsewhere that are either newer than, or missing from, the  
-Cleveland LUG distribution. This compilation can be found via HTML at  
-http://www.paralogos.com/mipslinux or directly by FTP at  
-ftp://ftp.paralogos.com/pub/linux/mips/RPMS/mipsel.  
-  
-  
-  
-  
-  
-  
-----  
-  
-!!5. Linux/MIPS net resources.  
-  
-  
-  
-  
-!!5.1 Anonymous FTP servers.  
-  
-  
-  
-The two primary anonymous FTP servers for Linux/MIPS are  
-  
-; __  
-oss.sgi.com__:  
-  
-This server should satisfy almost all of your Linux/MIPS related ftp desires.  
-Really.  
-  
-  
-  
-; __  
-ftp.fnet.fr__:  
-  
-This server is currently pretty outdated. It's included here mostly for  
-completeness, and for people with interest in prehistoric software.  
-  
-On all of these ftp servers, there is a list of mirror sites you may  
-want to use for faster access.  
-  
-  
-  
-  
-  
-Another source for little endian MIPS binaries is  
-ftp://intel.cleveland.lug.net/pub/Mipsel, which carries mostly newer  
-versions of binaries for the !RedHat flavour shipping with the Cobalts.  
-  
-  
-  
-  
-  
-  
-  
-!!5.2 Anonymous CVS servers.  
-  
-  
-  
-For those who always want to stay on the bleeding edge, and want to avoid  
-having to download patch files or full tarballs, we also have an anonymous  
-CVS server. Using CVS, you can checkout the Linux/MIPS source tree with  
-the following commands:  
-  
-  
-  
-  
-  
-  
-  
-cvs -d :pserver:cvs@oss.sgi.com:/cvs login  
-(Only needed the first time you use anonymous CVS, the password is "cvs")  
-cvs -d :pserver:cvs@oss.sgi.com:/cvs co <repository>  
-  
-where you insert linux, libc, gdb or faq for <repository>.  
-  
-  
-The other important CVS archive of the Linux community is vger.kernel.org,  
-where a lot of code is being collected before being sent to Linus for  
-distribution. Although vger itself no longer offers anonymous access, there  
-are mirror sites which do provide anonymous access. For details on how to access  
-them, see  
-http://cvs.on.openprojects.net/. The modules which are  
-of interest are: ``linux'', ``modutils'', ``pciutils'', and ``netutils''.  
-  
-  
-  
-  
-!!5.3 Web servers.  
-  
-  
-  
-The two primary web servers for Linux/MIPS are  
-  
-; __  
-http://oss.sgi.com/mips__:  
-  
-This server covers most of Linux/MIPS. It's somewhat SGI-centric, but since  
-Linux/MIPS tries to be the same on every platform, most of its information  
-is of interest to all users.  
-; __  
-http://www.linux-mips.org__:  
-  
-Quite new site which one day will hopefully become the main Linux/MIPS  
-site.  
-; __  
-http://lena.fnet.fr__:  
-  
-This server is currently pretty outdated. It's included here mostly for  
-completeness.  
-  
-All of these servers have mirrors scattered all over the world - you may want to  
-use one for best performance.  
-  
-  
-  
-  
-!!5.4 Web CVS server.  
-  
-  
-  
-Via  
-http://oss.sgi.com/mips/cvsweb, you have  
-direct access to the new Linux/MIPS kernel sources, and a few other projects  
-hosted in the same CVS archive. The intuitive interface allows you to  
-follow the development at the click of your mouse.  
-  
-  
-  
-  
-!!5.5 Mailing lists.  
-  
-  
-  
-There are three Linux/MIPS-oriented mailing lists:  
-  
-; __  
-linux-mips@fnet.fr__:  
-  
-This mailing list is used for most all non-SGI related communication.  
-Subscription is handled by a human, and you can send your subscription  
-requests to  
-linux-mips-request@fnet.fr. You can unsubscribe from this mailing  
-list by sending ''unsubscribe <your-email-address>'' to the same  
-address. ''Only subscribers are allowed to post to this list''.  
-  
-  
-  
-; __  
-linux-mips@oss.sgi.com__:  
-  
- This mailing list currently has the most  
-traffic. It's somewhat SGI-centric but is nevertheless of interest  
-especially to developers as a good number of SGI engineers are subscribed  
-to this list. Subscription to this list is handled via  
-Majordomo (majordomo@oss.sgi.com), just send an email with the  
-words ''subscribe linux-mips''. In order to unsubscribe, send  
-''unsubscribe linux-mips''. For more, information see also  
-http://oss.sgi.com/mips/email.html.  
-  
-  
-  
-  
-  
-!!5.6 IRC channel.  
-  
-  
-  
-There is an IRC channel named #mipslinux for Linux/MIPS which may be found on  
-irc.openprojects.net.  
-  
-  
-  
-----  
-  
-!!6. Installation of Linux/MIPS and common problems.  
-  
-  
-  
-  
-  
-  
-  
-!!6.1 NFS booting fails.  
-  
-  
-  
-Usually, the reason for this is that people have unpacked the tar archive  
-under IRIX, not Linux. Since the representation of device files over  
-NFS is not standardized between various Unices, this fails. The symptom  
-is that the system dies with the error message ``Warning: unable to open  
-an initial console.'' right after mounting the NFS filesystem.  
-  
-  
-  
-  
-  
-For now, the workaround is to use a Linux system (doesn't need to be MIPS)  
-to unpack the installation archive onto the NFS server. The NFS server  
-itself may be any type of UNIX.  
-  
-  
-  
-  
-  
-  
-  
-!!6.2 Self-compiled kernels crash when booting.  
-  
-  
-  
-When I build my own kernel, it crashes. On an Indy the crash message  
-looks like the following (the same problem hits other machines as well  
-but may look completely different):  
-  
-  
-  
-  
-Exception: <vector=UTLB Miss>  
-Status register: 0x300004803<CU1,CU0,IM4,IPL=???,MODE=KERNEL,EXL,IE>  
-Cause register: 0x8008<CE=,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  
-  
-  
-  
-This problem is caused by a still unfixed bug in Binutils newer than  
-version 2.7. As a workaround, change the following line in arch/mips/Makefile  
-from:  
-  
-  
-  
-  
-LINKFLAGS = -static -N  
-  
-  
-  
-to:  
-  
-  
-  
-  
-LINKFLAGS = -static  
-  
-  
-  
-  
-  
-!!6.3 Booting the kernel on the Indy fails with PROM error messages  
-  
-  
-  
-  
-  
->> 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.  
-  
-  
-  
-This problem only happens for Indys with very old PROM versions which cannot  
-handle the ELF binary format which Linux uses. A solution for this problem  
-is in the works.  
-  
-  
-  
-  
-!!6.4 Where can I get the little endian firmware for my SNI?  
-  
-  
-  
-  
-  
-  
-SNI's system can be operated in both big and little endian modes. At this  
-time, Linux/MIPS only supports the little endian firmware. This is somewhat  
-unlucky since SNI hasn't shipped that firmware for quite some time, since  
-they dropped Windows NT.  
-  
-  
-When running in big endian mode, the firmware looks  
-similar to an SGI Indy which is already supported, therefore fixing the  
-SNI support will be relatively easy. Interested hackers should contact  
-Ralf Baumlchle (ralf@gnu.org).  
-  
-  
-  
-  
-!!6.5 ld dies with signal 6  
-  
-  
-  
-  
-  
-collect2: ld terminated with signal 6 [[Aborted ]  
-  
-This is a known bug in older binutils versions. You will have to upgrade to  
-binutils 2.8.1 plus very current patches.  
-  
-  
-  
-  
-!!6.6 My machine doesn't download the kernel when I try to netboot  
-  
-  
-  
-  
-  
-  
-Your machine is replying to the BOOTP packets (you may verify this  
-using a packet sniffer like tcpdump or ethereal), but doesn't download the  
-kernel from your BOOTP server. This happens if your boot server is  
-running a kernel of the 2.3 series or higher. The problem may be circumvented  
-by doing a "echo 1 > /proc/sys/net/ipv4/ip_no_pmtu_disc" as root on your  
-boot server.  
-  
-  
-  
-  
-!!6.7 Bug in DHCP version 2  
-  
-  
-  
-When using DHCP version 2 you might see the following problem:  
-Your machines receives it's BOOTP reply 3 times but refuses to start TFTP.  
-You can fix this by doing a "unsetenv netaddr" in the PROM command monitor before you boot your  
-system. DHCP version 3 fixes that problem.  
-  
-  
-  
-----  
-  
-!!7. Milo  
-  
-  
-Milo is the boot loader used to boot the little endian MIPS systems with  
-ARC firmware, currently the Jazz family and the SNI RM 200.  
-While Milo uses the same name and has a similar purpose to the Alpha version  
-of Milo, these two Milos have nothing else in common. They were developed  
-by different people, don't share any code, and work on different hardware  
-platforms. The fact that both have the same name is just a kind of  
-historic ``accident''.  
-  
-  
-Plans are to remove the need for Milo in the near future.  
-  
-  
-  
-  
-  
-  
-  
-!!7.1 Building Milo  
-  
-  
-  
-The building procedure of Milo is described, in detail, in the README files  
-in the Milo package. Since Milo has some dependencies to kernel header  
-files which have changed over time, Milo often cannot be built easily.  
-However, the Milo distribution includes binaries for both Milo and Pandora.  
-  
-  
-  
-  
-!!7.2 Pandora  
-  
-  
-  
-Pandora is a simple debugger which was primarily developed in order  
-to analyze undocumented systems. Pandora includes a disassembler,  
-memory dump functions, and more. If you only want to use Linux, then there is  
-no need to install Pandora, despite its small size.  
-  
-  
-  
-----  
-  
-!!8. Loadable Modules  
-  
-  
-Using modules on Linux/MIPS is quite easy. It should work as expected for people who have used  
-the feature on other Linux systems. If you want to run a module-based system, then  
-you should have at least kernel version 980919, and modutils newer than  
-version 2.1.121 installed. Older versions won't work.  
-  
-  
-  
-----  
-  
-!!9. How do I set up a cross-compiler?  
-  
-  
-  
-  
-!!9.1 Available binaries  
-  
-  
-  
-The easiest way to setup a cross-compiler is to just download the binaries.  
-For Linux/i386 hosts and big endian targets, these are the packages:  
-  
-binutils-mips-linux-2.8.1-1.i386.rpm  
-egcs-c++-mips-linux-1.1.2-2.i386.rpm  
-egcs-g77-mips-linux-1.1.2-2.i386.rpm  
-egcs-libstdc++-mips-linux-2.9.-2.i386.rpm  
-egcs-mips-linux-1.1.2-2.i386.rpm  
-egcs-objc-mips-linux-1.1.2-2.i386.rpm  
-  
-  
-  
-And this is the list of packages for little endian targets:  
-  
-binutils-mipsel-linux-2.8.1-1.i386.rpm  
-egcs-c++-mipsel-linux-1.1.2-2.i386.rpm  
-egcs-g77-mipsel-linux-1.1.2-2.i386.rpm  
-egcs-libstdc++-mipsel-linux-2.9.-2.i386.rpm  
-egcs-mipsel-linux-1.1.2-2.i386.rpm  
-egcs-objc-mipsel-linux-1.1.2-2.i386.rpm  
-  
-  
-  
-For 64-bit MIPS kernels, there is only one package available right  
-now:  
-  
-egcs-mips64-linux-1.1.2-2.i386.rpm  
-  
-  
-  
-This compiler is only available in the big endian flavor as there currently  
-is no little endian machine supported by the 64-bit kernel. A little endian  
-version of the compiler will be provided as soon as there is demand for one.  
-  
-  
-It's not necessary that you install all of these packages as most people can  
-just omit the C++, Objective C and Fortran 77 compilers. The  
-Intel binaries have been linked against GNU libc 2.1, so you may have  
-to install that as well when upgrading.  
-  
-  
-  
-  
-!!9.2 Recommended compiler versions  
-  
-  
-  
-Compilers older than egcs 1.1.2 are no longer supported for compiling kernels  
-due to bugs in the generated code. At this time, we still recommend  
-binutils 2.8.1 despite their age.  
-  
-  
-  
-  
-!!9.3 Building your own cross-compiler  
-  
-  
-  
-First of all, go and download the following source packages:  
-  
-  
-*binutils-2.8.1.tar.gz  
-*  
-  
-*egcs-1.1.2.tar.gz  
-*  
-  
-*glibc-2..6.tar.gz  
-*  
-  
-*glibc-crypt-2..6.tar.gz  
-*  
-  
-*glibc-localedata-2..6.tar.gz  
-*  
-  
-*glibc-linuxthreads-2..6.tar.gz  
-*  
-  
-You can obtain these files from your favorite GNU archive or  
-oss.sgi.com. Furthermore, you'll  
-need patches. The unbundled patch files aren't always up-to-date and addional,  
-not MIPS-specific, patches may be required for building. Note that the  
-unbundled patch files also use a different revision numbering and it is  
-therefore recommended that you obtain the source and patches from the RPM packages  
-distributed on  
-oss.sgi.com.  
-  
-  
-Those are the currently recommended versions. Older versions may or may not  
-be working. If you're trying to use older versions, please don't send  
-bug reports because we don't care. When installing, please install things in the  
-order of binutils, egcs, then glibc. Unless you have older versions  
-already installed, changing the order ''will'' fail.  
-  
-  
-  
-  
-!!9.4 Disk space requirements  
-  
-  
-  
-For the installation, you'll have to choose a directory where the files will be  
-installed. I'll refer to that directory below with <prefix>. To avoid a particular  
-problem, it's best to use the same value for <prefix> as your native gcc.  
-For example, if your gcc is installed in /usr/bin/gcc, then choose /usr for  
-<prefix>. You must use the same <prefix> value for all the packages  
-that you're going to install.  
-  
-  
-During compilation, you'll need about 31MB disk space for binutils. For  
-installation, you'll need 7MB disk space on <prefix>'s  
-partition. Building egcs requires 71MB, and installation 14MB. GNU libc  
-requires 149MB disk space during compilation, and 33MB for installation.  
-Note, these numbers are just a guideline and may differ significantly for  
-different processor and operating system architectures or compiler options.  
-  
-  
-  
-  
-!!9.5 Byte order  
-  
-  
-  
-One of the special features of the MIPS architecture is that all processors  
-except the R8000 can be configured to run either in big or in little endian  
-mode. Byte order means the way the processor stores multibyte numbers in  
-memory. Big endian machines store the byte with the highest value digits  
-at the lowest address while little endian machines store it at the highest  
-address. Think of it as writing multi-digit numbers from left to  
-right or vice versa.  
-  
-  
-In order to setup your cross-compiler correctly, you have to know the byte  
-order of the cross-compiler target. If you don't already know, check  
-the section  
-Hardware Platforms for your  
-machine's byte order.  
-  
-  
-  
-  
-!!9.6 Configuration names  
-  
-  
-  
-Many of the packages based on autoconf support many different  
-architectures and operating systems. In order to differentiate between  
-these many configurations, names are constructed with  
-<cpu>-<company>-<os>, or even  
-<cpu>-<company>-<kernel>-<os>. Expressed this way,  
-the configuration names of Linux/MIPS are: mips-unknown-linux-gnu for big  
-endian targets, or mipsel-unknown-linux-gnu for little endian targets. These  
-names are a bit long and are allowed to be abbreviated to mips-linux or  
-mipsel-linux. You ''must'' use the same configuration name for all  
-packages that comprise your cross-compilation environment. Also, while  
-other names, like mips-sni-linux or mipsel-sni-linux, are legal configuration  
-names, use mips-linux or mipsel-linux instead. These are the configuration  
-names known to other packages, like the Linux kernel sources, and they would  
-otherwise have to be changed for cross-compilation.  
-  
-  
-I'll refer to the target configuration name below with <target>.  
-  
-  
-  
-  
-!!9.7 Installation of GNU Binutils.  
-  
-  
-  
-This is the first and simplest part (at least as long as you're trying to  
-install on any halfway-sane UNIX flavour). Just cd into a directory with  
-enough free space and do the following:  
-  
-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  
-  
-This usually works correctly. However, certain machines using GCC 2.7.x as  
-compiler are known to dump core. This is a known bug in GCC and can be fixed  
-by upgrading the host compiler to GCC 2.8.1 or better.  
-  
-  
-  
-  
-!!9.8 Assert.h  
-  
-  
-  
-Some people have an old assert.h header file installed, probably leftover  
-from an old cross-compiler installation. This file may cause autoconf  
-scripts to fail silently. Assert.h was never necessary and was only installed  
-because of a bug in older GCC versions. Check to see if the file  
-<prefix>/<target>/include/assert.h exists in your installation. If  
-so, just delete the it - it should never have been installed for any version  
-of the cross-compiler and will cause trouble.  
-  
-  
-  
-  
-!!9.9 Installing the kernel sources  
-  
-  
-  
-Installing the kernel sources is simple. Just place them into some directory  
-of your choice and configure them. Configuring them is necessary so that  
-files which are generated by the procedure will be installed. Make sure  
-you enable CONFIG_CROSSCOMPILE near the end of the configuration process.  
-The only problem you may run into is that you may need to install some  
-required GNU programs like bash or have to override the manufacturer-provided  
-versions of programs by placing the GNU versions earlier in the PATH variable.  
-Now, go to the directory <prefix>/<target>/include and create two  
-symbolic links named asm and linux pointing to include/asm rsp. include/linux  
-within your just installed and configured kernel sources. These are  
-necessary such that the necessary header files will be found during the next  
-step.  
-  
-  
-  
-  
-!!9.10 First installation of egcs  
-  
-  
-  
-Now the pain begins. There is a so-called bootstrap problem.  
-In our case, this means that the installation process of egcs needs an already  
-installed glibc, but we cannot compile glibc because we don't have a  
-working cross-compiler yet. Luckily, you'll only have to go through this  
-once when you install a cross-compiler for the first time. Later, when you  
-already have glibc installed, things will be much smoother. So now do:  
-  
-gzip -cd egcs-1.1.2.tar.gz | tar xf -  
-cd egcs-<version>  
-patch -p1 < ../egcs-1.1.2-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"  
-  
-Note that we deliberately don't build gcov, protoize, unprotoize, and the  
-libraries. Gcov doesn't make sense in a cross-compiler environment, and  
-protoize and unprotoize might even overwrite your native programs - this  
-is a bug in the gcc makefiles. Finally, we cannot build the libraries  
-because we don't have glibc installed yet. If everything went successfully,  
-install with:  
-  
-make SUBDIRS="libiberty texinfo gcc" INSTALL_TARGET_MODULES= \  
-LANGUAGES="c" install  
-  
-  
-  
-If you only want the cross-compiler for building the kernel, you're done.  
-Cross-compiling libc is only required to be able to compile user applications.  
-  
-  
-  
-  
-!!9.11 Test what you've done so far  
-  
-  
-  
-Just to make sure that what you've done so far is actually working, you  
-may now try to compile the kernel. Cd to the MIPS kernel's sources and  
-type ``make clean; make dep; make''. If everything went ok do ``make clean''  
-once more to clean the sources.  
-  
-  
-  
-  
-!!9.12 Installing GNU libc  
-  
-  
-  
-''Note: Building glibc 2..6 using a compiler newer than egcs 1..3a is not  
-recommended due to binary compatibility problems which may hit certain  
-software. It's recommended that you either use egcs 1..3a or use the files  
-from a published binary package. Crosscompiling GNU libc is always only the  
-second best solution as certain parts of it will not be compiled when  
-crosscompiling. A proper solution will be documented here as soon as it is  
-available and believed to be stable.'' With this warning given, here's the  
-recipe:  
-  
-gzip -cd glibc-2..6.tar.gz | tar xf -  
-cd glibc-2..6  
-gzip -cd glibc-crypt-2..6.tar.gz | tar xf -  
-gzip -cd glibc-localedata-2..6.tar.gz | tar xf -  
-gzip -cd glibc-linuxthreads-2..6.tar.gz | tar xf -  
-patch -p1 < ../glibc-2..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  
-  
-You now have a compiled GNU libc which still needs to be installed. Do  
-''not'' just type make install. That would overwrite your host  
-system's files with Linux/MIPS-specific files with disastrous effects.  
-Instead, install GNU libc into some other arbitrary directory <somedir>  
-from which we'll move the parts we need for cross-compilation into the  
-actual target directory:  
-  
-make install_root=<somedir> install  
-  
-Now cd into <somedir> and finally install GNU libc manually:  
-  
-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  
-  
-GNU libc also contains extensive online documentation. Your system might  
-already have a version of this documentation installed, so if you don't  
-want to install the info pages, which will save you a less than a megabyte,  
-or already have them installed, skip the next step:  
-  
-cd ../info  
-gzip -9 *.info*  
-find . -name \*.info\* -print | cpio -pumd <prefix>/info  
-  
-If you're not bootstrapping, your installation is now finished.  
-  
-  
-  
-  
-!!9.13 Building egcs again  
-  
-  
-  
-The first attempt of building egcs was stopped by lack of a GNU  
-libc. Since we now have libc installed we can rebuild egcs but this  
-time as complete as a cross-compiler installation can be:  
-  
-gzip -cd egcs-<version>.tar.gz | tar xf -  
-cd egcs-<version>  
-patch -p1 < ../egcs-1.1.2-mips.patch  
-./configure --prefix=<prefix> --target=<target>  
-make LANGUAGES="c c++ objective-c f77"  
-  
-As you can see, the procedure is the same as the first time, with the  
-exception that we dropped the --with-newlib option. This option was  
-necessary to avoid the libgcc build breaking due to the lack of  
-libc. Now install with:  
-  
-make LANGUAGES="c c++ objective-c f77" install  
-  
-You're almost finished. If you think you don't need the Objective C or  
-F77 compilers, you can omit them from above commands. Each will save you about  
-3MB. Do not build gcov, protoize, or unprotoize.  
-  
-  
-  
-  
-!!9.14 Should I build the C++, Objective C or F77 compilers?  
-  
-  
-  
-The answer to this question largely depends on your use of your cross-compiler  
-environment. If you only intend to rebuild the Linux kernel, then you have  
-no need for the full blown setup and can safely omit the Objective C and  
-F77 compilers. You must, however, build the C++ compiler, because building  
-the libraries included with the egcs distribution requires C++.  
-  
-  
-  
-  
-!!9.15 How about float.h?  
-  
-  
-  
-The installation of float.h is no longer necessary. Since about egcs 1..3a,  
-a proper float.h header file will automatically be generated and installed.  
-  
-  
-  
-  
-!!9.16 Known problem when cross-compiling  
-  
-  
-  
-  
-  
-!IRIX crashes  
-  
-  
-Origin 200 running IRIX 6.5.1 may crash when running ``make depend''  
-on the Linux kernel sources. IRIX 6.5 on Indy and IRIX 6.5.4 on  
-Origin 200 are known to work. Further reports that help to isolate  
-the problematic configuration are welcome.  
-  
-  
-  
-  
-!Resource limits on System V based hosts  
-  
-  
-Typical System V-based Unices, like IRIX or Solaris, have limits for  
-the maximum number of arguments to be passed to a child process which  
-may be exceeded when cross-compiling some software like the Linux kernel  
-or GNU libc. For IRIX systems, the maximum length of the argument list  
-defaults to 20KB, while Linux defaults to at least 128KB. This size  
-can be modified by the command ``systune ncargs 131072'' as root.  
-  
-  
-  
-  
-!!9.17 GDB  
-  
-  
-  
-Building GDB as cross-debugger is only of interest to kernel developers. For  
-them, GDB may be a life saver. Such a remote debugging setup always  
-consists of two parts: the remote debugger GDB running on one machine, and  
-the target machine running the Linux/MIPS kernel being debugged. The machines  
-are typically interconnected with a serial line. The target machine's kernel  
-needs to be equipped with a ``debugging stub'' which communicates with the  
-GDB host machine using the remote serial protocol.  
-  
-  
-  
-  
-  
-Depending on the target's architecture, you may have to implement the  
-debugging stub yourself. In general, you'll only have to write very simple  
-routines for the serial line. The task is further simplified by the fact that most  
-machines are using similar serial hardware, typically based on the 8250,  
-16450 or derivatives.  
-  
-  
-  
-  
-  
-  
-  
-  
-  
-----  
-  
-!!10. Related Literature  
-  
-  
-  
-  
-!!10.1 See MIPS Run  
-  
-  
-  
-Author Dominic Sweetman, Publisher Morgan Kaufmann, ISBN 1-55860-410-3.  
-  
-  
-This is intended as a pretty comprehensive guide to programming MIPS,  
-wherever it's different from programming any other 32-bit CPU. It's the  
-first time anyone has tried to write a readable, and comprehensive, explanation  
-and account of the wide range of MIPS CPUs available. It should be very  
-helpful for anyone programming MIPS who isn't insulated by someone else's  
-operating system. Also, the author is a free-unix enthusiast who subscribes  
-to the Linux/MIPS mailing list!  
-  
-  
-John Hennessey, father of the MIPS architecture, was kind enough to write  
-in the foreword: ``... this book is the best combination of completeness  
-and readability of any book on the MIPS architecture ...'';  
-  
-  
-It includes some context about RISC CPUs, a description of the  
-architecture and instruction set, including the "co-processor "  
-instructions used for CPU control; sections on caches, exceptions, memory  
-management, and floating point. There's a detailed assembly language  
-guide, some stuff about porting, and some fairly heavy-duty software  
-examples.  
-  
-  
-Available from:  
-  
-  
-  
-  
-  
-*  
-http://www.algor.co.uk/algor/info/seemipsrun.html (europe)  
-*  
-  
-*  
-http://www.mkp.com/books_catalog/1-55860-410-3.asp (US)  
-*  
-  
-  
-  
-and from good bookshops anywhere. It's 512 pages and costs around  
-$50 in the US, £39.95 in the UK.  
-  
-  
-I'd be inclined to list two other books too, both from Morgan Kaufmann and  
-available from www.mkp.com or any good bookshop:  
-  
-  
-  
-  
-!!10.2 The MIPS Programmer's Handbook  
-  
-  
-  
-Authors Farquhar and Bunce, Publisher Morgan Kaufmann,  
-ISBN 1-55860-297-6.  
-  
-  
-A readable introduction to the practice of programming MIPS at the low  
-level, by the author of PMON. Strengths: lots of examples; weakness:  
-leaves out some big pieces of the architecture (such as memory management,  
-floating point and advanced caches) because they didn't feature in the LSI  
-``embedded'' products this book was meant to partner.  
-  
-  
-  
-  
-!!10.3 Computer Architecture - A Quantitative Approach  
-  
-  
-  
-Authors Hennessy & Patterson, Publisher Morgan Kaufmann,  
-ISBN 1-55860-329-8.  
-  
-  
-The bible of modern computer architecture and a must-read if you want  
-to understand what makes programs run slow or fast. Is it about MIPS?  
-Well, it's mostly about something very ''like'' MIPS... Its sole  
-defect is its size and weight - but unlike most big books it's worth  
-every page.  
-  
-  
-  
-  
-!!10.4 UNIX System V ABI MIPS Processor Supplement  
-  
-  
-  
-By Prentice Hall, Published 05/1991, ISBN -13880-170-3.  
-This book defines many of the MIPS specific technical standards like calling  
-conventions, ELF properties, and much more that is being used by Linux/MIPS.  
-Unfortunately it's out of print. Similarly, the site  
-''"http://www.mipsabi.org/"'' is offline.  
-  
-  
-  
-  
-!!10.5 The mips.com site  
-  
-  
-  
-Under  
-http://www.mips.com/publications there are various PDF  
-documents and data sheets about individual processors.  
-  
-  
-  
-  
-!!10.6 The NEC site  
-  
-  
-  
-NEC Electronics (  
-http://www.necel.com includes complete manuals  
-about their VR41xx processors .  
-  
-  
-  
-----  
+Describe [HowToMIPSHOWTO ] here.