[openfirmware] r1053 - in cpu/x86/pc: . biosload lxdevel neptune olpc

svn at openfirmware.info svn at openfirmware.info
Mon Dec 29 11:50:20 CET 2008


Author: wmb
Date: 2008-12-29 11:50:20 +0100 (Mon, 29 Dec 2008)
New Revision: 1053

Added:
   cpu/x86/pc/biosload/config-grub.fth
   cpu/x86/pc/biosload/config-kitchensink.fth
Modified:
   cpu/x86/pc/biosload/HOWTO_QEMU.txt
   cpu/x86/pc/biosload/addrs.fth
   cpu/x86/pc/biosload/config-coreboot.fth
   cpu/x86/pc/biosload/config-i945.fth
   cpu/x86/pc/biosload/config-usbkey.fth
   cpu/x86/pc/biosload/config-virtualbox.fth
   cpu/x86/pc/biosload/config.fth
   cpu/x86/pc/biosload/ofw.bth
   cpu/x86/pc/elfhdr.fth
   cpu/x86/pc/lxdevel/addrs.fth
   cpu/x86/pc/lxdevel/config.fth
   cpu/x86/pc/neptune/config.fth
   cpu/x86/pc/olpc/addrs.fth
   cpu/x86/pc/olpc/banner.fth
   cpu/x86/pc/olpc/config.fth
   cpu/x86/pc/olpc/smallconfig.fth
   cpu/x86/pc/resetend.fth
Log:
Big cleanup of the biosload configuration files, fixing the GRUB
build in the process.  The following build variants now appear to
work:  OLPC, usbkey, QEMU/floppy, QEMU/ROM, GRUB(also etherboot).


Modified: cpu/x86/pc/biosload/HOWTO_QEMU.txt
===================================================================
--- cpu/x86/pc/biosload/HOWTO_QEMU.txt	2008-12-28 10:49:29 UTC (rev 1052)
+++ cpu/x86/pc/biosload/HOWTO_QEMU.txt	2008-12-29 10:50:20 UTC (rev 1053)
@@ -14,7 +14,6 @@
  $ cd cpu/x86/pc/biosload/
  $ cp config-virtualbox.fth config.fth
  $ cd build
- $ cd cpu/x86/pc/biosload/build
  $ make floppyofw.img
 
 The "config-virtualbox.fth" configuration is known to work with QEMU.

Modified: cpu/x86/pc/biosload/addrs.fth
===================================================================
--- cpu/x86/pc/biosload/addrs.fth	2008-12-28 10:49:29 UTC (rev 1052)
+++ cpu/x86/pc/biosload/addrs.fth	2008-12-29 10:50:20 UTC (rev 1053)
@@ -8,8 +8,8 @@
 \ early startup code - the first few instructions in the image -
 \ copies it to get it out of the way of things like OS load areas.
 
-[ifdef] linuxbios-loaded
-  [ifdef] qemu-loaded
+[ifdef] coreboot-loaded
+  [ifdef] coreboot-qemu
     \ when running in qemu OFW is not in ROM but loaded to RAM by elfboot
     h# 198.0080 constant dropin-base  \ Location of payload in RAM
     dropin-base h# 20 +  constant ResetBase	\ Location of "reset" dropin in RAM

Modified: cpu/x86/pc/biosload/config-coreboot.fth
===================================================================
--- cpu/x86/pc/biosload/config-coreboot.fth	2008-12-28 10:49:29 UTC (rev 1052)
+++ cpu/x86/pc/biosload/config-coreboot.fth	2008-12-29 10:50:20 UTC (rev 1053)
@@ -5,13 +5,11 @@
 \ that control the boot device to boot vmlinuz from drive A.
 create pc-linux
 
-\ - ELF format (no pheader) - ROM - LinuxBIOS direct
-create linuxbios-loaded
+\ - ELF format (no pheader) - ROM - Coreboot direct
+create coreboot-loaded
+create coreboot-qemu       \ Coreboot QEMU variant
 
-\ Load and run in qemu
-create qemu-loaded 
-
-\ LinuxBIOS+OFW under QEMU currently does not do VGA right
+\ Coreboot+OFW under QEMU currently does not do VGA right
 create serial-console
 
 \ In virtual mode, OFW runs with the MMU on.  The advantages are

Added: cpu/x86/pc/biosload/config-grub.fth
===================================================================
--- cpu/x86/pc/biosload/config-grub.fth	                        (rev 0)
+++ cpu/x86/pc/biosload/config-grub.fth	2008-12-29 10:50:20 UTC (rev 1053)
@@ -0,0 +1,50 @@
+\ See license at end of file
+purpose: Establish configuration definitions
+
+\ --- The environment that "boots" OFW ---
+\ - Image Format - Example Media - previous stage bootloader
+
+\ - ELF format w/ Multiboot signature - various media - GRUB
+create grub-loaded
+
+create debug-startup
+\ create serial-console
+create resident-packages
+create addresses-assigned  \ Don't reassign PCI addresses
+\ create virtual-mode
+\ create use-root-isa
+create use-timestamp-counter
+create use-pci-isa
+create use-isa-ide
+create use-ega
+create use-elf
+\ create use-ne2000
+create use-watch-all
+create use-null-nvram
+\ create no-floppy-node
+
+fload ${BP}/cpu/x86/pc/biosload/addrs.fth
+
+\ LICENSE_BEGIN
+\ Copyright (c) 2006 FirmWorks
+\ 
+\ Permission is hereby granted, free of charge, to any person obtaining
+\ a copy of this software and associated documentation files (the
+\ "Software"), to deal in the Software without restriction, including
+\ without limitation the rights to use, copy, modify, merge, publish,
+\ distribute, sublicense, and/or sell copies of the Software, and to
+\ permit persons to whom the Software is furnished to do so, subject to
+\ the following conditions:
+\ 
+\ The above copyright notice and this permission notice shall be
+\ included in all copies or substantial portions of the Software.
+\ 
+\ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+\ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+\ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+\ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+\ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+\ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+\ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+\
+\ LICENSE_END

