summaryrefslogtreecommitdiff
path: root/conf/machine
diff options
context:
space:
mode:
Diffstat (limited to 'conf/machine')
-rw-r--r--conf/machine/include/ixp4xx.conf114
-rw-r--r--conf/machine/ixp4xx.conf8
-rw-r--r--conf/machine/ixp4xxbe.conf12
-rw-r--r--conf/machine/ixp4xxle.conf12
-rw-r--r--conf/machine/nslu2.conf19
-rw-r--r--conf/machine/nslu2be.conf9
-rw-r--r--conf/machine/nslu2le.conf9
7 files changed, 70 insertions, 113 deletions
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 @@
# <possible values>
# 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}"
-# <string>
-# 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 :<base>, :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 :<base> 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 <ARM_INSTRUCTION_SET>_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"