- First pass at getting the powerpc ports to compile
authorEric Biederman <ebiederm@xmission.com>
Fri, 5 Nov 2004 19:55:06 +0000 (19:55 +0000)
committerEric Biederman <ebiederm@xmission.com>
Fri, 5 Nov 2004 19:55:06 +0000 (19:55 +0000)
  The static device tree is not built properly at all yet, but at least we get through it.
  FIXME (What is the proper way to handle add in boards?)
- Add generic div64 support and ppc div64 support
- Fix abuild so it properly generates the CC line when cross compiling.
- Add one more possible ppc cross compiler target

git-svn-id: svn://svn.coreboot.org/coreboot/trunk@1762 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1

src/arch/ppc/include/div64.h [new file with mode: 0644]
src/mainboard/embeddedplanet/ep405pc/Config.lb
src/mainboard/embeddedplanet/ep405pc/Options.lb
src/mainboard/motorola/sandpoint/Config.lb
src/mainboard/motorola/sandpoint/Options.lb
src/mainboard/totalimpact/briq/Config.lb
src/mainboard/totalimpact/briq/Options.lb
src/pmc/altimus/mpc7410/Config.lb
util/abuild/abuild.sh

diff --git a/src/arch/ppc/include/div64.h b/src/arch/ppc/include/div64.h
new file mode 100644 (file)
index 0000000..a841abf
--- /dev/null
@@ -0,0 +1 @@
+#include <arch-generic/div64.h>
index 4b76162e17b11f568aad3b9a4158315397f823d3..9f071bf621baeb9ef8b197219cdb2844db905acb 100644 (file)
@@ -9,12 +9,12 @@ initobject init.c
 driver pci_bridge.c
 
 arch ppc end
-cpu ppc/ppc4xx end
+chip cpu/ppc/ppc4xx device pnp 0.0 on end end
 
 ##
 ## Include the secondary Configuration files 
 ##
-southbridge winbond/w83c553 end
+chip southbridge/winbond/w83c553 device pnp 0.0 on end end
 
 ##
 ## Build the objects we have code for in this directory.
index 9acea4955f37be18640e29a201a6ce7c1d78ae9f..d37db77dc2ceb2083b0ef8f4614262ee7abb1700 100644 (file)
@@ -8,6 +8,41 @@ uses ISA_IO_BASE
 uses ISA_MEM_BASE 
 uses TTYS0_BASE 
 uses _IO_BASE 
+
+uses CPU_OPT
+uses CROSS_COMPILE 
+uses HAVE_OPTION_TABLE
+uses CONFIG_COMPRESS 
+uses CONFIG_CHIP_CONFIGURE
+uses DEFAULT_CONSOLE_LOGLEVEL
+uses CONFIG_USE_INIT
+uses CONFIG_CONSOLE_SERIAL8250 
+uses TTYS0_BAUD TTYS0_DIV
+uses NO_POST
+uses CONFIG_IDE
+uses CONFIG_FS_STREAM
+uses CONFIG_FS_EXT2
+uses CONFIG_FS_ISO9660
+uses CONFIG_FS_FAT
+uses AUTOBOOT_CMDLINE
+uses CONFIG_SYS_CLK_FREQ
+uses IDE_BOOT_DRIVE
+#uses IDE_SWAB
+uses IDE_OFFSET 
+uses ROM_SIZE
+uses _RESET
+uses _EXCEPTION_VECTORS
+uses _ROMBASE
+uses _ROMSTART
+uses _RAMBASE
+#uses _RAMSTART
+uses EMBEDDED_RAM_SIZE
+uses STACK_SIZE HEAP_SIZE
+
+uses MAINBOARD
+uses MAINBOARD_VENDOR
+uses MAINBOARD_PART_NUMBER
+uses LINUXBIOS_EXTRA_VERSION
 uses CROSS_COMPILE
 uses CC
 uses HOSTCC
@@ -33,3 +68,74 @@ default _IO_BASE=ISA_IO_BASE
 ##
 default TTYS0_BASE=0xef600300-ISA_IO_BASE
 