Modified: cpu/x86/pc/biosload/config-i945.fth
===================================================================
--- cpu/x86/pc/biosload/config-i945.fth	2008-12-28 10:49:29 UTC (rev 1052)
+++ cpu/x86/pc/biosload/config-i945.fth	2008-12-29 10:50:20 UTC (rev 1053)
@@ -1,81 +1,13 @@
 \ See license at end of file
 purpose: Establish configuration definitions - version for i945 chipset
 
-\ create pc		\ Demo version for generic PC
-\ create pc-linux	\ Demo version for generic PC and Linux
-\ create pc-serial	\ Demo version for generic PC
-
 \ --- The environment that "boots" OFW ---
 \ - Image Format - Example Media - previous stage bootloader
 
-\ - (Syslinux) COM32 format - USB Key w/ FAT FS - Syslinux
-\ create syslinux-loaded
-
-\ - Linux kernel format - USB Key w/ FAT FS - LinuxBIOS w/ stripped Linux payload
-\ create bzimage-loaded
-
-\ - ELF format w/ Multiboot signature - various - GRUB
-\ create grub-loaded
-\ create etherboot-variant  \ Enable additional tweaks for Etherboot
-
-\ - ELF format (no pheader) - ROM - LinuxBIOS direct
-\ create linuxbios-loaded
-
-\ Load and run in qemu
-\ create qemu-loaded 
-
 \ Load from ROM by preOF code from Intel
 create preof-loaded 
 
-[ifdef] pc-serial
 create serial-console
-create pc
-[then]
-
-[ifdef] qemu-loaded  \ LinuxBIOS+OFW under QEMU currently doesn't do VGA right
-create serial-console
-[then]
-
-[ifdef] etherboot-variant
-create debug-startup
-create serial-console
-[then]
-
-[ifdef] pc-linux
-\ In virtual mode, OFW runs with the MMU on.  The advantages are
-\ that OFW can automatically locate itself out of the way, at the
-\ top of physical memory, it can dynamically allocate exactly as
-\ much physical memory as it needs, and it can remain alive after
-\ the OS starts.  The disadvantage is that it is more confusing -
-\ you always have to be aware of the distinction between virtual
-\ and physical addresses.
-
-\ Here we use virtual mode for Linux, so that we can debug past
-\ the point where Linux starts using the MMU.  It isn't strictly
-\ necessary to use virtual mode if you just want to boot Linux
-\ and then have OFW disappear.
-create virtual-mode
-create pc
-create linux-support
-[then]
-
-[ifdef] pc
-\ create pseudo-nvram
-create resident-packages
-create addresses-assigned  \ Don't reassign PCI addresses
-\ create virtual-mode
-create use-root-isa
-create use-isa-ide
-create use-ega
-create use-elf
-create use-ne2000
-create use-watch-all
-create use-null-nvram
-create no-floppy-node
-[then]
-
-[ifdef] preof-loaded
-create serial-console
 create use-timestamp-counter
 create resident-packages
 create addresses-assigned  \ Don't reassign PCI addresses
@@ -86,9 +18,9 @@
 create use-watch-all
 create use-null-nvram
 create no-floppy-node
-[then]
 
 fload ${BP}/cpu/x86/pc/biosload/addrs.fth
+
 \ LICENSE_BEGIN
 \ Copyright (c) 2006 FirmWorks
 \ 

Added: cpu/x86/pc/biosload/config-kitchensink.fth
===================================================================
--- cpu/x86/pc/biosload/config-kitchensink.fth	                        (rev 0)
+++ cpu/x86/pc/biosload/config-kitchensink.fth	2008-12-29 10:50:20 UTC (rev 1053)
@@ -0,0 +1,147 @@
+\ See license at end of file
+purpose: Establish configuration definitions
+
+\ create pc		\ Demo version for generic PC
+\ create pc-linux	\ Demo version for generic PC and Linux
+\ create pc-serial	\ Demo version for generic PC
+
+\ --- The environment that "boots" OFW ---
+\ - Image Format - Example Media - previous stage bootloader
+
+\ - (Syslinux) COM32 format - USB Key w/ FAT FS - Syslinux
+\ create syslinux-loaded
+
+\ - Linux kernel format - USB Key w/ FAT FS - Coreboot w/ stripped Linux payload
+\ create bzimage-loaded
+
+\ - ELF format w/ Multiboot signature - various - GRUB
+create grub-loaded
+
+\ - ELF format (no pheader) - Coreboot
+\ create coreboot-loaded
+
+\ create coreboot-qemu  \ Variant
+
+\ Load and run in VirtualBox
+\ create virtualbox-loaded 
+
+\ Load from ROM by preOF code from Intel
+\ create preof-loaded 
+
+[ifdef] pc-serial
+create serial-console
+create pc
+[then]
+
+[ifdef] coreboot-qemu  \ Coreboot+OFW under QEMU currently does not do VGA right
+create serial-console
+[then]
+
+[ifdef] grub-loaded
+create debug-startup
+\ create serial-console
+create resident-packages
+create addresses-assigned  \ Don't reassign PCI addresses
+\ create virtual-mode
+\ create use-root-isa
+create use-timestamp-counter
+create use-pci-isa
+create use-isa-ide
+create use-ega
+create use-elf
+\ create use-ne2000
+create use-watch-all
+create use-null-nvram
+\ create no-floppy-node
+[then]
+
+[ifdef] virtualbox-loaded
+\ create debug-startup
+\ create serial-console
+create resident-packages
+create addresses-assigned  \ Don't reassign PCI addresses
+\ create virtual-mode
+\ create use-root-isa
+create use-timestamp-counter
+create use-pci-isa
+create use-isa-ide
+create use-ega
+create use-elf
+\ create use-ne2000
+create use-watch-all
+create use-null-nvram
+\ create no-floppy-node
+[then]
+
+[ifdef] pc-linux
+\ In virtual mode, OFW runs with the MMU on.  The advantages are
+\ that OFW can automatically locate itself out of the way, at the
+\ top of physical memory, it can dynamically allocate exactly as
+\ much physical memory as it needs, and it can remain alive after
+\ the OS starts.  The disadvantage is that it is more confusing -
+\ you always have to be aware of the distinction between virtual
+\ and physical addresses.
+
+\ Here we use virtual mode for Linux, so that we can debug past
+\ the point where Linux starts using the MMU.  It is not strictly
+\ necessary to use virtual mode if you just want to boot Linux
+\ and then have OFW disappear.
+create virtual-mode
+create pc
+create linux-support
+[then]
+
+[ifdef] pc
+\ create pseudo-nvram
+create resident-packages
+create addresses-assigned  \ Don't reassign PCI addresses
+\ create virtual-mode
+create use-root-isa
+create use-isa-ide
+create use-ega
+create use-elf
+create use-ne2000
+create use-watch-all
+create use-null-nvram
+create no-floppy-node
+[then]
+
+[ifdef] preof-loaded
+create serial-console
+create use-timestamp-counter
+create resident-packages
+create addresses-assigned  \ Don't reassign PCI addresses
+\ create virtual-mode
+create use-root-isa
+create use-isa-ide
+create use-elf
+create use-watch-all
+create use-null-nvram
+create no-floppy-node
+[then]
+
+fload ${BP}/cpu/x86/pc/biosload/addrs.fth
+
+\ LICENSE_BEGIN
+\ Copyright (c) 2006 FirmWorks
+\ 
+\ Permission is hereby granted, free of charge, to any person obtaining
+\ a copy of this software and associated documentation files (the
+\ "Software"), to deal in the Software without restriction, including
+\ without limitation the rights to use, copy, modify, merge, publish,
+\ distribute, sublicense, and/or sell copies of the Software, and to
+\ permit persons to whom the Software is furnished to do so, subject to
+\ the following conditions:
+\ 
+\ The above copyright notice and this permission notice shall be
+\ included in all copies or substantial portions of the Software.
+\ 
+\ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+\ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+\ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+\ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+\ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+\ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+\ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+\
+\ LICENSE_END

