| |
L4Ka::Pistachio/alpha
page maintained by Adam Wiggins (awiggins@cse.unsw.edu.au)
Welcome to the home of the L4Ka::Pistachio kernel for the Alpha.
Supported Hardware
The kernel has been extensively tested on the DEC Miata (Alpha 21164)
system. Systems utilizing the Tsunami chipset (Compaq DS20, API
UP1000, etc.) are also supported, however these platforms have not
been extensively tested.
Tested Hardware
We have limited access to Alpha hardware.
The following systems have been tested:
| Miata 433Mhz 21164 |
Complete support |
| Compaq DS20 21264 |
The kernel runs, however has only been lightly tested. |
The kernel should be trivially portable to any Alpha system with a
conforming console.
Performance
We have not subjected the kernel to large scale benchmarks, however we
have experimental IPC times using an assembly fastpath of
approximately 130 cycles each way (measured on the Miata system).
We have subjected the kernel to high loads using the Mungi Operating System.
Building and Booting
The kernel is known to work with GCC 3.2.1 and binutils 2.13, however GCC
version 2.95.X may also work. The GCC and binutils target used was alpha-linux.
To build a bootable kernel, follow the directions to configure and build the kernel,
then configure and build the user applications. When this process has finished, the
directory contrib/elf-loader/ will contain a BOOTP file called alpha-loader.bin.
Copy this file to the relevant directory and boot away!
Boot example
The following is an example of booting the supplied
image:
ff.fe.fd.fc.fb.fa.f9.f8.f7.f6.f5.CPU 0 speed is 2.31 ns (433MHz)
ef.ee.ed.ec.eb.f4.ea.e9.e8.e7.e6.e5.e4.
Digital Personal WorkStation 433au
Console V7.2-1 Mar 6 2000 14:47:02
>>>
>>>
>>>b -fi pingpong.sjw ewa0
(boot ewa0.0.0.3.0 -file pingpong.sjw -flags 0)
Trying BOOTP boot.
Received BOOTP Packet File Name is:
local inet address: XXX.XXX.XXX.XXX
remote inet address: XXX.XXX.XXX.XXX
TFTP Read File Name: pingpong.sjw
netmask = 255.255.255.0
Server is NOT on same subnet as client...
Router used = XXX.XXX.XXX.1
.......
bootstrap code read in
base = 1d8000, image_start = 0, image_bytes = 60ba8
initializing HWRPB at 2000
initializing page table at 1ca000
initializing machine state
setting affinity to the primary CPU
jumping to bootstrap code
elf-loader: Starting.
elf-loader: switching to OSF/1 PALcode OK: version 1.22
install_module: Installing root (0x20050f00, 0x20060abf)
install_module: root: (0xe00000, 0x2f08)
install_module: Skipping sigma1
install_module: Installing sigma0 (0x2003e9f0, 0x20050ef5)
install_module: sigma0: (0xd00000, 0x4910)
install_module: Installing kernel (0x20002e10, 0x2003e9e6)
install_module: kernel: (0x310000, 0x23bc0)
elf-loader: Looking for KIP at fffffc0000326000
elf-loader: entry is 0xfffffc0000317418
elf-loader: Jumping to kernel
Mask is 0xff 0xff
L4Ka::Pistachio - built on May 2 2003 18:18:16 by sjw@escher using gcc version 3.2.1
Kernel configuration:
VPT area: 0xfffffe0000000000 -> 0xfffffe0200000000 (0x200000000)
KTCB area: 0xfffffe0400000000 -> 0xfffffe0410000000 (0x10000000)
System configuration:
Timer frequency : 1024Hz
Cycle counter frequency: 432900432Hz
kip_area = 3fffffbe0d0, utcb_area = 800000e0, utcb_size = 400
local id = 3fffffc0000, pager UTCB = 3fffffc0400
Please select ipc type:
1: INTER-AS
2: INTRA-AS (IPC)
3: INTRA-AS (LIPC)
4: XCPU
Benchmarking Inter-AS IPC...
IPC ( 0 MRs): 229.71 cycles, 0.00us, 0.00 instrs
IPC ( 4 MRs): 233.00 cycles, 0.00us, 0.00 instrs
IPC ( 8 MRs): 229.16 cycles, 0.00us, 0.00 instrs
IPC (12 MRs): 955.95 cycles, 0.00us, 0.00 instrs
IPC (16 MRs): 1112.02 cycles, 0.00us, 0.00 instrs
IPC (20 MRs): 1259.90 cycles, 0.00us, 0.00 instrs
IPC (24 MRs): 1404.60 cycles, 0.00us, 0.00 instrs
IPC (28 MRs): 1591.21 cycles, 0.00us, 0.00 instrs
IPC (32 MRs): 1721.75 cycles, 0.00us, 0.00 instrs
IPC (36 MRs): 1871.24 cycles, 0.00us, 0.00 instrs
IPC (40 MRs): 2012.68 cycles, 0.00us, 0.00 instrs
IPC (44 MRs): 2142.05 cycles, 0.00us, 0.00 instrs
IPC (48 MRs): 2284.36 cycles, 0.00us, 0.00 instrs
IPC (52 MRs): 2461.13 cycles, 0.00us, 0.00 instrs
IPC (56 MRs): 2575.84 cycles, 0.00us, 0.00 instrs
IPC (60 MRs): 2746.75 cycles, 0.00us, 0.00 instrs
What now?
g - Continue
q - Quit/New measurement
ESC - Enter KDB
Missing Features and Known Bugs
The following are known issues with the Alpha L4Ka::Pistachio
kernel:
- The following system calls are unimplemented:
- SystemClock
- MemoryControl Note that this
system call is not required for the Alpha architecture.
- ProcessorControl
- Lipc Use the Ipc system call
instead.
- SMP is not supported.
- Exceptions are not delivered to the user. Any exception which
cannot be handled by the kernel causes the debugger to be invoked.
- The IPC path does not support long IPC.
- Some code cleaning is necessary; sections of the implementation
are still first generation.
|