+## Enable PPC405 instructions
+default CPU_OPT="-Wa,-m405"
+default CPU_OPT=""
+
+## Use stage 1 initialization code
+default CONFIG_USE_INIT=1
+
+## Use chip configuration
+default CONFIG_CHIP_CONFIGURE=1
+
+## We don't use compressed image
+default CONFIG_COMPRESS=0
+
+## Turn off POST codes
+default NO_POST=1
+
+## Enable serial console
+default DEFAULT_CONSOLE_LOGLEVEL=8
+default CONFIG_CONSOLE_SERIAL8250=1
+# Divisor of 69 == 9600 baud due to weird clocking
+default TTYS0_DIV=69
+default TTYS0_BAUD=9600
+
+## Boot linux from IDE
+default CONFIG_IDE=1
+default CONFIG_FS_STREAM=1
+default CONFIG_FS_EXT2=1
+default CONFIG_FS_ISO9660=1
+default CONFIG_FS_FAT=1
+default AUTOBOOT_CMDLINE="hda1:/vmlinuz"
+
+default ROM_SIZE=1048576
+
+## Board has fixed size RAM
+default EMBEDDED_RAM_SIZE=64*1024*1024
+
+## LinuxBIOS C code runs at this location in RAM
+default _RAMBASE=0x00100000
+
+##
+## Use a 64K stack
+##
+default STACK_SIZE=0x10000
+
+##
+## Use a 64K heap
+##
+default HEAP_SIZE=0x10000
+
+##
+## System clock
+##
+default CONFIG_SYS_CLK_FREQ=33
+
+##
+default _ROMBASE=0xfff00000
+
+## Reset vector address
+default _RESET=0xfffffffc
+
+## Exception vectors
+default _EXCEPTION_VECTORS=_ROMBASE+0x100
+
+## linuxBIOS ROM start address
+default _ROMSTART=0xfff03000
+
+## linuxBIOS C code runs at this location in RAM
+default _RAMBASE=0x00100000
+
+### End Options.lb
+end
index f33ce4bedec5ab13d329b1c240f82b2bd198e81a..94e0ba79f15100c4421e34cac43bdf0cd16740b9 100644 (file)
@@ -20,30 +20,30 @@ object clock.o
 arch ppc end
 
 if CONFIG_SANDPOINT_ALTIMUS
-       pmc altimus/mpc7410 end
-#      pmc altimus/mpc7400 end
-#      pmc altimus/mpc75x end
+       chip pmc/altimus/mpc7410 device pnp 0.0 on end end
+#      chip pmc/altimus/mpc7400 device pnp 0.0 on end end
+#      chip pmc/altimus/mpc75x device pnp 0.0 on end end
 end
 if CONFIG_SANDPOINT_TALUS
-       pmc talus/mpc74x end
-       pmc talus/mpc603 end
+       chip pmc/talus/mpc74x device pnp 0.0 on end end
+       chip pmc/talus/mpc603 device pnp 0.0 on end end
 end
 if CONFIG_SANDPOINT_UNITY
-       pmc unity/mpc824x end
+       chip pmc/unity/mpc824x device pnp 0.0 on end end
 end
 if CONFIG_SANDPOINT_VALIS
-       pmc valis/mpc745x end
+       chip pmc/valis/mpc745x device pnp 0.0 on end end
 end
 if CONFIG_SANDPOINT_GYRUS
-       pmc gyrus/mpc744x end
+       chip pmc/gyrus/mpc744x device pnp 0.0 on end end
 end
 
 ##
 ## Include the secondary Configuration files 
 ##
-southbridge winbond/w83c553 end
+chip southbridge/winbond/w83c553 device pnp 0.0 on end end
 
-superio NSC/pc97307 end
+chip superio/NSC/pc97307 device pnp 0.0 on end end
 
 ##
 ## Build the objects we have code for in this directory.
index 5ca50078838d4770a069a2c00c50f54907be93d1..f17fc0ef82c12b9263caa4cce98646d5bb3dccfd 100644 (file)
@@ -10,6 +10,39 @@ uses PCIC0_CFGDATA
 uses PNP_CFGADDR
 uses PNP_CFGDATA
 uses _IO_BASE