Modified: cpu/x86/pc/biosload/config-usbkey.fth
===================================================================
--- cpu/x86/pc/biosload/config-usbkey.fth	2008-12-28 10:49:29 UTC (rev 1052)
+++ cpu/x86/pc/biosload/config-usbkey.fth	2008-12-29 10:50:20 UTC (rev 1053)
@@ -1,65 +1,15 @@
 \ See license at end of file
 purpose: Configuration for loading from a USB key via Syslinux
 
-\ create pc		\ Demo version for generic PC
-\ create pc-linux	\ Demo version for generic PC and Linux
-create pc-serial	\ Demo version for generic PC
-
 \ --- The environment that "boots" OFW ---
 \ - Image Format - Example Media - previous stage bootloader
 
 \ - (Syslinux) COM32 format - USB Key w/ FAT FS - Syslinux
 create syslinux-loaded
 
-\ - Linux kernel format - USB Key w/ FAT FS - LinuxBIOS w/ stripped Linux payload
-\ create bzimage-loaded
-
-\ - ELF format w/ Multiboot signature - various - GRUB
-\ create grub-loaded
-\ create etherboot-variant  \ Enable additional tweaks for Etherboot
-
-\ - ELF format (no pheader) - ROM - LinuxBIOS direct
-\ create linuxbios-loaded
-
-\ Load and run in qemu
-\ create qemu-loaded 
-
-\ Load from ROM by preOF code from Intel
-\ create preof-loaded 
-
-[ifdef] pc-serial
 create serial-console
 create pc
-[then]
 
-[ifdef] qemu-loaded  \ LinuxBIOS+OFW under QEMU currently doesn't do VGA right
-create serial-console
-[then]
-
-[ifdef] etherboot-variant
-create debug-startup
-create serial-console
-[then]
-
-[ifdef] pc-linux
-\ In virtual mode, OFW runs with the MMU on.  The advantages are
-\ that OFW can automatically locate itself out of the way, at the
-\ top of physical memory, it can dynamically allocate exactly as
-\ much physical memory as it needs, and it can remain alive after
-\ the OS starts.  The disadvantage is that it is more confusing -
-\ you always have to be aware of the distinction between virtual
-\ and physical addresses.
-
-\ Here we use virtual mode for Linux, so that we can debug past
-\ the point where Linux starts using the MMU.  It isn't strictly
-\ necessary to use virtual mode if you just want to boot Linux
-\ and then have OFW disappear.
-create virtual-mode
-create pc
-create linux-support
-[then]
-
-[ifdef] pc
 \ create pseudo-nvram
 create resident-packages
 create addresses-assigned  \ Don't reassign PCI addresses
@@ -72,23 +22,9 @@
 create use-watch-all
 create use-null-nvram
 create no-floppy-node
-[then]
 
-[ifdef] preof-loaded
-create serial-console
-create use-timestamp-counter
-create resident-packages
-create addresses-assigned  \ Don't reassign PCI addresses
-\ create virtual-mode
-create use-root-isa
-create use-isa-ide
-create use-elf
-create use-watch-all
-create use-null-nvram
-create no-floppy-node
-[then]
-
 fload ${BP}/cpu/x86/pc/biosload/addrs.fth
+
 \ LICENSE_BEGIN
 \ Copyright (c) 2006 FirmWorks
 \ 

Modified: cpu/x86/pc/biosload/config-virtualbox.fth
===================================================================
--- cpu/x86/pc/biosload/config-virtualbox.fth	2008-12-28 10:49:29 UTC (rev 1052)
+++ cpu/x86/pc/biosload/config-virtualbox.fth	2008-12-29 10:50:20 UTC (rev 1053)
@@ -1,45 +1,12 @@
 \ See license at end of file
 purpose: Establish configuration definitions
 
