AMD64 Architecture© 2005 University of Karlsruhe
page maintained by Jan Stoess (firstname.lastname@example.org)
Supported KernelsThe L4Ka::Pistachio kernel offers support for the AMD64/EM64T architecture (Athlon 64, Opteron, recent Intel Pentium processors, and the Simics simulator). See L4Ka.org for more information about L4Ka::Pistachio.
AMD64 Hardware References
AMD64 Programming References
AMD64 Related Websites
Building Pistachio on an AMD64 processor
KernelThe kernel can be built using GCC 3.3 and higher. The kernel debugger can direct its I/O via the serial line or the keyboard/screen. Be sure to configure your kernel for the appropriate I/O device. The binary distribution includes the kernel configurations for the respective kernel binaries.
User-LevelThe user-level binaries for AMD64 are built by using the --host=amd64 switch. The user-level applications are configured to use the serial port for I/O by default. To use screen I/O, run the configure script with the --without-comport command line option. If you want to use the serial port, you can choose a particular port by either specifying an index (0, 1, 2, or 3), or its physical device address (e.g. 0x3f8), with the --with-comport= command line option.
Booting Pistachio on an AMD64 processorThe kernel can be booted using GRUB and L4Ka::KickStart; latter is part of the kernel distribution. GRUB requires a configuration file which contains all modules to be loaded. Besides the kernel image itself further modules can be loaded. The kernel requires at least sigma0 and the root task. Following an example menu.lst file:
GRUB supports network booting using the TFTP protocol. For more details refer to the corresponding documentations. A ready-to-run GRUB floppy image can be generated and downloaded from here.title=L4Ka::Pistachio kernel=/kickstart module=/amd64-kernel module=/sigma0 module=/roottask
After booting, GRUB starts L4Ka::KickStart which then configures the kernel configuration page using the boot-loader provided configuration information. Afterwards, L4Ka::Kickstart hands over control to the kernel which bootstraps sigma0, sigma1 (if available), and the root task.
Runtime OutputThe kernel prints diagnostic information to the screen (if the kernel debugger is enabled). The information appears as "spinning" characters in the upper right corner, one row per processor. The character will change upon kernel events. The events, in reverse display order (right to left), are:
If the kernel prints the error message "CPU does not support all features (XYZ) -- halting" then the processor does not support required features to operate the kernel. XYZ represents a feature mask, which is validated against the CPUID instruction. When the kernel is configured for verbose init, it will print cryptic strings representing the missing features (the cryptic strings correlate to features enumerated in the ia32 manuals). To solve the problem, configure the kernel to use an older generation processor.idler invocation timer interrupt hardware interrupts end-of-timeslice
Missing Features / Known Bugs