+
+uses CROSS_COMPILE 
+uses HAVE_OPTION_TABLE
+uses CONFIG_SANDPOINT_ALTIMUS 
+uses CONFIG_COMPRESS 
+uses DEFAULT_CONSOLE_LOGLEVEL 
+uses CONFIG_USE_INIT
+uses CONFIG_CHIP_CONFIGURE
+uses NO_POST
+uses CONFIG_CONSOLE_SERIAL8250 
+uses TTYS0_BASE 
+uses CONFIG_IDE
+uses CONFIG_FS_STREAM 
+uses CONFIG_FS_EXT2
+uses CONFIG_FS_ISO9660
+uses CONFIG_FS_FAT
+uses AUTOBOOT_CMDLINE
+uses PAYLOAD_SIZE
+uses ROM_SIZE
+uses ROM_IMAGE_SIZE
+uses _RESET
+uses _EXCEPTION_VECTORS
+uses _ROMBASE
+uses _ROMSTART
+uses _RAMBASE
+uses _RAMSTART
+uses STACK_SIZE
+uses HEAP_SIZE
+
+uses MAINBOARD
+uses MAINBOARD_VENDOR
+uses MAINBOARD_PART_NUMBER
+uses LINUXBIOS_EXTRA_VERSION
 uses CROSS_COMPILE
 uses CC
 uses HOSTCC
@@ -25,3 +58,65 @@ default PCIC0_CFGDATA=0xfee00000
 default PNP_CFGADDR=0x15c
 default PNP_CFGDATA=0x15d
 default _IO_BASE=ISA_IO_BASE
+
+
+## use a cross compiler
+#default CROSS_COMPILE="powerpc-eabi-"
+#default CROSS_COMPILE="ppc_74xx-"
+
+## Use stage 1 initialization code
+default CONFIG_USE_INIT=1
+
+## Use static configuration
+default CONFIG_CHIP_CONFIGURE=1
+
+## We don't use compressed image
+default CONFIG_COMPRESS=0
+
+## Turn off POST codes
+default NO_POST=1
+
+## Enable serial console
+default DEFAULT_CONSOLE_LOGLEVEL=8
+default CONFIG_CONSOLE_SERIAL8250=1
+default TTYS0_BASE=0x3f8
+
+## Load payload using filo
+default CONFIG_IDE=1
+default CONFIG_FS_STREAM=1
+default CONFIG_FS_EXT2=1
+default CONFIG_FS_ISO9660=1
+default CONFIG_FS_FAT=1
+default AUTOBOOT_CMDLINE="hdc1:/vmlinuz"
+
+# LinuxBIOS must fit into 128KB
+default ROM_IMAGE_SIZE=131072
+default ROM_SIZE={ROM_IMAGE_SIZE+PAYLOAD_SIZE}
+default PAYLOAD_SIZE=262144
+
+# Set stack and heap sizes (stage 2)
+default STACK_SIZE=0x10000
+default HEAP_SIZE=0x10000
+
+# Sandpoint Demo Board
+## Base of ROM
+default _ROMBASE=0xfff00000
+
+## Sandpoint reset vector
+default _RESET=_ROMBASE+0x100
+
+## Exception vectors (other than reset vector)
+default _EXCEPTION_VECTORS=_RESET+0x100
+
+## Start of linuxBIOS in the boot rom
+## = _RESET + exeception vector table size
+default _ROMSTART=_RESET+0x3100
+
+## LinuxBIOS C code runs at this location in RAM
+default _RAMBASE=0x00100000
+default _RAMSTART=0x00100000
+
+default CONFIG_SANDPOINT_ALTIMUS=1
+
+### End Options.lb
+end
index 943018d025f7f52fec85eb36f82e11b60a691d9a..775aad36f864f1704c71120234db3325a8433281 100644 (file)
@@ -16,17 +16,17 @@ object clock.o
 arch ppc end
 
 if CONFIG_BRIQ_750FX
-       cpu ppc/ppc7xx end
+       chip cpu/ppc/ppc7xx device pnp 0.0 on end end
 end
 if CONFIG_BRIQ_7400
-       cpu ppc/mpc74xx end
+       chip cpu/ppc/mpc74xx device pnp 0.0 on end  end
 end
 
 ##
 ## Include the secondary Configuration files 
 ##