-\ create pc		\ Demo version for generic PC
-\ create pc-linux	\ Demo version for generic PC and Linux
-\ create pc-serial	\ Demo version for generic PC
-
 \ --- The environment that "boots" OFW ---
 \ - Image Format - Example Media - previous stage bootloader
 
-\ - (Syslinux) COM32 format - USB Key w/ FAT FS - Syslinux
-\ create syslinux-loaded
-
-\ - Linux kernel format - USB Key w/ FAT FS - LinuxBIOS w/ stripped Linux payload
-\ create bzimage-loaded
-
-\ - ELF format w/ Multiboot signature - various - GRUB
-\ create grub-loaded
-\ create etherboot-variant  \ Enable additional tweaks for Etherboot
-
-\ - ELF format (no pheader) - ROM - LinuxBIOS direct
-\ create linuxbios-loaded
-
-\ Load and run in qemu
-\ create qemu-loaded 
-
-\ Load and run in VirtualBox
+\ Load and run in VirtualBox (also works for other emulators)
 create virtualbox-loaded 
 
-\ Load from ROM by preOF code from Intel
-\ create preof-loaded 
-
-[ifdef] pc-serial
-create serial-console
-create pc
-[then]
-
-[ifdef] qemu-loaded  \ LinuxBIOS+OFW under QEMU currently does not do VGA right
-create serial-console
-[then]
-
-[ifdef] virtualbox-loaded
 \ create debug-startup
 \ create serial-console
 create resident-packages
@@ -55,60 +22,7 @@
 create use-watch-all
 create use-null-nvram
 \ create no-floppy-node
-[then]
 
-[ifdef] etherboot-variant
-create debug-startup
-create serial-console
-[then]
-
-[ifdef] pc-linux
-\ In virtual mode, OFW runs with the MMU on.  The advantages are
-\ that OFW can automatically locate itself out of the way, at the
-\ top of physical memory, it can dynamically allocate exactly as
-\ much physical memory as it needs, and it can remain alive after
-\ the OS starts.  The disadvantage is that it is more confusing -
-\ you always have to be aware of the distinction between virtual
-\ and physical addresses.
-
-\ Here we use virtual mode for Linux, so that we can debug past
-\ the point where Linux starts using the MMU.  It is not strictly
-\ necessary to use virtual mode if you just want to boot Linux
-\ and then have OFW disappear.
-create virtual-mode
-create pc
-create linux-support
-[then]
-
-[ifdef] pc
-\ create pseudo-nvram
-create resident-packages
-create addresses-assigned  \ Don't reassign PCI addresses
-\ create virtual-mode
-create use-root-isa
-create use-isa-ide
-create use-ega
-create use-elf
-create use-ne2000
-create use-watch-all
-create use-null-nvram
-create no-floppy-node
-[then]
-
-[ifdef] preof-loaded
-create serial-console
-create use-timestamp-counter
-create resident-packages
-create addresses-assigned  \ Don't reassign PCI addresses
-\ create virtual-mode
-create use-root-isa
-create use-isa-ide
-create use-elf
-create use-watch-all
-create use-null-nvram
-create no-floppy-node
-[then]
-
 fload ${BP}/cpu/x86/pc/biosload/addrs.fth
 
 \ LICENSE_BEGIN

Modified: cpu/x86/pc/biosload/config.fth
===================================================================
--- cpu/x86/pc/biosload/config.fth	2008-12-28 10:49:29 UTC (rev 1052)
+++ cpu/x86/pc/biosload/config.fth	2008-12-29 10:50:20 UTC (rev 1053)
@@ -1,45 +1,12 @@
 \ See license at end of file
 purpose: Establish configuration definitions
 
-\ create pc		\ Demo version for generic PC
-\ create pc-linux	\ Demo version for generic PC and Linux
-\ create pc-serial	\ Demo version for generic PC
-
 \ --- The environment that "boots" OFW ---
 \ - Image Format - Example Media - previous stage bootloader
 
-\ - (Syslinux) COM32 format - USB Key w/ FAT FS - Syslinux
-\ create syslinux-loaded
-
-\ - Linux kernel format - USB Key w/ FAT FS - LinuxBIOS w/ stripped Linux payload
-\ create bzimage-loaded
-
-\ - ELF format w/ Multiboot signature - various - GRUB
-\ create grub-loaded
-\ create etherboot-variant  \ Enable additional tweaks for Etherboot
-
-\ - ELF format (no pheader) - ROM - LinuxBIOS direct
-\ create linuxbios-loaded
-
-\ Load and run in qemu
-\ create qemu-loaded 
-
-\ Load and run in VirtualBox
+\ Load and run in VirtualBox (also works for other emulators)
 create virtualbox-loaded 
 
-\ Load from ROM by preOF code from Intel
-\ create preof-loaded 
-
-[ifdef] pc-serial
-create serial-console
-create pc
-[then]
-
-[ifdef] qemu-loaded  \ LinuxBIOS+OFW under QEMU currently does not do VGA right
-create serial-console
-[then]
-
-[ifdef] virtualbox-loaded
 \ create debug-startup
 \ create serial-console
 create resident-packages
@@ -55,60 +22,7 @@
 create use-watch-all
 create use-null-nvram
 \ create no-floppy-node
-[then]
 
