From 2d96dd3d8722c5260740717f70c442b4cb445aac Mon Sep 17 00:00:00 2001 From: Rod Whitby Date: Tue, 23 Jan 2007 02:21:17 +0000 Subject: ixp4xx (and related ixp4xx-specific files): Change all usage of ARCH_BYTE_SEX to IXP4XX_MACHINE_ENDIAN (and ensure COMPATIBLE_MACHINE is in effect whereever it is used). Add the nslu2le and nslu2be machines. Change include/ixp4xx.conf to use tune-xscale and tune-thumb. Remove slugos-specific variables that had global OE equivalents. Deprecate ixp4xx.conf and nslu2.conf in favour of endian-specific replacements. --- conf/machine/include/ixp4xx.conf | 114 ++++++++------------------------------- conf/machine/ixp4xx.conf | 8 --- conf/machine/ixp4xxbe.conf | 12 ++--- conf/machine/ixp4xxle.conf | 12 ++--- conf/machine/nslu2.conf | 19 +++++++ conf/machine/nslu2be.conf | 9 ++++ conf/machine/nslu2le.conf | 9 ++++ 7 files changed, 70 insertions(+), 113 deletions(-) create mode 100644 conf/machine/nslu2be.conf create mode 100644 conf/machine/nslu2le.conf (limited to 'conf/machine') diff --git a/conf/machine/include/ixp4xx.conf b/conf/machine/include/ixp4xx.conf index 0aba653201..42ca723d90 100644 --- a/conf/machine/include/ixp4xx.conf +++ b/conf/machine/include/ixp4xx.conf @@ -2,6 +2,12 @@ #@NAME: ixp4xx #@DESCRIPTION: genric machine configuration for ixp4xx platforms +MACHINE_FEATURES = "kernel26 usbhost ext2" + +EXTRA_IMAGECMD_jffs2 = "--pad --eraseblock=0x20000 --faketime -n" + +PREFERRED_PROVIDER_virtual/kernel ?= "ixp4xx-kernel" + #------------------------------------------------------------------------------- # INPUTS #------------------------------------------------------------------------------- @@ -15,12 +21,13 @@ # # description -ARCH_BYTE_SEX = "le" +IXP4XX_MACHINE_ENDIAN ?= "le" # "be" "le" # The memory byte sex and (on correctly implemented hardware - the IXP4XX is # correct) the byte sex of the buses within the system. 'be' (big-endian) # means that the first byte is the most significant byte on a bus, 'le' # (little-endian) means that the first byte is the least significant byte. +# Default to little-endian mode (since EABI does not support big endian yet) ARM_INSTRUCTION_SET = "arm" # "arm" "thumb" @@ -44,12 +51,6 @@ DISTRO_BASE = "" # after ${DISTRO}, this allows different distros to share a common base of # overrides. The value given must include a leading ':' or chaos will result. -IXP4XX_SUFFIX = "${MACHINE_ARCH}" -# -# Kernel suffix - 'ixp4xxbe' or 'ixp4xxle' for a truely generic image, controls -# the suffix on the name of the generated zImage, override in the DISTRO -# configuration if patches or defconfig are changed for the DISTRO. - #------------------------------------------------------------------------------- # OUTPUTS #------------------------------------------------------------------------------- @@ -57,27 +58,21 @@ IXP4XX_SUFFIX = "${MACHINE_ARCH}" #OVERRIDES # The standard ':' separated list of overrides used by bitbake - see the # basic setting in bitbake.conf. This list is based on that used for the -# standard setting however :, :thumb and :thumb-interwork will be -# inserted at appropriate points if a base distro, default use of thumb or -# arm/thumb interworking are enabled in the inputs. -OVERRIDE_THUMB = "${@['', ':thumb'][bb.data.getVar('ARM_INSTRUCTION_SET', d, 1) == 'thumb']}" -OVERRIDE_INTERWORK = "${@['', ':thumb-interwork'][bb.data.getVar('THUMB_INTERWORK', d, 1) == 'yes']}" -OVERRIDES = "local:${MACHINE}:ixp4xx:${DISTRO}${DISTRO_BASE}:${TARGET_OS}:${TARGET_ARCH}${OVERRIDE_THUMB}${OVERRIDE_INTERWORK}:build-${BUILD_OS}:fail-fast" +# standard setting however : will be +# inserted at appropriate points if a base distro is enabled in the inputs. +OVERRIDES = "local:${MACHINE}:ixp4xx:${DISTRO}${DISTRO_BASE}:${TARGET_OS}:${TARGET_ARCH}:build-${BUILD_OS}:fail-fast" -# TARGET_CC_ARCH -# TARGET_CC_KERNEL_ARCH -# TARGET_LD_ARCH -# TARGET_LD_KERNEL_ARCH -# Compiler and linker options for application code and kernel code. These -# options ensure that the compiler has the correct settings for the selected -# instruction set and interworking. -ARM_INTERWORK_M_OPT = "${@['-mno-thumb-interwork', '-mthumb-interwork'][bb.data.getVar('THUMB_INTERWORK', d, 1) == 'yes']}" -ARM_THUMB_M_OPT = "${@['-mno-thumb', '-mthumb'][bb.data.getVar('ARM_INSTRUCTION_SET', d, 1) == 'thumb']}" -# -TARGET_CC_ARCH = "-march=armv5te -mtune=xscale ${ARM_INTERWORK_M_OPT} ${ARM_THUMB_M_OPT}" -TARGET_CC_KERNEL_ARCH = "-march=armv5te -mtune=xscale -mno-thumb-interwork -mno-thumb" -TARGET_LD_ARCH = "" -TARGET_LD_KERNEL_ARCH = "" +require conf/machine/include/tune-xscale.conf +require conf/machine/include/tune-thumb.conf + +#------------------------------------------------------------------------------- +# Board defaults +#------------------------------------------------------------------------------- +# These values are board specific but they seem to be common to a large number +# of boards so are reasonable defaults. +SERIAL_CONSOLE = "115200 ttyS0" +KERNEL_CONSOLE = "ttyS0,115200n8" +USE_VT = "0" # FULL_OPTIMIZATION # Optimization settings. Os works fine and is significantly better than O2. @@ -91,68 +86,3 @@ FULL_OPTIMIZATION = "-Os -fomit-frame-pointer -frename-registers \ -fno-unroll-loops -fno-inline-functions \ -fweb -funit-at-a-time" -# TARGET_ARCH -# The correct setting for the system endianness (ARCH_BYTE_SEX). This will -# be arm (le) or armeb (be) - it is difficult to be more precise in the -# setting because of the large number of ways it is used within OpenEmbedded. -TARGET_ARCH = "${@['armeb', 'arm'][bb.data.getVar('ARCH_BYTE_SEX', d, 1) == 'le']}" - -# TARGET_PACKAGE_ARCH [not used] -# The correct setting for the generated packages. This corresponds to the -# -march flag passed to the compiler because that limits the architectures -# on which the generated code will run. -BYTE_SEX_CHAR = "${@['b', 'l'][bb.data.getVar('ARCH_BYTE_SEX', d, 1) == 'le']}" -TARGET_PACKAGE_ARCH_BASE = "${@['armv5te', 'thumbv5t'][bb.data.getVar('ARM_INSTRUCTION_SET', d, 1) == 'thumb']}" -TARGET_PACKAGE_ARCH = "${TARGET_PACKAGE_ARCH_BASE}${BYTE_SEX_CHAR}" - -# MACHINE_ARCH -# The correct setting for packages which are specific to the machine, this -# defaults to ${MACHINE} in bitbake.conf, however it is set to ixp4xx here -# because everything built here is no more specific than that. -MACHINE_ARCH = "ixp4xx${ARCH_BYTE_SEX}" - -# PACKAGE_EXTRA_ARCHS -# The full list of package architectures which should run on the system. -# This takes into account both the board level issues and the INPUTS set -# by the distro. The arm list is derived from the architecture settings -# known to gcc, the thumb list is then derived from that (only the 't' -# architectures of course). -#[not used]: TARGET_ARCH is handled below because it is also currently -# used for thumb packages. -#ARM_ARCHITECTURES = "${TARGET_ARCH} armv2${BYTE_SEX_CHAR} armv2a${BYTE_SEX_CHAR} armv3${BYTE_SEX_CHAR} armv3m${BYTE_SEX_CHAR} armv4${BYTE_SEX_CHAR} armv4t${BYTE_SEX_CHAR} armv5${BYTE_SEX_CHAR} armv5t${BYTE_SEX_CHAR} armv5e${BYTE_SEX_CHAR} armv5te${BYTE_SEX_CHAR} xscale${BYTE_SEX_CHAR}" -ARM_ARCHITECTURES = "armv2${BYTE_SEX_CHAR} armv2a${BYTE_SEX_CHAR} armv3${BYTE_SEX_CHAR} armv3m${BYTE_SEX_CHAR} armv4${BYTE_SEX_CHAR} armv4t${BYTE_SEX_CHAR} armv5${BYTE_SEX_CHAR} armv5t${BYTE_SEX_CHAR} armv5e${BYTE_SEX_CHAR} armv5te${BYTE_SEX_CHAR} xscale${BYTE_SEX_CHAR}" -THUMB_ARCHITECTURES = "thumbe${BYTE_SEX_CHAR} thumbv4t${BYTE_SEX_CHAR} thumbv5t${BYTE_SEX_CHAR}" - -# NOTE: this list contains just the things which rootfs_ipk.bbclass does -# not add, rootfs_ipk.bbclass evaluates: -# -# ipkgarchs="all any noarch ${TARGET_ARCH} ${PACKAGE_EXTRA_ARCHS} ${MACHINE}" -# -# This is a priority ordered list - most desireable architecture at the end, -# so put _ARCHITECTURES at the end and, if -# THUMB_INTERWORK precede this with the other architectures. -PACKAGE_EXTRA_ARCHS = "ixp4xx ${MACHINE} \ - ${@(lambda arch_thumb, arch_arm, is_arm, interwork: \ - (interwork and (is_arm and arch_thumb or arch_arm) + ' ' or '') \ - + '${TARGET_ARCH} ' + (is_arm and arch_arm or arch_thumb)) \ - (bb.data.getVar('THUMB_ARCHITECTURES', d, 1), \ - bb.data.getVar('ARM_ARCHITECTURES', d, 1), \ - bb.data.getVar('ARM_INSTRUCTION_SET', d, 1) != 'thumb', \ - bb.data.getVar('THUMB_INTERWORK', d, 1) == 'yes')} \ - ${MACHINE_ARCH} ${MACHINE}${ARCH_BYTE_SEX}" - -# IPKG_ARCH_LIST [not used] -# This is used to override the ipkgarchs settings in rootfs_ipk.bbclass, allowing -# the removal of the raw "${MACHINE}" from the end of the list. ${MACHINE} and -# ixp4xx are included at the start (lower priority) as the non-byte-sex specific -# versions. -IPKG_ARCH_LIST = "all any noarch ixp4xx ${MACHINE} ${PACKAGE_EXTRA_ARCHS}" - -#------------------------------------------------------------------------------- -# Board defaults -#------------------------------------------------------------------------------- -# These values are board specific but they seem to be common to a large number -# of boards so are reasonable defaults. -SERIAL_CONSOLE = "115200 ttyS0" -KERNEL_CONSOLE = "ttyS0,115200n8" -USE_VT = "0" diff --git a/conf/machine/ixp4xx.conf b/conf/machine/ixp4xx.conf index f955215f31..3397d170f8 100644 --- a/conf/machine/ixp4xx.conf +++ b/conf/machine/ixp4xx.conf @@ -2,12 +2,4 @@ #@NAME: Generic IXP4XX kernel #@DESCRIPTION: Machine configuration for a generic ixp4xx board -MACHINE_FEATURES = "kernel26 usbhost ext2" - require conf/machine/include/ixp4xx.conf - -PACKAGE_EXTRA_ARCHS = "armv4 armv4t armv5e armv5te ixp4xx${ARCH_BYTE_SEX}" - -EXTRA_IMAGECMD_jffs2 = "--pad --little-endian --eraseblock=0x20000 --faketime -n" - -PREFERRED_PROVIDER_virtual/kernel ?= "ixp4xx-kernel" diff --git a/conf/machine/ixp4xxbe.conf b/conf/machine/ixp4xxbe.conf index f303454cbb..cd02d7c821 100644 --- a/conf/machine/ixp4xxbe.conf +++ b/conf/machine/ixp4xxbe.conf @@ -1,15 +1,15 @@ #@TYPE: Machine #@NAME: Generic IXP4XX kernel -#@DESCRIPTION: Machine configuration for a generic ixp4xx board in bigendian mode +#@DESCRIPTION: Machine configuration for a generic ixp4xx board in big-endian mode -MACHINE_FEATURES = "kernel26 usbhost ext2" +IXP4XX_MACHINE_ENDIAN = "be" -ARCH_BYTE_SEX = "be" require conf/machine/include/ixp4xx.conf -PACKAGE_EXTRA_ARCHS = "armv4eb armv4teb armv5eb armv5teb ixp4xxeb" +TARGET_ARCH = "armeb" -EXTRA_IMAGECMD_jffs2 = "--pad --big-endian --eraseblock=0x20000 --faketime -n" +MACHINE_ARCH = "ixp4xxbe" -PREFERRED_PROVIDER_virtual/kernel ?= "ixp4xx-kernel" +PACKAGE_EXTRA_ARCHS = "armv4b armv4tb armv5eb armv5teb" +EXTRA_IMAGECMD_jffs2 += "--big-endian" diff --git a/conf/machine/ixp4xxle.conf b/conf/machine/ixp4xxle.conf index d3fcd2b017..e40b98b876 100644 --- a/conf/machine/ixp4xxle.conf +++ b/conf/machine/ixp4xxle.conf @@ -2,16 +2,14 @@ #@NAME: Generic IXP4XX kernel #@DESCRIPTION: Machine configuration for a generic ixp4xx board in little-endian mode -MACHINE_FEATURES = "kernel26 usbhost ext2" +IXP4XX_MACHINE_ENDIAN = "le" -ARCH_BYTE_SEX = "le" require conf/machine/include/ixp4xx.conf -require conf/machine/include/tune-xscale.conf +TARGET_ARCH = "arm" -PACKAGE_EXTRA_ARCHS = "armv4 armv4t armv5e armv5te ixp4xxle" +MACHINE_ARCH = "ixp4xxle" -EXTRA_IMAGECMD_jffs2 = "--pad --little-endian --eraseblock=0x20000 --faketime -n" - -PREFERRED_PROVIDER_virtual/kernel ?= "ixp4xx-kernel" +PACKAGE_EXTRA_ARCHS = "armv4 armv4t armv5e armv5te" +EXTRA_IMAGECMD_jffs2 += " --little-endian" diff --git a/conf/machine/nslu2.conf b/conf/machine/nslu2.conf index 304018baea..fa42771331 100644 --- a/conf/machine/nslu2.conf +++ b/conf/machine/nslu2.conf @@ -2,4 +2,23 @@ #@NAME: Linksys NSLU2 #@DESCRIPTION: Machine configuration for the Linksys NSLU2 product +# Note that IXP4XX_MACHINE_ENDIAN gets set by the DISTRO for the "nslu2" machine. +# (Yes, this was a mistake, but it's legacy and can't be easily changed now.) +# The "nslu2" machine is deprecated - use "nslu2le" or "nslu2be" instead. + require conf/machine/include/ixp4xx.conf + +# This should eventually be removed (when we move from nslu2 to nslu2le/nslu2be). +TARGET_ARCH = "${@['armeb', 'arm'][bb.data.getVar('IXP4XX_MACHINE_ENDIAN', d, 1) == 'le']}" + +# This should eventually be removed (when we move from nslu2 to nslu2le/nslu2be). +MACHINE_ARCH = "${@['ixp4xxbe', 'ixp4xxle'][bb.data.getVar('IXP4XX_MACHINE_ENDIAN', d, 1) == 'le']}" + +# This should eventually be removed (when we move from nslu2 to nslu2le/nslu2be). +PACKAGE_ARCH = "${@['armeb', 'arm'][bb.data.getVar('IXP4XX_MACHINE_ENDIAN', d, 1) == 'le']}" + +# This should eventually be removed (when we move from nslu2 to nslu2le/nslu2be). +PACKAGE_EXTRA_ARCHS = "${@['ixp4xxbe nslu2be', 'ixp4xxle nslu2le'][bb.data.getVar('IXP4XX_MACHINE_ENDIAN', d, 1) == 'le']}" + +# This should eventually be removed (when we move from nslu2 to nslu2le/nslu2be). +EXTRA_IMAGECMD_jffs2 += "${@['--big-endian', '--little-endian'][bb.data.getVar('IXP4XX_MACHINE_ENDIAN', d, 1) == 'le']}" diff --git a/conf/machine/nslu2be.conf b/conf/machine/nslu2be.conf new file mode 100644 index 0000000000..7cbdd80c1b --- /dev/null +++ b/conf/machine/nslu2be.conf @@ -0,0 +1,9 @@ +#@TYPE: Machine +#@NAME: Linksys NSLU2 (big-endian) +#@DESCRIPTION: Machine configuration for an NSLU2 in big-endian mode + +require conf/machine/ixp4xxbe.conf + +MACHINE_ARCH = "ixp4xxbe" + +PACKAGE_EXTRA_ARCHS += "ixp4xxbe" diff --git a/conf/machine/nslu2le.conf b/conf/machine/nslu2le.conf new file mode 100644 index 0000000000..cc8e8b8b98 --- /dev/null +++ b/conf/machine/nslu2le.conf @@ -0,0 +1,9 @@ +#@TYPE: Machine +#@NAME: Linksys NSLU2 (little-endian) +#@DESCRIPTION: Machine configuration for an NSLU2 in little-endian mode + +require conf/machine/ixp4xxle.conf + +MACHINE_ARCH = "ixp4xxle" + +PACKAGE_EXTRA_ARCHS += "ixp4xxle" -- cgit 1.2.3-korg