-northbridge ibm/cpc710 end
-southbridge winbond/w83c553 end
+chip northbridge/ibm/cpc710 device pnp 0.0 on end end
+chip southbridge/winbond/w83c553 device pnp 0.0 on end end
 
 ##
 ## Build the objects we have code for in this directory.
index 37bfa24c723e4eec7eac7b3428811332e345e6fe..557290f8ff3d9a121fbd2d2513b4a26979c9610f 100644 (file)
@@ -11,6 +11,32 @@ uses ISA_MEM_BASE
 uses PCIC0_CFGADDR
 uses PCIC0_CFGDATA
 uses _IO_BASE
+uses CROSS_COMPILE 
+uses HAVE_OPTION_TABLE
+uses CONFIG_COMPRESS 
+uses DEFAULT_CONSOLE_LOGLEVEL 
+uses CONFIG_USE_INIT
+uses NO_POST
+uses CONFIG_CONSOLE_SERIAL8250 
+uses CONFIG_IDE_STREAM 
+uses IDE_BOOT_DRIVE
+uses IDE_SWAB IDE_OFFSET 
+uses ROM_SIZE
+uses _RESET
+uses _EXCEPTION_VECTORS
+uses _ROMBASE
+uses _ROMSTART
+uses _RAMBASE
+uses _RAMSTART
+uses STACK_SIZE
+uses HEAP_SIZE
+uses CONFIG_BRIQ_750FX 
+uses CONFIG_BRIQ_7400
+
+uses MAINBOARD
+uses MAINBOARD_VENDOR
+uses MAINBOARD_PART_NUMBER
+uses LINUXBIOS_EXTRA_VERSION
 uses CROSS_COMPILE
 uses CC
 uses HOSTCC
@@ -33,3 +59,57 @@ default TTYS0_DIV=4
 ## Set UART base address
 ##
 default TTYS0_BASE=0x3f8
+
+## use a cross compiler
+#default CROSS_COMPILE="powerpc-eabi-"
+#default CROSS_COMPILE="ppc_74xx-"
+
+## Use stage 1 initialization code
+default CONFIG_USE_INIT=1
+
+## We don't use compressed image
+default CONFIG_COMPRESS=0
+
+## Turn off POST codes
+default NO_POST=1
+
+## Enable serial console
+default DEFAULT_CONSOLE_LOGLEVEL=8
+default CONFIG_CONSOLE_SERIAL8250=1
+
+## Boot linux from IDE
+default CONFIG_IDE_STREAM=1
+default IDE_BOOT_DRIVE=0
+default IDE_SWAB=1
+default IDE_OFFSET=0
+
+# ROM is 1Mb
+default ROM_SIZE=1048576
+
+# Set stack and heap sizes (stage 2)
+default STACK_SIZE=0x10000
+default HEAP_SIZE=0x10000
+
+# Sandpoint Demo Board
+## Base of ROM
+default _ROMBASE=0xfff00000
+
+## Sandpoint reset vector
+default _RESET=_ROMBASE+0x100
+
+## Exception vectors (other than reset vector)
+default _EXCEPTION_VECTORS=_RESET+0x100
+
+## Start of linuxBIOS in the boot rom
+## = _RESET + exeception vector table size
+default _ROMSTART=_RESET+0x3100
+
+## LinuxBIOS C code runs at this location in RAM
+default _RAMBASE=0x00100000
+default _RAMSTART=0x00100000
+
+default CONFIG_BRIQ_750FX=1
+#default CONFIG_BRIQ_7400=1
+
+### End Options.lb
+end
index ecfd027f012aa6fa9cdaef2158b8f48aea2f85dc..29dc45ed088f078f6fbaa7375fdb9177f23f6964 100644 (file)
@@ -1,12 +1,12 @@
 ##
 ## CPU initialization
 ##
-cpu ppc/mpc74xx end
+chip cpu/ppc/mpc74xx device pnp 0.0 on end end
 
 ##
 ## Include the secondary Configuration files 
 ##
-northbridge motorola/mpc107 end
+chip northbridge/motorola/mpc107 device pnp 0.0 on end end
 
 ##
 ## Build the objects we have code for in this directory.