-[ifdef] etherboot-variant
-create debug-startup
-create serial-console
-[then]
-
-[ifdef] pc-linux
-\ In virtual mode, OFW runs with the MMU on.  The advantages are
-\ that OFW can automatically locate itself out of the way, at the
-\ top of physical memory, it can dynamically allocate exactly as
-\ much physical memory as it needs, and it can remain alive after
-\ the OS starts.  The disadvantage is that it is more confusing -
-\ you always have to be aware of the distinction between virtual
-\ and physical addresses.
-
-\ Here we use virtual mode for Linux, so that we can debug past
-\ the point where Linux starts using the MMU.  It is not strictly
-\ necessary to use virtual mode if you just want to boot Linux
-\ and then have OFW disappear.
-create virtual-mode
-create pc
-create linux-support
-[then]
-
-[ifdef] pc
-\ create pseudo-nvram
-create resident-packages
-create addresses-assigned  \ Don't reassign PCI addresses
-\ create virtual-mode
-create use-root-isa
-create use-isa-ide
-create use-ega
-create use-elf
-create use-ne2000
-create use-watch-all
-create use-null-nvram
-create no-floppy-node
-[then]
-
-[ifdef] preof-loaded
-create serial-console
-create use-timestamp-counter
-create resident-packages
-create addresses-assigned  \ Don't reassign PCI addresses
-\ create virtual-mode
-create use-root-isa
-create use-isa-ide
-create use-elf
-create use-watch-all
-create use-null-nvram
-create no-floppy-node
-[then]
-
 fload ${BP}/cpu/x86/pc/biosload/addrs.fth
 
 \ LICENSE_BEGIN

Modified: cpu/x86/pc/biosload/ofw.bth
===================================================================
--- cpu/x86/pc/biosload/ofw.bth	2008-12-28 10:49:29 UTC (rev 1052)
+++ cpu/x86/pc/biosload/ofw.bth	2008-12-29 10:50:20 UTC (rev 1053)
@@ -33,21 +33,16 @@
 
 [ifdef] grub-loaded
   fload ${BP}/cpu/x86/pc/elfhdr.fth
-  [ifdef] etherboot-variant
-    .( --- Saving as ofwnet.elf - GRUB multiboot format) cr
-    writing ofwnet.elf
-  [else]
     .( --- Saving as ofwgrub.elf - GRUB multiboot format) cr
     writing ofwgrub.elf
-  [then]
   elf-header /elf-header  ofd @ fputs
 [then]
 
-[ifdef] linuxbios-loaded
-  .( --- Saving as ofwlb.elf - LinuxBIOS payload format) cr
+[ifdef] coreboot-loaded
+  .( --- Saving as ofwlb.elf - Coreboot payload format) cr
   fload ${BP}/cpu/x86/pc/elfhdr.fth
   writing ofwlb.elf
-  [ifdef] qemu-loaded
+  [ifdef] coreboot-qemu
     elf-header /elf-header ofd @ fputs
   [else]
     elf-header /elf-header  0  " elf-header"  write-dropin
@@ -62,6 +57,7 @@
 [then]
 
 [ifdef] bzimage-loaded
+  \ - Linux kernel format - USB Key w/ FAT FS - Coreboot w/ stripped Linux payload
   .( --- Saving as ofw.bzi - Linux kernel format) cr
   fload ${BP}/cpu/x86/pc/bzhdr.fth
   writing ofw.bzi
@@ -137,15 +133,14 @@
    " ${BP}/ofw/termemu/cp881-16.obf"            " font"        $add-deflated-dropin
 [then]
 
-
 [ifdef] grub-loaded
-   ofd @ fsize   pad !      \ file size; store in memory for convenience below
+   ofd @ fsize h# 60 -  pad !      \ file size; store in memory for convenience below
    h# 44 ofd @ fseek        \ Seek to file size field; see elfhdr.bth
    pad 4 ofd @ fputs        \ Patch file size
    pad 4 ofd @ fputs        \ Patch memory size
 [then]
 
-[ifdef] qemu-loaded
+[ifdef] coreboot-qemu
    ofd @ fsize pad !        \ file size; store in memory for convenience below
    h# 44 ofd @ fseek        \ Seek to file size field; see elfhdr.bth
    pad 4 ofd @ fputs        \ Patch file size

Modified: cpu/x86/pc/elfhdr.fth
===================================================================
--- cpu/x86/pc/elfhdr.fth	2008-12-28 10:49:29 UTC (rev 1052)
+++ cpu/x86/pc/elfhdr.fth	2008-12-29 10:50:20 UTC (rev 1053)
@@ -1,6 +1,43 @@
 \ See license at end of file
 purpose: Create an ELF format 
 
+\ This handles several different loader cases
+
+0 value #pheaders
+0 value elf-entry
+0 value file-offset
+0 value elf-addr
+
+[ifdef] grub-loaded
+\ For GRUB, we want to copy the stuff after the ELF headers and the Multiboot
+\ header to the final RAM location (dropin-base), so OFW sees just the dropins.
+\ The start address is just after the first dropin header.
+
+dropin-base  h# 20 + to elf-entry   \ Skip OBMD header in RAM copy
+1 to #pheaders                      \ The pheader causes the image to be copied to RAM
+h# 54 h# 0c +  to file-offset       \ Copy start after pheader + multiboot header (0c)
+dropin-base to elf-addr             \ Copy file image directly to dropin-base
+[then]
+
+[ifdef] coreboot-loaded
+  [ifdef] coreboot-qemu
+    \ For coreboot under QEMU, we want to copy everything, including the ELF headers.
+    \ We want the ELF headers to be in memory, but Forth shouldn't see them, so we
+    \ put the headers before dropin-base
+
+    dropin-base h# 20 +  to elf-entry  \ Skip OBMD header in RAM copy
+    1 to #pheaders                     \ The pheader causes the image to be copied to RAM
+    0 to file-offset                   \ Copy the whole thing, don't skip the ELF headers
+    dropin-base h# 80 - to elf-addr    \ Copied headers will precede dropin-base
+  [else]
+    \ For coreboot running from ROM, we can leave everything in ROM, no need to copy,
+    \ so there's no need for a pheader.
+
+    dropin-base  h# 80 + h# 20 +  to elf-entry  \ Entry is after ELF + OBMD headers
+    0 to #pheaders                     \ No pheaders; we'll use the ROM copy of the dropins
+  [then]
+[then]
+
 create elf-header
   h# 7f c,  char E c,  char L c,  char F c,
   1            c,  \ 4 
