© 2002-2003 University of New South Wales
page maintained by Carl van Schaik (email@example.com)
The L4Ka::Pistachio kernel offers support for the Mips64 architecture.
See l4ka.org for more
information about L4Ka::Pistachio.
Porting the Mips64 architecture to new platforms is fairly simple, the port to the Agenda VR3 was done in a day and a half :-)
- The Mips64 port currently runs on four platforms:
- U4600 - The University of New South Wales' 64-bit experimentation hardware
- IDT R4700 - R4000 based, 64-bit big-endian
- OpenFuel Embedded Realtime Parallel Computing Node (erpcn01)
- IDT 79RC64574 - R5000 based, 64-bit little-endian
- Broadcom Sibyte SB1 (SMP support)
- BCM1250 dual SB-1 MIPS64 core, 64-bit big-endian
- Agenda VR3 PDA
- NEC VR4181 - R4000 based, 64-bit little-endian. Yes 64-bit!
The Mips64 kernel also works on the Sulima simulator.
This is a simple guide on how to get L4Ka::Pistachio compiled for Mips64
1. Get a recent copy of L4Ka::Pistachio
Either get a released version or download the latest public release from CVS.
See here for details
2. Setup a development environment
You will need a Mips64
GCC compiler. You can build a cross-compiler if you are using an
x86/other development machine. You will need at least a mips64-elf
version of binutils and gcc with C++ support.
Put the L4Ka::Pistachio sources in a development directory.
The useful directories are shown below:
|kernel/ || ||L4 Kernel directory|
|kernel/src/ || ||Kernel source code|
|kernel/src/api/v4/ || ||Kernel generic API|
|kernel/src/glue/v4-xxx/|| ||Architecuture API support|
|kernel/src/arch/xxx/ || ||Architecuture specific code|
|kernel/include/ || ||Kernel include headers|
|kernel/kdb/ || ||Kernel debugger|
|user/ || ||L4 User Libraries and Applications|
|user/include/ || ||User code kernel interface headers|
|user/serv/ || ||Example servers|
|user/apps/ || ||Example applications|
|user/contib/elf-loader || ||Bootloader for mips64/arm/alpha/sparc64|
3. Compile the kernel
- change to the kernel source directory.
- # cd /home/dev/l4/pistachio/kernel
- generate a kernel build directory. (Remember to use the FULL path)
it is important to create a separate build directory. You can create
one or more for each architecture/platform
- # cd /home/dev/l4/pistachio/kernel
# make BUILDDIR=/home/dev/l4/build-mips64/kernel
- change to the compiler directory and run "make menuconfig"
- # make BUILDDIR=/home/dev/l4/build-mips64/kernel
- # cd /home/dev/l4/build-mips64/kernel
- # make menuconfig
- goto Hardware->Basic_Architecture and choose MIPS-64
- goto Hardware->Processor_Type and choose the CPU
you want to use
- next, choose the platform and set any Miscellaneous
- goto the Kernel menu and you probably want to
Enable Debugging mode
- in the Debugger menu, enable the debugger
and enable all Trace Settings
- it is well advised to enable Kernel Debugger breakin
- Press 'x' to save your options
- If your compiler is not one of: "mips64-elf-gcc" or "mips64-linux-gcc", then you will
need to export "TOOLPREFIX" so the build process can find your compiler.
And remember to keep your compiler in the path
- eg: export TOOLPREFIX=mips64-l4-elf-
- If all goes well, you can simply run 'make'
4. Compile the user code
Many MIPS based platforms have a boot loader of some form. PMON is a common one, the example below
is for the U4600 which has PMON with network support.
- Copy the mips64-loader in the [contrib/elf-loader] directory of your user build tree to /tftpboot
- Make sure you have a tftp server running
- Set the PMON environment variables, ip_addr etc to the correct values
- type 'boot net'
The kernel should boot and run a basic test application
Alternatvely if you are using Sulima you can boot your
# /home/sulima/u4600 mips64-loader
A contribution to the L4 community from the