index 516add1f18432699d52f5393945e7c00d4683724..0e00c6616e9532573bc9656c5f37cce75015efaf 100644 (file)
@@ -34,7 +34,7 @@ function debug
 {
        test "$verbose" == "true" && echo $*
 }
-       
+
 function vendors
 {
        # make this a function so we can easily select
@@ -64,6 +64,7 @@ function create_config
 {
        VENDOR=$1
        MAINBOARD=$2
+       TARCH=$( architecture $VENDOR $MAINBOARD )
        echo -n "  Creating config file..."
        mkdir -p $TARGET
        ( cat << EOF
@@ -76,6 +77,9 @@ option CC="CROSSCC"
 option CROSS_COMPILE="CROSS_PREFIX"
 option HOSTCC="CROSS_HOSTCC"
 
+EOF
+       if [ $TARCH == i386 ] ; then
+               cat <<EOF
 romimage "normal"
        option USE_FALLBACK_IMAGE=0
        option ROM_IMAGE_SIZE=0x12000
@@ -89,9 +93,17 @@ romimage "fallback"
        option LINUXBIOS_EXTRA_VERSION=".0-fallback"
        payload PAYLOAD
 end
-
-buildrom ./VENDOR_MAINBOARD.rom ROM_SIZE "normal" "fallback"
+buildrom ./linuxbios.rom ROM_SIZE "normal" "fallback"
+EOF
+       else
+               cat <<EOF
+romimage "only"
+       option LINUXBIOS_EXTRA_VERSION=".0"
+       payload PAYLOAD
+end
+buildrom ./linuxbios.rom ROM_SIZE "only"
 EOF
+       fi
        ) | sed -e s,VENDOR,$VENDOR,g \
                -e s,MAINBOARD,$MAINBOARD,g \
                -e s,PAYLOAD,$PAYLOAD,g \
@@ -199,9 +211,9 @@ function build_target
        TARCH=$( architecture $VENDOR $MAINBOARD )
 
        # default setting
-       CC="gcc"
-       HOSTCC="gcc"
-       CROSS_COMPILE=""
+       CC='$(CROSS_COMPILE)gcc'
+       HOSTCC='gcc'
+       CROSS_COMPILE=''
 
        echo -n "Processing mainboard/$VENDOR/$MAINBOARD"
        
@@ -218,7 +230,7 @@ function build_target
                        found_crosscompiler=true
                fi
                if [ "$found_crosscompiler" == "false" -a "$TARCH" == ppc ] ;then
-                       for prefix in powerpc-eabi- powerpc-linux- ; do
+                       for prefix in powerpc-eabi- powerpc-linux- ppc_74xx- ; do
                                if ${prefix}gcc --version > /dev/null 2> /dev/null ; then
                                        found_crosscompiler=true
                                        CROSS_COMPILE=$prefix
@@ -235,17 +247,17 @@ function build_target
                        echo
                        return 0
                else
-                       echo " ($TARCH: ok, though we're $ARCH)"
+                       echo " ($TARCH: ok, we're $ARCH)"
                fi
        fi
-       
+
        built_successfully $VENDOR $MAINBOARD && \
        {
                echo " ( mainboard/$VENDOR/$MAINBOARD previously ok )"
                echo
                return 0
        }
-       
+
        build_broken $VENDOR $MAINBOARD || \
        {
                echo " ( broken mainboard/$VENDOR/$MAINBOARD skipped )"
@@ -313,7 +325,7 @@ while true ; do
        case "$1" in
                -t|--target)    shift; target="$1"; shift;;
                -a|--all)       shift; buildall=true;;
-               -b|--broken)    shift; buildbroken=true;;
+               -b|--broken)    shift; buildbroken=true;;
                -v|--verbose)   shift; verbose=true;;
                -V|--version)   shift; myversion; exit 0;;
                -h|--help)      shift; myhelp; exit 0;;
@@ -323,6 +335,7 @@ while true ; do
        esac
 done
 
+# /path/to/freebios2/
 test -z "$1" || LBROOT=$1
 
 debug "LBROOT=$LBROOT"