@@ -12,88 +49,42 @@
   2            w,  \ 0x10 object file type ET_EXEC
   3            w,  \ 0x12 architecture EM_386
   1            l,  \ 0x14 object file version EV_CURRENT
-
-  \ Skip this ELF dropin (80) + the OBMD header of the next dropin (20)
-[ifdef] etherboot-variant
-   \ elf-header is not a dropin, so we only need to skip OBMD header of reset
-   \ we adjust the load-address below at position 0x40
-  dropin-base  h# 20 +  l,  \ 0x18 entry point virtual address
-[then]
-[ifdef] qemu-loaded
-   \ skip OBMD header but keep elf-header because elfboot in LinuxBIOS needs it
-   dropin-base h# 20 +  l, \ 0x18 entry point virtual address
-[else]
-   \ Skip this ELF dropin (80) + the OBMD header of the next dropin (20)
-  dropin-base  h# 80 + h# 20 +  l,  \ 0x18 entry point virtual address
-[then]
+  elf-entry    l,  \ 0x18 entry point virtual address
   h# 34        l,  \ 0x1c program header file offset
   0            l,  \ 0x20 section header file offset
   0            l,  \ 0x24 flags
   h# 34        w,  \ 0x28 ELF header size
   h# 20        w,  \ 0x2a program header table entry size
-[ifdef] grub-loaded
-  1            w,  \ 0x2c program header table entry count (one pheader)
-[then]
-[ifdef] qemu-loaded 
-  1            w,  \ 0x2c program header table entry count (one pheader)
-[else]
-  0            w,  \ 0x2c program header table entry count (no pheaders)
-[then]
+  #pheaders    w,  \ 0x2c program header table entry count (one pheader)
   0            w,  \ 0x2e section header table entry size
   0            w,  \ 0x30 section header table entry count
   0            w,  \ 0x32 section header string table index
 
-[ifdef] grub-loaded  \ Pheader causes GRUB to copy us to RAM
-  \ 0x34  Pheader
-  1            l,  \ 0x34 entry type PT_LOAD
-  h# 54        l,  \ 0x38 file offset
-  0            l,  \ 0x3c vaddr
-[then]
-
-[ifdef] qemu-loaded \ Pheader causes elfboot to copy us to RAM
-  \ 0x34  Pheader
-  1            l,  \ 0x34 entry type PT_LOAD
-  0            l,  \ 0x38 file offset
-  dropin-base 80 -  l,  \ 0x3c vaddr
-[then]
-
-[ifdef] etherboot-variant
-   \ we need to skip what left of elf-hdr. to get it to point to a dropin
-   \ why is it 0x14 ?  I would have thought it should be the size of the multiboot header
-   \ which is 0x0c
-  dropin-base  h# 14 - l,  \ 0x40 paddr         \ Where to put the bits
-[then]
-
-[ifdef] qemu-loaded
-  dropin-base h# 80 -  l,  \ 0x40 paddr         \ Where to put the bits
+#pheaders [if]
+  1             l,  \ 0x34 entry type PT_LOAD
+  file-offset   l,  \ 0x38 file offset
+  elf-addr      l,  \ 0x3c vaddr
+  elf-addr      l,  \ 0x40 paddr - where to put the bits
+  h# ffffffff   l,  \ 0x44 file size   - backpatched later
+  h# ffffffff   l,  \ 0x48 memory size - backpatched later
+  7             l,  \ 0x4c entry flags RWX
+  0             l,  \ 0x50 alignment
+                    \ 0x54 End of pheader
 [else]
-  dropin-base  l,  \ 0x40 paddr         \ Where to put the bits
+  here  h# 54 h# 34 -  dup allot  erase  \ Pad to make the size consistent
 [then]
-  h# ffffffff  l,  \ 0x44 file size     \ backpatched later
-  h# ffffffff  l,  \ 0x48 memory size   \ backpatched later
 
-[ifndef] qemu-loaded
-  0            l,
-  0            l,
-[then]
-  7            l,  \ 0x4c entry flags RWX
-  0            l,  \ 0x50 alignment
-                   \ 0x54 End of pheader
-[then]
 [ifdef] grub-loaded 
   \ "Multiboot" header that GRUB looks for
-  h# 1BADB002 ,         \ 0x54
-  h#        0 ,         \ 0x58
-  h# 1BADB002 negate ,  \ 0x5c
+  h# 1BADB002 ,         \ 0x54 signature
+  h#        0 ,         \ 0x58 flags
+  h# 1BADB002 negate ,  \ 0x5c checksum: -(signature + flags)
                         \ 0x60 End 
+[else]
+  here  h# 60 h# 54 -  dup allot  erase  \ Pad to make the size consistent
 [then]
 
-[ifdef] linuxbios-loaded
-  \ Pad out to h# 60 so the size is the same as above
-  here  h# 60 h# 34 -  dup allot  erase
-[then]
-
-  \ The total size, including the dropin header, will be h# 80 
+\ The total size, including the dropin header, will be h# 80 
 here elf-header -  constant /elf-header
 
 \ LICENSE_BEGIN

Modified: cpu/x86/pc/lxdevel/addrs.fth
===================================================================
--- cpu/x86/pc/lxdevel/addrs.fth	2008-12-28 10:49:29 UTC (rev 1052)
+++ cpu/x86/pc/lxdevel/addrs.fth	2008-12-29 10:50:20 UTC (rev 1053)
@@ -27,47 +27,6 @@
 h#   20.0000 constant /fw-ram
 [then]
 
-[ifdef] linuxbios-loaded
-\ h#  d8.0000 constant dropin-base
-h# fff2.0000 constant dropin-base  \ Location of payload in FLASH
-\ h# fff8.0000 constant dropin-base  \ Location of payload in FLASH
-dropin-base h# 80 + h# 20 +  constant ResetBase	\ Location of "reset" dropin in ROM
-h#   08.0000 constant dropin-size
-h#  1e0.0000 constant fw-pa
-h#   20.0000 constant /fw-ram
-h# fff0.0000 constant rom-pa
-h#   10.0000 constant /rom
-[then]
-
-[ifdef] old-bzimage-loaded
-\ h#  d8.0000 constant dropin-base
-h#   10.0020 constant dropin-base  \ RAM address where Linux normally loads 
-h#   08.0000 constant dropin-size
-h#   20.0000 constant fw-pa
-h#   20.0000 constant /fw-ram
-[then]
-
-[ifdef] bzimage-loaded
-h#  1d8.0020 constant dropin-base  \ RAM address where we want to end up
-h#   08.0000 constant dropin-size
-h#  1e0.0000 constant fw-pa
-h#   20.0000 constant /fw-ram
-[then]
-
-[ifdef] syslinux-loaded
-h#  10.1020 constant dropin-base
-h#  07.e0e0 constant dropin-size
-h#  20.0000 constant fw-pa
-h#  20.0000 constant /fw-ram
-[then]
-
-[ifdef] grub-loaded
-h# 1b8.0000 constant dropin-base
-h#  08.0000 constant dropin-size
-h# 1c0.0000 constant fw-pa
-h#  20.0000 constant /fw-ram
-[then]
-
 h#  80.0000 constant def-load-base      \ Convenient for initrd
 
 \ The heap starts at RAMtop, which on this system is "fw-pa /fw-ram +"

Modified: cpu/x86/pc/lxdevel/config.fth
===================================================================
--- cpu/x86/pc/lxdevel/config.fth	2008-12-28 10:49:29 UTC (rev 1052)
+++ cpu/x86/pc/lxdevel/config.fth	2008-12-29 10:50:20 UTC (rev 1053)
@@ -10,18 +10,6 @@
 \ - OBMD format - ROM - direct boot from ROM
 create rom-loaded
 
-\ - ELF format (no pheader) - ROM - LinuxBIOS direct
-\ create linuxbios-loaded
-
-\ - Linux kernel format - USB Key w/ FAT FS - LinuxBIOS w/ stripped Linux payload
-\ create bzimage-loaded
-
-\ - ELF format w/ Multiboot signature - various - GRUB
-\ create grub-loaded
-
-\ - (Syslinux) COM32 format - USB Key w/ FAT FS - Syslinux
-\ create syslinux-loaded
-
 create virtual-mode
 create addresses-assigned  \ Define if base addresses are already assigned
 \ create serial-console      \ Define to default to serial port for console

Modified: cpu/x86/pc/neptune/config.fth
===================================================================
--- cpu/x86/pc/neptune/config.fth	2008-12-28 10:49:29 UTC (rev 1052)
+++ cpu/x86/pc/neptune/config.fth	2008-12-29 10:50:20 UTC (rev 1053)
@@ -12,19 +12,6 @@
 \ - OBMD format - ROM - direct boot from ROM
 create rom-loaded
 
-\ - ELF format (no pheader) - ROM - LinuxBIOS direct
-\ create linuxbios-loaded
-
-\ - Linux kernel format - USB Key w/ FAT FS - LinuxBIOS w/ stripped Linux payload
-\ create bzimage-loaded
-
-\ - ELF format w/ Multiboot signature - various - GRUB
-\ create grub-loaded
-
-\ - (Syslinux) COM32 format - USB Key w/ FAT FS - Syslinux
-\ create syslinux-loaded
-
-
 create virtual-mode
 create addresses-assigned  \ Define if base addresses are already assigned
 create serial-console      \ Define to default to serial port for console

Modified: cpu/x86/pc/olpc/addrs.fth
===================================================================
--- cpu/x86/pc/olpc/addrs.fth	2008-12-28 10:49:29 UTC (rev 1052)
+++ cpu/x86/pc/olpc/addrs.fth	2008-12-29 10:50:20 UTC (rev 1053)
@@ -22,47 +22,6 @@
 h#   40.0000 constant /fw-area
 [then]
 
-[ifdef] linuxbios-loaded
-\ h#  d8.0000 constant dropin-base
-h# fff2.0000 constant dropin-base  \ Location of payload in FLASH
-\ h# fff8.0000 constant dropin-base  \ Location of payload in FLASH
-dropin-base h# 80 + h# 20 +  constant ResetBase	\ Location of "reset" dropin in ROM
-h#   08.0000 constant dropin-size
-h#  1e0.0000 constant fw-pa
-h#   20.0000 constant /fw-ram
-h# fff0.0000 constant rom-pa
-h#   10.0000 constant /rom
-[then]
-
-[ifdef] old-bzimage-loaded
-\ h#  d8.0000 constant dropin-base
-h#   10.0020 constant dropin-base  \ RAM address where Linux normally loads 
-h#   08.0000 constant dropin-size
-h#   20.0000 constant fw-pa
-h#   20.0000 constant /fw-ram
-[then]
-
-[ifdef] bzimage-loaded
-h#  1d8.0020 constant dropin-base  \ RAM address where we want to end up
-h#   08.0000 constant dropin-size
-h#  1e0.0000 constant fw-pa
-h#   20.0000 constant /fw-ram
-[then]
-
-[ifdef] syslinux-loaded
-h#  10.1020 constant dropin-base
-h#  07.e0e0 constant dropin-size
-h#  20.0000 constant fw-pa
-h#  20.0000 constant /fw-ram
-[then]
-
-[ifdef] grub-loaded
-h# 1b8.0000 constant dropin-base
-h#  08.0000 constant dropin-size
-h# 1c0.0000 constant fw-pa
-h#  20.0000 constant /fw-ram
-[then]
-
 h#  80.0000 constant def-load-base      \ Convenient for initrd
 
 \ The heap starts at RAMtop, which on this system is "fw-pa /fw-ram +"

Modified: cpu/x86/pc/olpc/banner.fth
===================================================================
--- cpu/x86/pc/olpc/banner.fth	2008-12-28 10:49:29 UTC (rev 1052)
+++ cpu/x86/pc/olpc/banner.fth	2008-12-29 10:50:20 UTC (rev 1053)
@@ -9,15 +9,9 @@
    \ major-release (.) type ." ." minor-release (.) type    sub-release type
    \ pop-base
    \ This is the manufacturing signature 
-[ifdef] linuxbios-loaded
-   h# ffff.ffc0 h# 10 type cr
-[then]
 [ifdef] rom-loaded
    h# ffff.ffc0 h# 10 type cr
 [then]
-[ifdef] bzimage-loaded
-   ." booted from disk - " .built
-[then]
 ;
 
 : (xbanner-basics)  ( -- )

Modified: cpu/x86/pc/olpc/config.fth
===================================================================
--- cpu/x86/pc/olpc/config.fth	2008-12-28 10:49:29 UTC (rev 1052)
+++ cpu/x86/pc/olpc/config.fth	2008-12-29 10:50:20 UTC (rev 1053)
@@ -9,19 +9,6 @@
 \ - OBMD format - ROM - direct boot from ROM
 create rom-loaded
 
-\ - ELF format (no pheader) - ROM - LinuxBIOS direct
-\ create linuxbios-loaded
-
-\ - Linux kernel format - USB Key w/ FAT FS - LinuxBIOS w/ stripped Linux payload
-\ create bzimage-loaded
-
-\ - ELF format w/ Multiboot signature - various - GRUB
-\ create grub-loaded
-
-\ - (Syslinux) COM32 format - USB Key w/ FAT FS - Syslinux
-\ create syslinux-loaded
-
-
 \ create virtual-mode
 create addresses-assigned  \ Define if base addresses are already assigned
 \ create serial-console      \ Define to default to serial port for console

Modified: cpu/x86/pc/olpc/smallconfig.fth
===================================================================
--- cpu/x86/pc/olpc/smallconfig.fth	2008-12-28 10:49:29 UTC (rev 1052)
+++ cpu/x86/pc/olpc/smallconfig.fth	2008-12-29 10:50:20 UTC (rev 1053)
@@ -9,19 +9,6 @@
 \ - OBMD format - ROM - direct boot from ROM
 create rom-loaded
 
-\ - ELF format (no pheader) - ROM - LinuxBIOS direct
-\ create linuxbios-loaded
-
-\ - Linux kernel format - USB Key w/ FAT FS - LinuxBIOS w/ stripped Linux payload
-\ create bzimage-loaded
-
-\ - ELF format w/ Multiboot signature - various - GRUB
-\ create grub-loaded
-
-\ - (Syslinux) COM32 format - USB Key w/ FAT FS - Syslinux
-\ create syslinux-loaded
-
-
 \ create virtual-mode
 create addresses-assigned  \ Define if base addresses are already assigned
 \ create serial-console      \ Define to default to serial port for console

Modified: cpu/x86/pc/resetend.fth
===================================================================
--- cpu/x86/pc/resetend.fth	2008-12-28 10:49:29 UTC (rev 1052)
+++ cpu/x86/pc/resetend.fth	2008-12-29 10:50:20 UTC (rev 1053)
@@ -4,9 +4,8 @@
    \ The memory layout information from the start dropin is stored in low
    \ memory.
 
-[ifndef] qemu-loaded
-[ifndef] syslinux-loaded
-[ifndef] preof-loaded
+   \ Beginning of "switch to new GDT" section
+
    \ Move GDT to low memory.  We use the first location at gdt-pa as
    \ scratch memory for sgdt, and put the actual gdt at gdt-pa + 0x10
    gdt-pa # ax mov
@@ -17,30 +16,26 @@
    cx inc
 
    gdt-pa h# 10 + # di mov		\ New GDT base
-   di 2 [ax] mov			\ Set new GDT base
    rep movsb				\ Copy ROM GDT to RAM
 
-   \ Copy code and data segment descriptors from 10,18 to 60,68
-   gdt-pa h# 10 + h# 10 + #   si  mov   \ Descriptor 0x10 - src
-   gdt-pa h# 10 + h# 60 + #   di  mov   \ Descriptor 0x60 - dst
-   4 # cx mov                           \ 4 longwords, 2 descriptors
-   rep movs
+   \ Move the code and data descriptors to 60,68
+   gdt-pa h# 10 + h# 60 + #   di  mov   \ Destination - New descriptor 0x60
 
-   op: h# ff #   0 [ax]  mov            \ Make GDT bigger for Linux
+   cs si mov  2 [ax]  si add		\ Source - Current code descriptor
+   movs movs                            \ 2 longwords (1 descriptor) -> 60
 
+   ds si mov  2 [ax]  si add		\ Source - Current data descriptor
+   movs movs                            \ 2 longwords (1 descriptor) -> 68
+
+   op: h# ff #   0 [ax]  mov            \ New GDT size
+   gdt-pa h# 10 + #  2 [ax]  mov	\ New GDT base
    0 [ax] lgdt				\ Setup RAM GDT
 
-   \ Next time segment registers are changed, they will be
-   \ reloaded from memory.
-
-   \ qemu hangs when trying to do this
+   \ Reload code segment descriptor from new table
    here asm-base - ResetBase +  7 +   h# 60  #)  far jmp  \ 7-byte instruction
-\   here asm-base - ResetBase +  7 +   h# 10  #)  far jmp  \ 7-byte instruction
-   \ nop nop nop nop
 
-\ begin again
+   \ Reload data segment descriptors from new table
    h# 68 # ax mov
-\   h# 18 # ax mov
    ax ds  mov
    ax es  mov
    ax fs  mov
@@ -49,13 +44,12 @@
 
    h# 20 # al mov  al h# 80 # out
 
+   \ End of "switch to new GDT" section
+
 [ifdef] mem-info-pa
    gdt-pa /page round-up #  ax  mov	\ Current low-memory high water mark
    ax     mem-info-pa 2 la+ #)  mov	\ Store in memory info area
 [then]
-[then]
-[then]
-[then]
 
    cld
 




More information about the openfirmware mailing list