summaryrefslogtreecommitdiff
path: root/meta/conf/machine
diff options
context:
space:
mode:
Diffstat (limited to 'meta/conf/machine')
-rw-r--r--meta/conf/machine/akita.conf13
-rw-r--r--meta/conf/machine/beagleboard.conf35
-rw-r--r--meta/conf/machine/bootcdx86.conf10
-rw-r--r--meta/conf/machine/c7x0.conf14
-rw-r--r--meta/conf/machine/cm-x270.conf67
-rw-r--r--meta/conf/machine/depicture.conf32
-rw-r--r--meta/conf/machine/em-x270.conf65
-rw-r--r--meta/conf/machine/htcuniversal.conf33
-rw-r--r--meta/conf/machine/hx2000.conf49
-rw-r--r--meta/conf/machine/include/README81
-rw-r--r--meta/conf/machine/include/arm/README40
-rw-r--r--meta/conf/machine/include/arm/arch-arm.inc17
-rw-r--r--meta/conf/machine/include/arm/arch-armv4.inc25
-rw-r--r--meta/conf/machine/include/arm/arch-armv5-dsp.inc41
-rw-r--r--meta/conf/machine/include/arm/arch-armv5.inc52
-rw-r--r--meta/conf/machine/include/arm/arch-armv6.inc33
-rw-r--r--meta/conf/machine/include/arm/arch-armv7a.inc56
-rw-r--r--meta/conf/machine/include/arm/feature-arm-neon.inc3
-rw-r--r--meta/conf/machine/include/arm/feature-arm-thumb.inc26
-rw-r--r--meta/conf/machine/include/arm/feature-arm-vfp.inc6
-rw-r--r--meta/conf/machine/include/ia32/README24
-rw-r--r--meta/conf/machine/include/ia32/arch-ia32.inc51
-rw-r--r--meta/conf/machine/include/mips/README36
-rw-r--r--meta/conf/machine/include/mips/arch-mips.inc101
-rw-r--r--meta/conf/machine/include/powerpc/README17
-rw-r--r--meta/conf/machine/include/powerpc/arch-powerpc.inc32
-rw-r--r--meta/conf/machine/include/powerpc/arch-powerpc64.inc14
-rw-r--r--meta/conf/machine/include/qemu.inc16
-rw-r--r--meta/conf/machine/include/sh/README11
-rw-r--r--meta/conf/machine/include/sh/arch-sh.inc9
-rw-r--r--meta/conf/machine/include/soc-family.inc2
-rw-r--r--meta/conf/machine/include/tune-arm1136jf-s.inc14
-rw-r--r--meta/conf/machine/include/tune-arm920t.inc13
-rw-r--r--meta/conf/machine/include/tune-arm926ejs.inc16
-rw-r--r--meta/conf/machine/include/tune-arm9tdmi.inc13
-rw-r--r--meta/conf/machine/include/tune-armv7.inc6
-rw-r--r--meta/conf/machine/include/tune-atom.inc3
-rw-r--r--meta/conf/machine/include/tune-c3.inc13
-rw-r--r--meta/conf/machine/include/tune-core2.inc26
-rw-r--r--meta/conf/machine/include/tune-cortexa8.inc35
-rw-r--r--meta/conf/machine/include/tune-cortexa9.inc24
-rw-r--r--meta/conf/machine/include/tune-cortexm1.inc14
-rw-r--r--meta/conf/machine/include/tune-cortexm3.inc19
-rw-r--r--meta/conf/machine/include/tune-cortexr4.inc18
-rw-r--r--meta/conf/machine/include/tune-ep9312.inc15
-rw-r--r--meta/conf/machine/include/tune-i586.inc14
-rw-r--r--meta/conf/machine/include/tune-iwmmxt.inc16
-rw-r--r--meta/conf/machine/include/tune-mips32.inc25
-rw-r--r--meta/conf/machine/include/tune-ppc603e.inc16
-rw-r--r--meta/conf/machine/include/tune-ppce300c2.inc11
-rw-r--r--meta/conf/machine/include/tune-ppce500.inc22
-rw-r--r--meta/conf/machine/include/tune-ppce500mc.inc14
-rw-r--r--meta/conf/machine/include/tune-ppce500v2.inc20
-rw-r--r--meta/conf/machine/include/tune-ppce5500.inc20
-rw-r--r--meta/conf/machine/include/tune-sh3.inc18
-rw-r--r--meta/conf/machine/include/tune-sh4.inc35
-rw-r--r--meta/conf/machine/include/tune-strongarm1100.inc13
-rw-r--r--meta/conf/machine/include/tune-supersparc.inc6
-rw-r--r--meta/conf/machine/include/tune-thumb.inc12
-rw-r--r--meta/conf/machine/include/tune-x86_64.inc4
-rw-r--r--meta/conf/machine/include/tune-xscale.inc21
-rw-r--r--meta/conf/machine/include/zaurus-2.6.inc72
-rw-r--r--meta/conf/machine/include/zaurus-clamshell.inc15
-rw-r--r--meta/conf/machine/mx31ads.conf16
-rw-r--r--meta/conf/machine/mx31litekit.conf14
-rw-r--r--meta/conf/machine/mx31phy.conf17
-rw-r--r--meta/conf/machine/nokia770.conf35
-rw-r--r--meta/conf/machine/nokia800.conf30
-rw-r--r--meta/conf/machine/om-gta01.conf48
-rw-r--r--meta/conf/machine/om-gta02.conf49
-rw-r--r--meta/conf/machine/omap-3430ldp.conf27
-rw-r--r--meta/conf/machine/omap-3430sdp.conf16
-rw-r--r--meta/conf/machine/overo.conf37
-rw-r--r--meta/conf/machine/qemuarm.conf8
-rw-r--r--meta/conf/machine/qemumips.conf13
-rw-r--r--meta/conf/machine/qemuppc.conf11
-rw-r--r--meta/conf/machine/qemux86-64.conf29
-rw-r--r--meta/conf/machine/qemux86.conf25
-rw-r--r--meta/conf/machine/spitz.conf16
-rw-r--r--meta/conf/machine/zylonite.conf24
80 files changed, 1168 insertions, 841 deletions
diff --git a/meta/conf/machine/akita.conf b/meta/conf/machine/akita.conf
deleted file mode 100644
index 0f5eaca9c..000000000
--- a/meta/conf/machine/akita.conf
+++ /dev/null
@@ -1,13 +0,0 @@
-#@TYPE: Machine
-#@NAME: Sharp Zaurus SL-C1000
-#@DESCRIPTION: Machine configuration for the Sharp Zaurus SL-C1000 device
-
-require conf/machine/include/zaurus-2.6.inc
-require conf/machine/include/zaurus-clamshell.inc
-
-PACKAGE_EXTRA_ARCHS += "iwmmxt"
-MACHINE_FEATURES += "iwmmxt"
-
-IMAGE_FSTYPES ?= "jffs2"
-
-ROOT_FLASH_SIZE = "58"
diff --git a/meta/conf/machine/beagleboard.conf b/meta/conf/machine/beagleboard.conf
deleted file mode 100644
index 710fc7617..000000000
--- a/meta/conf/machine/beagleboard.conf
+++ /dev/null
@@ -1,35 +0,0 @@
-#@TYPE: Machine
-#@NAME: Beagleboard machine
-#@DESCRIPTION: Machine configuration for the http://beagleboard.org/ board
-TARGET_ARCH = "arm"
-PACKAGE_EXTRA_ARCHS = "armv4 armv4t armv5te armv6 armv7 armv7a"
-
-PREFERRED_PROVIDER_virtual/xserver = "xserver-kdrive"
-XSERVER = "xserver-kdrive-fbdev"
-
-# Only has DVI connector for external screen
-GUI_MACHINE_CLASS = "bigscreen"
-
-#Ship all kernel modules till the board support has matured enough
-MACHINE_EXTRA_RRECOMMENDS = " kernel-modules"
-
-#include conf/machine/include/tune-arm1136jf-s.inc
-include conf/machine/include/tune-cortexa8.inc
-
-IMAGE_FSTYPES += "tar.bz2 jffs2"
-EXTRA_IMAGECMD_jffs2 = "-lnp "
-
-# Guesswork
-SERIAL_CONSOLE = "115200 ttyS2"
-
-# No kernel recipe yet
-PREFERRED_PROVIDER_virtual/kernel = "linux-omap"
-
-KERNEL_IMAGETYPE = "uImage"
-
-UBOOT_ENTRYPOINT = "0x80008000"
-UBOOT_LOADADDRESS = "0x80008000"
-
-
-# and sdio
-MACHINE_FEATURES = "kernel26 apm usbgadget usbhost vfat alsa"
diff --git a/meta/conf/machine/bootcdx86.conf b/meta/conf/machine/bootcdx86.conf
deleted file mode 100644
index ec0593adc..000000000
--- a/meta/conf/machine/bootcdx86.conf
+++ /dev/null
@@ -1,10 +0,0 @@
-#@TYPE: Machine
-#@NAME: Bootable CD x86 setup
-#@DESCRIPTION: Machine configuration for running an x86 system from bootable CD
-
-require conf/machine/qemux86.conf
-
-MACHINE_FEATURES = "kernel26 alsa screen"
-
-EXTRA_IMAGE_FEATURES = ""
-IMAGE_ROOTFS_SIZE_ext2 = "70000"
diff --git a/meta/conf/machine/c7x0.conf b/meta/conf/machine/c7x0.conf
deleted file mode 100644
index 2b2f1a435..000000000
--- a/meta/conf/machine/c7x0.conf
+++ /dev/null
@@ -1,14 +0,0 @@
-#@TYPE: Machine
-#@NAME: Sharp Zaurus SL-C7x0
-#@DESCRIPTION: Machine configuration for the Sharp Zaurus SL-C700, Sharp Zaurus SL-C750, Sharp Zaurus SL-C760, Sharp Zaurus SL-C860 devices
-
-require conf/machine/include/zaurus-2.6.inc
-require conf/machine/include/zaurus-clamshell.inc
-
-IMAGE_FSTYPES ?= "jffs2"
-
-ROOT_FLASH_SIZE = "25"
-# yes, we are aware that the husky (c760,c860) has 54MB rootfs, but we don't make a special image for it.
-
-#XSERVER = "xserver-kdrive-imageon"
-
diff --git a/meta/conf/machine/cm-x270.conf b/meta/conf/machine/cm-x270.conf
deleted file mode 100644
index 226942de7..000000000
--- a/meta/conf/machine/cm-x270.conf
+++ /dev/null
@@ -1,67 +0,0 @@
-#@TYPE: Machine
-#@Name: Compulab cm-x270
-#@DESCRIPTION: Machine configuration for Compulab cm-x270 computer module
-#OLDEST_KERNEL = "2.6.16"
-TARGET_ARCH = "arm"
-GUI_MACHINE_CLASS ?= "bigscreen"
-
-PREFERRED_PROVIDER_virtual/kernel = "linux"
-PREFERRED_VERSION_linux ?= "2.6.23"
-
-PACKAGE_EXTRA_ARCHS = "armv4 armv4t armv5te iwmmxt"
-
-require conf/machine/include/tune-xscale.inc
-
-# Console serial port.
-# If you have a W module, add the following line to your local.conf:
-# the following line to your local.conf:
-CMX270_CONSOLE_SERIAL_PORT ?= "ttyS0"
-# the following is for the cm-x270 L module
-#CMX270_CONSOLE_SERIAL_PORT ?= "ttyS1"
-
-# NAND flash eraseblock size
-# most of the older cm-x270 modules are populated with NAND flash
-# that have 128KiB eraseblocks. Recently, a user encounted
-# a device that has 16KiB eraseblocks. The following define
-# can be overridden in local.conf if you have one of these devices.
-CMX270_NAND_ERASEBLOCK_SIZE ?= "0x20000"
-
-
-# used by sysvinit_2 package, so rebuild this
-# package if you change the SERIAL_CONSOLE setting
-# the following is the port for the cm-x270 L module
-# I think the W module would use ttyS0, but has
-# not been tested. This can be overwritten in
-# local.conf
-SERIAL_CONSOLE ?= "38400 ${CMX270_CONSOLE_SERIAL_PORT}"
-
-# used by opie-collections.inc
-ROOT_FLASH_SIZE ?= "32"
-
-# for NAND flash.
-EXTRA_IMAGECMD_jffs2 = "--little-endian --eraseblock=${CMX270_NAND_ERASEBLOCK_SIZE} --pad --no-cleanmarkers;\
- sumtool -i ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.jffs2 \
- -o ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs-summary.jffs2 \
- -e ${CMX270_NAND_ERASEBLOCK_SIZE} -p; \
- cd ${DEPLOY_DIR_IMAGE}; \
- rm -f ${DEPLOY_DIR_IMAGE}/${IMAGE_LINK_NAME}.rootfs-summary.jffs2; \
- ln -s ${IMAGE_NAME}.rootfs-summary.jffs2 ${IMAGE_LINK_NAME}.rootfs-summary.jffs2 \
- "
-
-MACHINE_FEATURES = "kernel26 pcmcia usbhost usbgadget pcmcia alsa iwmmxt"
-
-# to program the compulab NAND flash, the following scheme is suggested. Create
-# a small rootfs that can fit in NOR flash using the following config:
-# - Angstrom distro
-# - uclibc (set ANGSTROM_MODE = "uclibc" in local.conf)
-# - angstrom-minimal-image-with-mtd-utils bitbake target
-# - put the following in your local.conf
-# - IMAGE_FSTYPES = "jffs2 tar cpio.gz"
-# now, when you build the image, a cpio.gz will be generated
-# that can be used as an initramfs. You can boot into this image and then
-# program the main rootfs jffs2 image in NAND flash using mtd-utils
-# you can select booting the initramfs, or the main nand rootfs by using
-# the "ramdisk on", or "ramdisk off" commands in the bootloader
-#
-
-
diff --git a/meta/conf/machine/depicture.conf b/meta/conf/machine/depicture.conf
deleted file mode 100644
index 333af4f2f..000000000
--- a/meta/conf/machine/depicture.conf
+++ /dev/null
@@ -1,32 +0,0 @@
-#@TYPE: Machine
-#@NAME: Simtec BBD20EUROU + IM2440D20 (Combination known as: Depicture)
-#@DESCRIPTION: Machine configuration for running an ARM 920t in the BBD20EUROU board.
-
-TARGET_ARCH = "arm"
-PACKAGE_EXTRA_ARCHS = "armv4 armv4t"
-
-require conf/machine/include/qemu.inc
-require conf/machine/include/tune-arm920t.inc
-
-KERNEL_IMAGETYPE = "zImage"
-
-SERIAL_CONSOLE = "115200 ttySAC0"
-
-PREFERRED_PROVIDER_virtual/kernel = "linux-simtec"
-PREFERRED_PROVIDER_virtual/xserver = "xserver-kdrive-fbdev"
-
-MACHINE_FEATURES = "kernel26 alsa usbhost"
-XSERVER = "xserver-kdrive-fbdev"
-
-SERIAL_CONSOLE = "115200 ttySAC0"
-
-# used by some images
-ROOT_FLASH_SIZE = "28"
-
-# Ensure the JFFS2 has summary nodes...
-IMAGE_FSTYPES += " jffs2"
-EXTRA_IMAGECMD_jffs2 = "--little-endian --eraseblock=0x20000 --pagesize=0x800 \
- --no-cleanmarkers --pad -n -x lzo ; sumtool --eraseblock=0x20000 --no-cleanmarkers \
- --littleendian --pad \
- -i ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.jffs2 \
- -o ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.jffs2.summary"
diff --git a/meta/conf/machine/em-x270.conf b/meta/conf/machine/em-x270.conf
deleted file mode 100644
index 47fb8ca53..000000000
--- a/meta/conf/machine/em-x270.conf
+++ /dev/null
@@ -1,65 +0,0 @@
-#@TYPE: Machine
-#@NAME: EM-X270
-#@DESCRIPTION: Machine configuration for the CompuLab EM-X270 with a pxa27x CPU
-
-#
-# Hardware-based properties
-#
-TARGET_ARCH = "arm"
-GUI_MACHINE_CLASS ?= "bigscreen"
-
-PACKAGE_EXTRA_ARCHS = "armv4 armv4t armv5te iwmmxt "
-PREFERRED_PROVIDER_virtual/kernel = "linux"
-
-require conf/machine/include/tune-xscale.inc
-
-# Uncomment this to use iwmmxt optimizations. Remove the above xscale stuff first
-# require conf/machine/include/tune-iwmmxt.inc
-
-IMAGE_DEPENDS_jffs2 += " genext2fs-native "
-ROOT_FLASH_SIZE = "128"
-IMAGE_CMD_jffs2 = " \
- mkfs.jffs2 --root=${IMAGE_ROOTFS} \
- --output=${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.jffs2 \
- --eraseblock=0x20000 --pad --faketime -n; \
- sumtool -i ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.jffs2 \
- -o ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs-summary.jffs2 \
- -e 0x20000 -p; \
- mkdir -p ${WORKDIR}/img; \
- mkdir -p ${WORKDIR}/kern-img/; \
- install -m 0644 `readlink -f ${DEPLOY_DIR_IMAGE}/uImage-em-x270.bin` ${WORKDIR}/kern-img/uImage; \
- mkfs.jffs2 --root=${WORKDIR}/kern-img/ --eraseblock=0x20000 --pad \
- --no-cleanmarkers --faketime --output=${WORKDIR}/img/em-x270-kernel.jffs2; \
- cd ${DEPLOY_DIR_IMAGE}; \
- ln -fs ${IMAGE_NAME}.rootfs-summary.jffs2 ${IMAGE_LINK_NAME}.rootfs-summary.jffs2; \
- install -m 0644 ${DEPLOY_DIR_IMAGE}/${IMAGE_LINK_NAME}.rootfs-summary.jffs2 \
- ${WORKDIR}/img/em-x270-angstrom.jffs2; \
- size=`du -sk ${WORKDIR}/img | cut -f 1` ; ((size *= 120)) ; ((size /= 100)) ; \
- genext2fs -d ${WORKDIR}/img -b $size ${DEPLOY_DIR_IMAGE}/updater-em-x270.ext2 \
-"
-
-#VOLATILE_STORAGE_SIZE = "128"
-MACHINE_DISPLAY_WIDTH_PIXELS ?= "480"
-MACHINE_DISPLAY_HEIGHT_PIXELS ?= "640"
-MACHINE_FEATURES = "kernel26 touchscreen apm alsa bluetooth wifi usbhost usbgadget screen phone "
-
-#
-# Software/packages selection
-#
-
-PREFERRED_PROVIDER_xserver = "xserver-kdrive"
-
-#
-# Modules autoload and other boot properties
-#
-module_autoload_evdev = "evdev"
-module_autoload_mmc_block = "mmc_block"
-module_autoload_pxa27x_udc = "pxa27x_udc"
-
-#FIXME: this should be controlled by a userspace utility later.
-module_autoload_g_ether = "g_ether"
-
-SERIAL_CONSOLE = "115200 ttyS0"
-
-KERNEL_IMAGETYPE = "uImage"
-UBOOT_ENTRYPOINT = "a0008000"
diff --git a/meta/conf/machine/htcuniversal.conf b/meta/conf/machine/htcuniversal.conf
deleted file mode 100644
index 2f5b798bf..000000000
--- a/meta/conf/machine/htcuniversal.conf
+++ /dev/null
@@ -1,33 +0,0 @@
-#@TYPE: Machine
-#@NAME: HTC Universal
-#@DESCRIPTION: Machine configuration for the HTC Universal smartphone
-
-#include conf/machine/include/tune-iwmmxt.inc
-include conf/machine/include/tune-xscale.inc
-
-TARGET_ARCH = "arm"
-PACKAGE_EXTRA_ARCHS = "armv4t armv5te iwmmxt"
-
-PREFERRED_PROVIDER_virtual/kernel = "linux-rp"
-
-MACHINE_FEATURES = "kernel26 apm alsa bluetooth irda screen touchscreen keyboard usbhost usbgadget wifi phone"
-
-MACHINE_EXTRA_RDEPENDS = "zaurusd"
-
-MACHINE_EXTRA_RRECOMMENDS = " \
- kernel-module-htcuniversal-bt \
- kernel-module-htcuniversal-phone \
- kernel-module-i2c-pxa \
- kernel-module-htcuniversal-acx \
- kernel-module-acx \
- kernel-module-usbserial \
- "
-
-module_autoload_acx = "acx"
-module_autoload_htcuniversal_acx = "htcuniversal_acx"
-
-IMAGE_FSTYPES ?= "tar.gz"
-
-# Don't include kernels in standard images for Zaurus machines
-RDEPENDS_kernel-base = ""
-KERNEL_IMAGETYPE = "zImage"
diff --git a/meta/conf/machine/hx2000.conf b/meta/conf/machine/hx2000.conf
deleted file mode 100644
index 8b4c39f80..000000000
--- a/meta/conf/machine/hx2000.conf
+++ /dev/null
@@ -1,49 +0,0 @@
-#@TYPE: Machine
-#@NAME: iPAQ hx2xxx
-#@DESCRIPTION: Machine configuration for the hx2000 iPAQs with a pxa27x CPU
-
-TARGET_ARCH = "arm"
-PACKAGE_EXTRA_ARCHS = "armv4 armv4t armv5te iwmmxt "
-
-PREFERRED_PROVIDER_virtual/kernel = "linux-rp"
-
-PREFERRED_VERSION_orinoco-modules = "0.15rc1"
-
-ROOT_FLASH_SIZE = "80"
-
-EXTRA_IMAGECMD_jffs2 = "; sumtool -i ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.jffs2 \
- -o ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs-summary.jffs2 \
- -e 256KiB -p"
-
-IMAGE_FSTYPES ?= "jffs2 tar.bz2"
-
-MODUTILS = "26"
-
-MACHINE_FEATURES = "kernel26 touchscreen apm alsa pcmcia bluetooth irda wifi usbgadget usbhost screen vfat"
-
-PCMCIA_MANAGER = "pcmciautils"
-
-SERIAL_CONSOLE = "115200 ttyS0"
-
-MACHINE_GUI_CLASS = "smallscreen"
-MACHINE_DISPLAY_WIDTH_PIXELS = "240"
-MACHINE_DISPLAY_HEIGHT_PIXELS = "320"
-
-require conf/machine/include/tune-xscale.inc
-
-# Uncomment this to use iwmmxt optimizations. Remove the above xscale stuff first
-#require conf/machine/include/tune-iwmmxt.inc
-
-module_autoload_evdev = "evdev"
-module_autoload_pcmcia = "pcmcia"
-module_autoload_mmc_block = "mmc_block"
-module_autoload_snd-pcm-oss = "snd-pcm-oss"
-module_autoload_snd-mixer-oss = "snd-mixer-oss"
-module_autoload_pxa27x_udc = "pxa27x_udc"
-
-#FIXME: this should be controlled by a userspace utility later.
-module_autoload_g_ether = "g_ether"
-
-# Don't include kernels in standard images
-RDEPENDS_kernel-base = ""
-KERNEL_IMAGETYPE = "zImage"
diff --git a/meta/conf/machine/include/README b/meta/conf/machine/include/README
new file mode 100644
index 000000000..e4b59c956
--- /dev/null
+++ b/meta/conf/machine/include/README
@@ -0,0 +1,81 @@
+2012/03/30 - Mark Hatle <mark.hatle@windriver.com>
+ - Initial Revision
+
+The individual CPU, and ABI tunings are contained in this directory. A
+number of local and global variables are used to control the way the
+tunings are setup and how they work together to specify an optimized
+configuration.
+
+The following is brief summary of the generic components that are used
+in these tunings.
+
+AVAILTUNES - This is a list of all of the tuning definitions currently
+available in the system. Not all tunes in this list may be compatible
+with the machine configuration, or each other in a multilib
+configuration. Each tuning file can add to this list using "+=", but
+should never replace the list using "=".
+
+DEFAULTTUNE - This specifies the tune to use for a particular build.
+Each tune should specify a reasonable default, which can be overriden by
+a machine or multilib configuration. The specified tune must be listed
+in the AVAILTUNES.
+
+TUNEVALID[feature] - The <feature> is defined with a human readable
+explanation for what it does. All architectural, cpu, abi, etc tuning
+features must be defined using TUNEVALID.
+
+TUNECONFLICTS[feature] - A list of features which conflict with <feature>.
+New sanity checks will try to reject combinations in which a single
+tuning ends up with features which conflict with each other.
+
+TUNE_FEATURES - This is automatically defined as TUNE_FEATURES_tune-<tune>.
+See TUNE_FEATURES_tune-<tune> for more information.
+
+TUNE_FEATURES_tune-<tune> - Specify the features used to describe a
+specific tune. This is a list of features that a tune support, each
+feature must be in the TUNEVALID list. Note: the tune and a given
+feature name may be the same, but they have different purposes. Only
+features may be used to change behavior, while tunes are used to
+describe an overall set of features.
+
+ABIEXTENSION - An ABI extension may be specified by a specific feature
+or other tuning setting, such as TARGET_FPU. Any ABI extensions either
+need to be defined in the architectures base arch file, i.e.
+ABIEXTENSION = "eabi" in the arm case, or appended to in specific tune
+files with a ".=". Spaces are not allowed in this variable.
+
+TUNE_CCARGS - Setup the cflags based on the TUNE_FEATURES settings.
+These should be additive when defined using "+=". All items in this
+list should be dynamic! i.e.
+${@bb.utils.contains("TUNE_FEATURES", "feature", "cflag", "!cflag", d)}
+
+TUNE_ARCH - The GNU canonical arch for a specific architecture. i.e.
+arm, armeb, mips, mips64, etc. This value is by bitbake to setup
+configure. TUNE_ARCH definitions are specific to a given architecture.
+They may be a single static definitions, or may be dynamically adjusted.
+See each architectures README for details for that CPU family.
+
+TUNE_PKGARCH - The package architecture used by the packaging systems to
+define the architecture, abi and tuning of a particular package.
+Similarly to TUNE_ARCH, the definition of TUNE_PKGARCH is specific to
+each architecture. See each architectures README for details for that
+CPU family.
+
+PACKAGE_EXTRA_ARCHS - Lists all runtime compatible package
+architectures. By default this is equal to
+PACKAGE_EXTRA_ARCHS_tune-<tune>. If an architecture deviates from the
+default it will be listed in the architecture README.
+
+PACKAGE_EXTRA_ARCHS_tune-<tune> - List all of the package architectures
+that are compatible with this specific tune. The package arch of this
+tune must be in the list.
+
+TARGET_FPU - The FPU setting for a given tune, hard (generate floating
+point instructions), soft (generate internal gcc calls), "other"
+architecture specific floating point. This is synchronized with the
+compiler and other toolchain items. This should be dynamically
+configured in the same way that TUNE_CCARGS is.
+
+BASE_LIB_tune-<tune> - The "/lib" location for a specific ABI. This is
+used in a multilib configuration to place the libraries in the correct,
+non-conflicting locations.
diff --git a/meta/conf/machine/include/arm/README b/meta/conf/machine/include/arm/README
new file mode 100644
index 000000000..a1beb75fd
--- /dev/null
+++ b/meta/conf/machine/include/arm/README
@@ -0,0 +1,40 @@
+2012/03/30 - Mark Hatle <mark.hatle@windriver.com>
+ - Initial Revision
+
+The ARM architecture definitions are split among a number of files.
+The primary definitions for the variables are handled by the core
+arch-arm.inc file.
+
+TUNE_ARCH is set to either "arm" or "armeb" depending on the value
+of the existence of the "bigendian" feature in a given tune.
+
+A small set of ARM specific variables have been defined to allow
+TUNE_PKGARCH to be automatically defined. Optimized tunings must NOT
+change the definiton of TUNE_PKGARCH. TUNE_PKGACH_tune-<tune> will be
+ignored. The format of the package arch is enforced by the TUNE_PKGARCH
+default. The format must be of the form:
+<armversion>[t][e][hf][b][-vfp][-neon]
+
+TUNE_PKGARCH is defined as:
+${ARMPKGARCH}${ARMPKGSFX_THUMB}${ARMPKGSFX_DSP}${ARMPKGSFX_EABI}${ARMPKGSFX_ENDIAN}${ARMPKGSFX_FPU}
+
+ARMPKGARCH - This is the core package arch component specified by each
+tuning. This is the primary identifier of a tuning. Usual values are:
+arm, armv4, armv5, armv6, armv7a, etc.
+
+ARMPKGSFX_THUMB - This is the thumb specific suffix. Curently it is
+defined in feature-arm-thumb.inc.
+
+ARMPKGSFX_DSP - This is the DSP specific suffix. Currently this is set
+to 'e' when on armv5 and the dsp feature is enabled.
+
+ARMPKGSFX_EABI - This is the eabi specific suffix. There are currently
+two defined ABIs specificed, standard EABI and Hard Float (VFP) EABI.
+When the callconvention-hard is enabled, "hf" is specified, otherwise it
+is blank.
+
+ARMPKGSFX_ENDIAN - This is the endian specific suffix. It is defined in
+the core arch-arm.inc file.
+
+ARMPKGSFX_FPU - This is the FPU specific suffix. The suffix indicates
+specific FPU optimizations. 'vfp' and 'neon' are both defined.
diff --git a/meta/conf/machine/include/arm/arch-arm.inc b/meta/conf/machine/include/arm/arch-arm.inc
new file mode 100644
index 000000000..da5104409
--- /dev/null
+++ b/meta/conf/machine/include/arm/arch-arm.inc
@@ -0,0 +1,17 @@
+
+TUNEVALID[bigendian] = "Enable big-endian mode."
+
+ARMPKGARCH ??= "arm"
+ARMPKGSFX_ENDIAN = "${@bb.utils.contains("TUNE_FEATURES", "bigendian", "b", "", d)}"
+ARMPKGSFX_FPU ??= ""
+ARMPKGSFX_DSP ??= ""
+ARMPKGSFX_EABI ??= ""
+ARMPKGSFX_THUMB ??= ""
+
+TUNE_ARCH = "${@bb.utils.contains("TUNE_FEATURES", "bigendian", "armeb", "arm", d)}"
+TUNE_PKGARCH = "${ARMPKGARCH}${ARMPKGSFX_THUMB}${ARMPKGSFX_DSP}${ARMPKGSFX_EABI}${ARMPKGSFX_ENDIAN}${ARMPKGSFX_FPU}"
+
+ABIEXTENSION = "eabi"
+
+TARGET_FPU = "${@d.getVar('ARMPKGSFX_FPU', True).strip('-') or 'soft'}"
+
diff --git a/meta/conf/machine/include/arm/arch-armv4.inc b/meta/conf/machine/include/arm/arch-armv4.inc
new file mode 100644
index 000000000..a09c32358
--- /dev/null
+++ b/meta/conf/machine/include/arm/arch-armv4.inc
@@ -0,0 +1,25 @@
+DEFAULTTUNE ?= "armv4"
+
+ARMPKGARCH ?= "armv4"
+
+TUNEVALID[armv4] = "Enable instructions for ARMv4"
+TUNE_CCARGS += "${@bb.utils.contains("TUNE_FEATURES", "armv4", "-march=armv4${ARMPKGSFX_THUMB}", "", d)}"
+MACHINEOVERRIDES .= "${@bb.utils.contains("TUNE_FEATURES", "armv4", ":armv4", "" ,d)}"
+
+require conf/machine/include/arm/arch-arm.inc
+require conf/machine/include/arm/feature-arm-thumb.inc
+
+# Little Endian
+AVAILTUNES += "armv4 armv4t"
+TUNE_FEATURES_tune-armv4 ?= "armv4"
+TUNE_FEATURES_tune-armv4t ?= "armv4 thumb"
+PACKAGE_EXTRA_ARCHS_tune-armv4 = "arm armv4"
+PACKAGE_EXTRA_ARCHS_tune-armv4t = "${PACKAGE_EXTRA_ARCHS_tune-armv4} armv4t"
+
+# Big Endian
+AVAILTUNES += "armv4b armv4tb"
+TUNE_FEATURES_tune-armv4b ?= "${TUNE_FEATURES_tune-armv4} bigendian"
+TUNE_FEATURES_tune-armv4tb ?= "${TUNE_FEATURES_tune-armv4t} bigendian"
+PACKAGE_EXTRA_ARCHS_tune-armv4b = "armeb armv4b"
+PACKAGE_EXTRA_ARCHS_tune-armv4tb = "${PACKAGE_EXTRA_ARCHS_tune-armv4} armv4tb"
+
diff --git a/meta/conf/machine/include/arm/arch-armv5-dsp.inc b/meta/conf/machine/include/arm/arch-armv5-dsp.inc
new file mode 100644
index 000000000..0f64562f4
--- /dev/null
+++ b/meta/conf/machine/include/arm/arch-armv5-dsp.inc
@@ -0,0 +1,41 @@
+ARMPKGSFX_DSP = "${@bb.utils.contains("TUNE_FEATURES", [ "armv5", "dsp" ], "e", "", d)}"
+TUNEVALID[dsp] = "ARM DSP functionality"
+
+require conf/machine/include/arm/arch-armv5.inc
+
+# Little Endian
+AVAILTUNES += "armv5e armv5te"
+TUNE_FEATURES_tune-armv5e ?= "armv5 dsp"
+TUNE_FEATURES_tune-armv5te ?= "armv5 dsp thumb"
+PACKAGE_EXTRA_ARCHS_tune-armv5e = "${PACKAGE_EXTRA_ARCHS_tune-armv5} armv5e"
+PACKAGE_EXTRA_ARCHS_tune-armv5te = "${PACKAGE_EXTRA_ARCHS_tune-armv5t} armv5e armv5te"
+
+# Little Endian + VFP/DSP
+AVAILTUNES += "armv5e-vfp armv5te-vfp armv5ehf-vfp armv5tehf-vfp"
+TUNE_FEATURES_tune-armv5e-vfp ?= "armv5 vfp dsp"
+TUNE_FEATURES_tune-armv5te-vfp ?= "armv5 vfp dsp thumb"
+TUNE_FEATURES_tune-armv5ehf-vfp ?= "${TUNE_FEATURES_tune-armv5e-vfp} callconvention-hard"
+TUNE_FEATURES_tune-armv5tehf-vfp ?= "${TUNE_FEATURES_tune-armv5te-vfp} callconvention-hard"
+PACKAGE_EXTRA_ARCHS_tune-armv5e-vfp = "${PACKAGE_EXTRA_ARCHS_tune-armv5-vfp} armv5e armv5e-vfp"
+PACKAGE_EXTRA_ARCHS_tune-armv5te-vfp = "${PACKAGE_EXTRA_ARCHS_tune-armv5t-vfp} armv5e armv5te armv5e-vfp armv5te-vfp"
+PACKAGE_EXTRA_ARCHS_tune-armv5ehf-vfp = "${PACKAGE_EXTRA_ARCHS_tune-armv5hf-vfp} armv5ehf-vfp"
+PACKAGE_EXTRA_ARCHS_tune-armv5tehf-vfp = "${PACKAGE_EXTRA_ARCHS_tune-armv5thf-vfp} armv5ehf-vfp armv5tehf-vfp"
+
+# Big Endian
+AVAILTUNES += "armv5eb armv5teb"
+TUNE_FEATURES_tune-armv5eb ?= "${TUNE_FEATURES_tune-armv5e} bigendian"
+TUNE_FEATURES_tune-armv5teb ?= "${TUNE_FEATURES_tune-armv5te} bigendian"
+PACKAGE_EXTRA_ARCHS_tune-armv5eb = "${PACKAGE_EXTRA_ARCHS_tune-armv5b} armv5eb"
+PACKAGE_EXTRA_ARCHS_tune-armv5teb = "${PACKAGE_EXTRA_ARCHS_tune-armv5tb} armv5eb armv5teb"
+
+# Big Endian + VFP/DSP
+AVAILTUNES += "armv5eb-vfp armv5teb-vfp armv5ehfb-vfp armv5tehfb-vfp"
+TUNE_FEATURES_tune-armv5eb-vfp ?= "${TUNE_FEATURES_tune-armv5e-vfp} bigendian"
+TUNE_FEATURES_tune-armv5teb-vfp ?= "${TUNE_FEATURES_tune-armv5te-vfp} bigendian"
+TUNE_FEATURES_tune-armv5ehfb-vfp ?= "${TUNE_FEATURES_tune-armv5eb-vfp} callconvention-hard"
+TUNE_FEATURES_tune-armv5tehfb-vfp ?= "${TUNE_FEATURES_tune-armv5teb-vfp} callconvention-hard"
+PACKAGE_EXTRA_ARCHS_tune-armv5eb-vfp = "${PACKAGE_EXTRA_ARCHS_tune-armv5b-vfp} armv5eb armv5eb-vfp"
+PACKAGE_EXTRA_ARCHS_tune-armv5teb-vfp = "${PACKAGE_EXTRA_ARCHS_tune-armv5tb-vfp} armv5eb armv5teb armv5eb-vfp armv5teb-vfp"
+PACKAGE_EXTRA_ARCHS_tune-armv5ehfb-vfp = "${PACKAGE_EXTRA_ARCHS_tune-armv5hfb-vfp} armv5ehfb-vfp"
+PACKAGE_EXTRA_ARCHS_tune-armv5tehfb-vfp = "${PACKAGE_EXTRA_ARCHS_tune-armv5thfb-vfp} armv5ehfb-vfp armv5tehfb-vfp"
+
diff --git a/meta/conf/machine/include/arm/arch-armv5.inc b/meta/conf/machine/include/arm/arch-armv5.inc
new file mode 100644
index 000000000..4a75530bb
--- /dev/null
+++ b/meta/conf/machine/include/arm/arch-armv5.inc
@@ -0,0 +1,52 @@
+DEFAULTTUNE ?= "armv5"
+
+ARMPKGARCH ?= "armv5"
+
+TUNEVALID[armv5] = "Enable instructions for ARMv5"
+TUNE_CONFLICTS[armv5] = "armv4"
+TUNE_CCARGS += "${@bb.utils.contains("TUNE_FEATURES", "armv5", "-march=armv5${ARMPKGSFX_THUMB}${ARMPKGSFX_DSP}", "", d)}"
+MACHINEOVERRIDES .= "${@bb.utils.contains("TUNE_FEATURES", "armv5", ":armv5", "" ,d)}"
+
+ARMPKGSFX_DSP = "${@bb.utils.contains("TUNE_FEATURES", [ "armv5", "dsp" ], "e", "", d)}"
+
+require conf/machine/include/arm/arch-armv4.inc
+require conf/machine/include/arm/feature-arm-vfp.inc
+
+# Little Endian
+AVAILTUNES += "armv5 armv5t"
+TUNE_FEATURES_tune-armv5 ?= "armv5"
+TUNE_FEATURES_tune-armv5t ?= "armv5 thumb"
+PACKAGE_EXTRA_ARCHS_tune-armv5 = "${PACKAGE_EXTRA_ARCHS_tune-armv4} armv5"
+PACKAGE_EXTRA_ARCHS_tune-armv5t = "${PACKAGE_EXTRA_ARCHS_tune-armv4t} armv5 armv5t"
+
+# Little Endian + VFP/DSP
+AVAILTUNES += "armv5-vfp armv5t-vfp armv5hf-vfp armv5thf-vfp"
+TUNE_FEATURES_tune-armv5-vfp ?= "armv5 vfp"
+TUNE_FEATURES_tune-armv5t-vfp ?= "armv5 vfp"
+TUNE_FEATURES_tune-armv5hf-vfp ?= "${TUNE_FEATURES_tune-armv5-vfp} callconvention-hard"
+TUNE_FEATURES_tune-armv5thf-vfp ?= "${TUNE_FEATURES_tune-armv5t-vfp} callconvention-hard"
+PACKAGE_EXTRA_ARCHS_tune-armv5-vfp = "${PACKAGE_EXTRA_ARCHS_tune-armv5} armv5-vfp"
+PACKAGE_EXTRA_ARCHS_tune-armv5t-vfp = "${PACKAGE_EXTRA_ARCHS_tune-armv5t} armv5-vfp armv5t-vfp"
+PACKAGE_EXTRA_ARCHS_tune-armv5hf-vfp = "armv5hf-vfp"
+PACKAGE_EXTRA_ARCHS_tune-armv5thf-vfp = "armv5hf-vfp armv5thf-vfp"
+PACKAGE_EXTRA_ARCHS_tune-armv5tehf-vfp = "${PACKAGE_EXTRA_ARCHS_tune-armv5thf-vfp} armv5ehf-vfp armv5tehf-vfp"
+
+# Big Endian
+AVAILTUNES += "armv5b armv5tb"
+TUNE_FEATURES_tune-armv5b ?= "${TUNE_FEATURES_tune-armv5} bigendian"
+TUNE_FEATURES_tune-armv5tb ?= "${TUNE_FEATURES_tune-armv5t} bigendian"
+PACKAGE_EXTRA_ARCHS_tune-armv5b = "${PACKAGE_EXTRA_ARCHS_tune-armv4} armv5b"
+PACKAGE_EXTRA_ARCHS_tune-armv5tb = "${PACKAGE_EXTRA_ARCHS_tune-armv4t} armv5b armv5tb"
+
+# Big Endian + VFP/DSP
+AVAILTUNES += "armv5b-vfp armv5tb-vfp armv5hfb-vfp armv5thfb-vfp"
+TUNE_FEATURES_tune-armv5b-vfp ?= "${TUNE_FEATURES_tune-armv5-vfp} bigendian"
+TUNE_FEATURES_tune-armv5tb-vfp ?= "${TUNE_FEATURES_tune-armv5t-vfp} bigendian"
+TUNE_FEATURES_tune-armv5hfb-vfp ?= "${TUNE_FEATURES_tune-armv5b-vfp} callconvention-hard"
+TUNE_FEATURES_tune-armv5thfb-vfp ?= "${TUNE_FEATURES_tune-armv5tb-vfp} callconvention-hard"
+PACKAGE_EXTRA_ARCHS_tune-armv5b-vfp = "${PACKAGE_EXTRA_ARCHS_tune-armv5} armv5b-vfp"
+PACKAGE_EXTRA_ARCHS_tune-armv5tb-vfp = "${PACKAGE_EXTRA_ARCHS_tune-armv5t} armv5b-vfp armv5tb-vfp"
+PACKAGE_EXTRA_ARCHS_tune-armv5hfb-vfp = "armv5hfb-vfp"
+PACKAGE_EXTRA_ARCHS_tune-armv5thfb-vfp = "armv5hfb-vfp armv5thfb-vfp"
+
+
diff --git a/meta/conf/machine/include/arm/arch-armv6.inc b/meta/conf/machine/include/arm/arch-armv6.inc
new file mode 100644
index 000000000..da8274e29
--- /dev/null
+++ b/meta/conf/machine/include/arm/arch-armv6.inc
@@ -0,0 +1,33 @@
+DEFAULTTUNE ?= "armv6"
+
+ARMPKGARCH ?= "armv6"
+
+TUNEVALID[armv6] = "Enable instructions for ARMv6"
+TUNE_CONFLICTS[armv6] = "armv4 armv5"
+TUNE_CCARGS += "${@bb.utils.contains("TUNE_FEATURES", "armv6", "-march=armv6", "", d)}"
+MACHINEOVERRIDES .= "${@bb.utils.contains("TUNE_FEATURES", "armv6", ":armv6", "" ,d)}"
+
+require conf/machine/include/arm/arch-armv5-dsp.inc
+
+# Little Endian
+AVAILTUNES += "armv6 armv6t armv6hf armv6thf"
+TUNE_FEATURES_tune-armv6 ?= "armv6 vfp"
+TUNE_FEATURES_tune-armv6t ?= "armv6 vfp thumb"
+TUNE_FEATURES_tune-armv6hf ?= "${TUNE_FEATURES_tune-armv6} callconvention-hard"
+TUNE_FEATURES_tune-armv6thf ?= "${TUNE_FEATURES_tune-armv6t} callconvention-hard"
+PACKAGE_EXTRA_ARCHS_tune-armv6 = "${PACKAGE_EXTRA_ARCHS_tune-armv5e-vfp} armv6-vfp"
+PACKAGE_EXTRA_ARCHS_tune-armv6t = "${PACKAGE_EXTRA_ARCHS_tune-armv5te-vfp} armv6-vfp armv6t-vfp"
+PACKAGE_EXTRA_ARCHS_tune-armv6hf = "${PACKAGE_EXTRA_ARCHS_tune-armv5ehf-vfp} armv6hf-vfp"
+PACKAGE_EXTRA_ARCHS_tune-armv6thf = "${PACKAGE_EXTRA_ARCHS_tune-armv5tehf-vfp} armv6hf-vfp armv6thf-vfp"
+
+# Big Endian
+AVAILTUNES += "armv6b armv6tb armv6hfb armv6thfb"
+TUNE_FEATURES_tune-armv6b ?= "${TUNE_FEATURES_tune-armv6} bigendian"
+TUNE_FEATURES_tune-armv6tb ?= "${TUNE_FEATURES_tune-armv6t} bigendian"
+TUNE_FEATURES_tune-armv6hfb ?= "${TUNE_FEATURES_tune-armv6b} callconvention-hard"
+TUNE_FEATURES_tune-armv6thfb ?= "${TUNE_FEATURES_tune-armv6tb} callconvention-hard"
+PACKAGE_EXTRA_ARCHS_tune-armv6b = "${PACKAGE_EXTRA_ARCHS_tune-armv5eb-vfp} armv6b-vfp"
+PACKAGE_EXTRA_ARCHS_tune-armv6tb = "${PACKAGE_EXTRA_ARCHS_tune-armv5teb-vfp} armv6b-vfp armv6tb-vfp"
+PACKAGE_EXTRA_ARCHS_tune-armv6hfb = "${PACKAGE_EXTRA_ARCHS_tune-armv5ehfb-vfp} armv6hfb-vfp"
+PACKAGE_EXTRA_ARCHS_tune-armv6thfb = "${PACKAGE_EXTRA_ARCHS_tune-armv5tehfb-vfp} armv6hfb-vfp armv6thfb-vfp"
+
diff --git a/meta/conf/machine/include/arm/arch-armv7a.inc b/meta/conf/machine/include/arm/arch-armv7a.inc
new file mode 100644
index 000000000..c90aff5ae
--- /dev/null
+++ b/meta/conf/machine/include/arm/arch-armv7a.inc
@@ -0,0 +1,56 @@
+DEFAULTTUNE ?= "armv7a"
+
+ARMPKGARCH ?= "armv7a"
+
+TUNEVALID[armv7a] = "Enable instructions for ARMv7-a"
+TUNE_CONFLICTS[armv7a] = "armv4 armv5 armv6 armv7"
+TUNE_CCARGS += "${@bb.utils.contains("TUNE_FEATURES", "armv7a", "-march=armv7-a -fno-tree-vectorize", "", d)}"
+MACHINEOVERRIDES .= "${@bb.utils.contains("TUNE_FEATURES", "armv7a", ":armv7a", "" ,d)}"
+
+require conf/machine/include/arm/arch-armv6.inc
+require conf/machine/include/arm/feature-arm-neon.inc
+
+# Little Endian base configs
+AVAILTUNES += "armv7a armv7at armv7a-neon armv7at-neon"
+TUNE_FEATURES_tune-armv7a ?= "armv7a vfp"
+TUNE_FEATURES_tune-armv7at ?= "armv7a vfp thumb"
+TUNE_FEATURES_tune-armv7a-neon ?= "armv7a vfp neon"
+TUNE_FEATURES_tune-armv7at-neon ?= "armv7a vfp neon thumb"
+PACKAGE_EXTRA_ARCHS_tune-armv7a = "${PACKAGE_EXTRA_ARCHS_tune-armv6} armv7a armv7a-vfp"
+PACKAGE_EXTRA_ARCHS_tune-armv7a-neon = "${PACKAGE_EXTRA_ARCHS_tune-armv7a} armv7a-vfp-neon"
+PACKAGE_EXTRA_ARCHS_tune-armv7at = "${PACKAGE_EXTRA_ARCHS_tune-armv6t} armv7a armv7a-vfp armv7at2-vfp"
+PACKAGE_EXTRA_ARCHS_tune-armv7at-neon = "${PACKAGE_EXTRA_ARCHS_tune-armv7at} armv7a-vfp-neon armv7at2-vfp-neon"
+
+# VFP Tunes
+AVAILTUNES += "armv7ahf armv7athf armv7ahf-neon armv7athf-neon"
+TUNE_FEATURES_tune-armv7ahf ?= "${TUNE_FEATURES_tune-armv7a} callconvention-hard"
+TUNE_FEATURES_tune-armv7athf ?= "${TUNE_FEATURES_tune-armv7at} callconvention-hard"
+TUNE_FEATURES_tune-armv7ahf-neon ?= "${TUNE_FEATURES_tune-armv7a-neon} callconvention-hard"
+TUNE_FEATURES_tune-armv7athf-neon ?= "${TUNE_FEATURES_tune-armv7at-neon} callconvention-hard"
+PACKAGE_EXTRA_ARCHS_tune-armv7ahf = "${PACKAGE_EXTRA_ARCHS_tune-armv6hf} armv7ahf-vfp"
+PACKAGE_EXTRA_ARCHS_tune-armv7athf = "${PACKAGE_EXTRA_ARCHS_tune-armv6thf} armv7ahf-vfp armv7at2hf-vfp"
+PACKAGE_EXTRA_ARCHS_tune-armv7ahf-neon = "${PACKAGE_EXTRA_ARCHS_tune-armv7ahf} armv7ahf-vfp-neon"
+PACKAGE_EXTRA_ARCHS_tune-armv7athf-neon = "${PACKAGE_EXTRA_ARCHS_tune-armv7athf} armv7ahf-vfp-neon armv7at2hf-vfp-neon"
+
+# Big Endian
+AVAILTUNES += "armv7ab armv7atb armv7ab-neon armv7atb-neon"
+TUNE_FEATURES_tune-armv7ab ?= "${TUNE_FEATURES_tune-armv7a} bigendian"
+TUNE_FEATURES_tune-armv7atb ?= "${TUNE_FEATURES_tune-armv7at} bigendian"
+TUNE_FEATURES_tune-armv7ab-neon ?= "${TUNE_FEATURES_tune-armv7a-neon} bigendian"
+TUNE_FEATURES_tune-armv7atb-neon ?= "${TUNE_FEATURES_tune-armv7at-neon} bigendian"
+PACKAGE_EXTRA_ARCHS_tune-armv7ab = "${PACKAGE_EXTRA_ARCHS_tune-armv6} armv7ab-vfp"
+PACKAGE_EXTRA_ARCHS_tune-armv7atb = "${PACKAGE_EXTRA_ARCHS_tune-armv6t} armv7ab-vfp armv7at2b-vfp"
+PACKAGE_EXTRA_ARCHS_tune-armv7ab-neon = "${PACKAGE_EXTRA_ARCHS_tune-armv7a} armv7ab-vfp-neon"
+PACKAGE_EXTRA_ARCHS_tune-armv7atb-neon = "${PACKAGE_EXTRA_ARCHS_tune-armv7at} armv7ab-vfp-neon armv7at2b-vfp-neon"
+
+# Big Endian + VFP
+AVAILTUNES += "armv7ahfb armv7athfb armv7ahfb-neon armv7athfb-neon"
+TUNE_FEATURES_tune-armv7ahfb ?= "${TUNE_FEATURES_tune-armv7ab} callconvention-hard"
+TUNE_FEATURES_tune-armv7athfb ?= "${TUNE_FEATURES_tune-armv7atb} callconvention-hard"
+TUNE_FEATURES_tune-armv7ahfb-neon ?= "${TUNE_FEATURES_tune-armv7ab-neon} callconvention-hard"
+TUNE_FEATURES_tune-armv7athfb-neon ?= "${TUNE_FEATURES_tune-armv7atb-neon} callconvention-hard"
+PACKAGE_EXTRA_ARCHS_tune-armv7ahfb = "${PACKAGE_EXTRA_ARCHS_tune-armv6hfb} armv7ahfb-vfp"
+PACKAGE_EXTRA_ARCHS_tune-armv7athfb = "${PACKAGE_EXTRA_ARCHS_tune-armv6thfb} armv7ahfb-vfp armv7at2hfb-vfp"
+PACKAGE_EXTRA_ARCHS_tune-armv7ahfb-neon = "${PACKAGE_EXTRA_ARCHS_tune-armv7ahfb} armv7ahfb-vfp-neon"
+PACKAGE_EXTRA_ARCHS_tune-armv7athfb-neon = "${PACKAGE_EXTRA_ARCHS_tune-armv7athfb} armv7ahfb-vfp-neon armv7at2hfb-vfp-neon"
+
diff --git a/meta/conf/machine/include/arm/feature-arm-neon.inc b/meta/conf/machine/include/arm/feature-arm-neon.inc
new file mode 100644
index 000000000..a7dac0387
--- /dev/null
+++ b/meta/conf/machine/include/arm/feature-arm-neon.inc
@@ -0,0 +1,3 @@
+TUNEVALID[neon] = "Enable Neon SIMD accelerator unit."
+TUNE_CCARGS += "${@bb.utils.contains("TUNE_FEATURES", "neon", "-mfpu=neon", "" ,d)}"
+ARMPKGSFX_FPU .= "${@bb.utils.contains("TUNE_FEATURES", "neon", "-neon", "" ,d)}"
diff --git a/meta/conf/machine/include/arm/feature-arm-thumb.inc b/meta/conf/machine/include/arm/feature-arm-thumb.inc
new file mode 100644
index 000000000..d094529d2
--- /dev/null
+++ b/meta/conf/machine/include/arm/feature-arm-thumb.inc
@@ -0,0 +1,26 @@
+# The instruction set the compiler should use when generating application
+# code. The kernel is always compiled with arm code at present. arm code
+# is the original 32 bit ARM instruction set, thumb code is the 16 bit
+# encoded RISC sub-set. Thumb code is smaller (maybe 70% of the ARM size)
+# but requires more instructions (140% for 70% smaller code) so may be
+# slower.
+TUNEVALID[thumb] = "Use thumb instructions instead of ARM"
+ARM_THUMB_M_OPT = "${@['-marm', '-mthumb'][d.getVar('ARM_INSTRUCTION_SET', True) == 'thumb']}"
+TUNE_CCARGS += "${@bb.utils.contains("TUNE_FEATURES", "thumb", "${ARM_THUMB_M_OPT}", "", d)}"
+OVERRIDES .= "${@bb.utils.contains("TUNE_FEATURES", "thumb", ":thumb", "", d)}"
+
+# Note armv7 will hit on armv7a as well
+ARMPKGSFX_THUMB .= "${@bb.utils.contains("TUNE_FEATURES", [ "armv4", "thumb" ], "t", "", d)}"
+ARMPKGSFX_THUMB .= "${@bb.utils.contains("TUNE_FEATURES", [ "armv5", "thumb" ], "t", "", d)}"
+ARMPKGSFX_THUMB .= "${@bb.utils.contains("TUNE_FEATURES", [ "armv6", "thumb" ], "t", "", d)}"
+ARMPKGSFX_THUMB .= "${@bb.utils.contains("TUNE_FEATURES", [ "armv7", "thumb" ], "t2", "", d)}"
+
+# Whether to compile with code to allow interworking between the two
+# instruction sets. This allows thumb code to be executed on a primarily
+# arm system and vice versa. It is strongly recommended that DISTROs not
+# turn this off - the actual cost is very small.
+TUNEVALID[no-thumb-interwork] = "Disable mixing of thumb and ARM functions"
+TUNE_CCARGS += "${@bb.utils.contains("TUNE_FEATURES", "no-thumb-interwork", "-mno-thumb-interwork", "-mthumb-interwork", d)}"
+OVERRIDES .= "${@bb.utils.contains("TUNE_FEATURES", "no-thumb-interwork", ":thumb-interwork", "", d)}"
+
+TARGET_CC_KERNEL_ARCH += "-mno-thumb-interwork -marm"
diff --git a/meta/conf/machine/include/arm/feature-arm-vfp.inc b/meta/conf/machine/include/arm/feature-arm-vfp.inc
new file mode 100644
index 000000000..29a925c3f
--- /dev/null
+++ b/meta/conf/machine/include/arm/feature-arm-vfp.inc
@@ -0,0 +1,6 @@
+TUNEVALID[vfp] = "Enable Vector Floating Point (vfp) unit."
+ARMPKGSFX_FPU .= "${@bb.utils.contains("TUNE_FEATURES", "vfp", "-vfp", "" ,d)}"
+
+TUNEVALID[callconvention-hard] = "Enable EABI hard float call convention, requires VFP."
+TUNE_CCARGS += "${@bb.utils.contains("TUNE_FEATURES", "vfp", bb.utils.contains("TUNE_FEATURES", "callconvention-hard", "-mfloat-abi=hard", "-mfloat-abi=softfp", d), "" ,d)}"
+ARMPKGSFX_EABI .= "${@bb.utils.contains("TUNE_FEATURES", [ "callconvention-hard", "vfp" ], "hf", "", d)}"
diff --git a/meta/conf/machine/include/ia32/README b/meta/conf/machine/include/ia32/README
new file mode 100644
index 000000000..8f80a5ba9
--- /dev/null
+++ b/meta/conf/machine/include/ia32/README
@@ -0,0 +1,24 @@
+2012/03/30 - Mark Hatle <mark.hatle@windriver.com>
+ - Initial version
+
+Most of the items for the IA architecture are defined in the single
+arch-ia32 file.
+
+Three ABIs are define, m32, mx32 and m64.
+
+The following is the list of ia32 specific variables:
+
+X86ARCH32 - This is the 32-bit architecture GNU canonical arch, TUNE_ARCH.
+
+X86ARCH64 - This is the 64-bit architecture GNU canonical arch, TUNE_ARCH.
+
+The TUNE_PKGARCH is defined as follows:
+
+TUNE_PKGARCH = ${TUNE_PKGARCH_tune-${DEFAULTTUNE}}
+
+The package architecture for 32-bit targets is historical and generally
+set to to match the core compatible processor type, i.e. i386.
+
+For 64-bit architectures, the architecture is expected to end in '_64'.
+
+If the x32 ABI is used, then the _64 is further extended with a '_x32'.
diff --git a/meta/conf/machine/include/ia32/arch-ia32.inc b/meta/conf/machine/include/ia32/arch-ia32.inc
new file mode 100644
index 000000000..15f67d7c6
--- /dev/null
+++ b/meta/conf/machine/include/ia32/arch-ia32.inc
@@ -0,0 +1,51 @@
+#
+# IA32 Architecture definition
+#
+
+DEFAULTTUNE ?= "x86"
+TARGET_FPU ?= ""
+X86ARCH32 ?= "i586"
+X86ARCH64 ?= "x86_64"
+
+TUNE_PKGARCH = "${TUNE_PKGARCH_tune-${DEFAULTTUNE}}"
+
+# ELF32 ABI
+TUNEVALID[m32] = "IA32 ELF32 standard ABI"
+TUNECONFLICTS[m32] = "m64 mx32"
+TUNE_ARCH .= "${@bb.utils.contains("TUNE_FEATURES", "m32", "${X86ARCH32}", "" ,d)}"
+TUNE_CCARGS += "${@bb.utils.contains("TUNE_FEATURES", "m32", "-m32", "", d)}"
+MACHINEOVERRIDES .= "${@bb.utils.contains("TUNE_FEATURES", "m32", ":x86", "" ,d)}"
+
+# x32 ABI
+TUNEVALID[mx32] = "IA32e (x86_64) ELF32 standard ABI"
+TUNECONFLICTS[mx32] = "m64 m32"
+TUNE_ARCH .= "${@bb.utils.contains("TUNE_FEATURES", "mx32", "${X86ARCH64}", "" ,d)}"
+ABIEXTENSION .= "${@bb.utils.contains("TUNE_FEATURES", "mx32", "x32", "" ,d)}"
+TUNE_CCARGS += "${@bb.utils.contains("TUNE_FEATURES", "mx32", "-mx32", "", d)}"
+TUNE_LDARGS += "${@bb.utils.contains("TUNE_FEATURES", "mx32", "-m elf32_x86_64", "", d)}"
+TUNE_ASARGS += "${@bb.utils.contains("TUNE_FEATURES", "mx32", "-x32", "", d)}"
+
+# ELF64 ABI
+TUNEVALID[m64] = "IA32e (x86_64) ELF64 standard ABI"
+TUNECONFLICTS[m64] = "m32 mx32"
+TUNE_ARCH .= "${@bb.utils.contains("TUNE_FEATURES", "m64", "${X86ARCH64}", "" ,d)}"
+TUNE_CCARGS += "${@bb.utils.contains("TUNE_FEATURES", "m64", "-m64", "", d)}"
+
+# Default Tune configurations
+AVAILTUNES += "x86"
+TUNE_FEATURES_tune-x86 = "m32"
+BASE_LIB_tune-x86 = "lib"
+TUNE_PKGARCH_tune-x86 = "x86"
+PACKAGE_EXTRA_ARCHS_tune-x86 = "${TUNE_PKGARCH_tune-x86}"
+
+AVAILTUNES += "x86-64"
+TUNE_FEATURES_tune-x86-64 = "m64"
+BASE_LIB_tune-x86-64 = "lib64"
+TUNE_PKGARCH_tune-x86-64 = "x86_64"
+PACKAGE_EXTRA_ARCHS_tune-x86-64 = "${TUNE_PKGARCH_tune-x86-64}"
+
+AVAILTUNES += "x86-64-x32"
+TUNE_FEATURES_tune-x86-64-x32 = "mx32"
+BASE_LIB_tune-x86-64-x32 = "libx32"
+TUNE_PKGARCH_tune-x86-64-x32 = "x86_64_x32"
+PACKAGE_EXTRA_ARCHS_tune-x86-64-x32 = "${TUNE_PKGARCH_tune-x86-64-x32}"
diff --git a/meta/conf/machine/include/mips/README b/meta/conf/machine/include/mips/README
new file mode 100644
index 000000000..c375f316d
--- /dev/null
+++ b/meta/conf/machine/include/mips/README
@@ -0,0 +1,36 @@
+2012/03/30 - Mark Hatle <mark.hatle@windriver.com>
+ - Initial Version
+
+MIPS currently defines 12 ABIs. Combinations of:
+ *) Big/Little Endian
+ *) Hardware/Software Floating Point
+ *) o32, n32, n64 ABI
+
+TUNE_ARCH, the GNU canonical arch, is defined as:
+
+mips${MIPSPKGSFX_BYTE}${MIPSPKGSFX_ENDIAN}
+
+The package arch is defined in such a way to generated a standard naming
+scheme. The scheme is: <mips variant>[-nf][-n32]
+
+TUNE_PKGARCH is defined as:
+
+${MIPSPKGSFX_VARIANT_tune-${DEFAULTTUNE}}${MIPSPKGSFX_FPU}${MIPSPKGSFX_ABI}
+
+The following is a list of MIPS specific variables:
+
+MIPSPKGSFX_BYTE - This is defined as either blank and "64" for MIPS64 CPUs.
+
+MIPSPKGSFX_ENDIAN - For bigendian hardware this is blank, otherwise it's
+defined as "el".
+
+MIPSPKGSFX_VARIANT_tune-<tune> - In the default tunings it is set to the
+same value as TUNE_ARCH. In custom, optimized tunings, the value should
+be modified to more precisely describe the tuning.
+
+MIPSPKGSFX_FPU - The value is set to "" or "-nf", where "-nf" indicates
+that the tune is using a non-floating point ABI.
+
+MIPSPKGSFX_ABI - This is used to specify an alternative ABI when the previous
+values are not enough to distringuish the package. "-n32" is added when
+building for N32 ABI.
diff --git a/meta/conf/machine/include/mips/arch-mips.inc b/meta/conf/machine/include/mips/arch-mips.inc
new file mode 100644
index 000000000..9f1292084
--- /dev/null
+++ b/meta/conf/machine/include/mips/arch-mips.inc
@@ -0,0 +1,101 @@
+# MIPS Architecture definition
+# 12 defined ABIs, all combinations of:
+# *) Big/Little Endian
+# *) Hardware/Software Floating Point
+# *) o32, n32, n64 ABI
+
+DEFAULTTUNE ?= "mips"
+
+# Endianess
+TUNEVALID[bigendian] = "Enable big-endian mode"
+TUNE_CCARGS += "${@bb.utils.contains("TUNE_FEATURES", "bigendian", "-meb", "-mel", d)}"
+
+# ABI flags
+TUNEVALID[o32] = "MIPS o32 ABI"
+TUNECONFLICTS[o32] = "n32 n64"
+TUNE_CCARGS += "${@bb.utils.contains("TUNE_FEATURES", "o32", "-mabi=32", "", d)}"
+
+TUNEVALID[n32] = "MIPS64 n32 ABI"
+TUNECONFLICTS[n32] = "o32 n64"
+TUNE_CCARGS += "${@bb.utils.contains("TUNE_FEATURES", "n32", "-mabi=n32", "", d)}"
+
+TUNEVALID[n64] = "MIPS64 n64 ABI"
+TUNECONFLICTS[n64] = "o32 n32"
+TUNE_CCARGS += "${@bb.utils.contains("TUNE_FEATURES", "n64", "-mabi=64", "", d)}"
+
+# Floating point
+TUNEVALID[fpu-hard] = "Use hardware FPU"
+TUNE_CCARGS += "${@bb.utils.contains("TUNE_FEATURES", "fpu-hard", "-mhard-float", "-msoft-float", d)}"
+TARGET_FPU = "${@bb.utils.contains("TUNE_FEATURES", "fpu-hard", "", "soft", d)}"
+
+# Package naming
+MIPSPKGSFX_ENDIAN = "${@bb.utils.contains("TUNE_FEATURES", "bigendian", "", "el", d)}"
+MIPSPKGSFX_BYTE = "${@bb.utils.contains("TUNE_FEATURES", "n64" , "64", "", d)}"
+MIPSPKGSFX_BYTE .= "${@bb.utils.contains("TUNE_FEATURES", "n32" , "64", "", d)}"
+MIPSPKGSFX_FPU = "${@bb.utils.contains("TUNE_FEATURES", "fpu-hard" , "", "-nf", d)}"
+MIPSPKGSFX_ABI = "${@bb.utils.contains("TUNE_FEATURES", "n32", "-n32", "", d)}"
+
+TUNE_ARCH = "mips${MIPSPKGSFX_BYTE}${MIPSPKGSFX_ENDIAN}"
+TUNE_PKGARCH = "${MIPSPKGSFX_VARIANT_tune-${DEFAULTTUNE}}${MIPSPKGSFX_FPU}${MIPSPKGSFX_ABI}"
+
+# Base tunes
+AVAILTUNES += "mips mips64-n32 mips64 mipsel mips64el-n32 mips64el mips-nf mips64-nf-n32 mips64-nf mipsel-nf mips64el-nf-n32 mips64el-nf"
+TUNE_FEATURES_tune-mips = "o32 bigendian fpu-hard"
+BASE_LIB_tune-mips = "lib"
+MIPSPKGSFX_VARIANT_tune-mips = "${TUNE_ARCH}"
+PACKAGE_EXTRA_ARCHS_tune-mips = "mips"
+
+TUNE_FEATURES_tune-mips64-n32 = "n32 bigendian fpu-hard"
+BASE_LIB_tune-mips64-n32 = "lib32"
+MIPSPKGSFX_VARIANT_tune-mips64-n32 = "${TUNE_ARCH}"
+PACKAGE_EXTRA_ARCHS_tune-mips64-n32 = "mips64-n32"
+
+TUNE_FEATURES_tune-mips64 = "n64 bigendian fpu-hard"
+BASE_LIB_tune-mips64 = "lib64"
+MIPSPKGSFX_VARIANT_tune-mips64 = "${TUNE_ARCH}"
+PACKAGE_EXTRA_ARCHS_tune-mips64 = "mips64"
+
+TUNE_FEATURES_tune-mipsel = "o32 fpu-hard"
+BASE_LIB_tune-mipsel = "lib"
+MIPSPKGSFX_VARIANT_tune-mipsel = "${TUNE_ARCH}"
+PACKAGE_EXTRA_ARCHS_tune-mipsel = "mipsel"
+
+TUNE_FEATURES_tune-mips64el-n32 = "n32 fpu-hard"
+BASE_LIB_tune-mips64el-n32 = "lib32"
+MIPSPKGSFX_VARIANT_tune-mips64el-n32 = "${TUNE_ARCH}"
+PACKAGE_EXTRA_ARCHS_tune-mips64el-n32 = "mips64el-n32"
+
+TUNE_FEATURES_tune-mips64el = "n64 fpu-hard"
+BASE_LIB_tune-mips64el = "lib64"
+MIPSPKGSFX_VARIANT_tune-mips64el = "${TUNE_ARCH}"
+PACKAGE_EXTRA_ARCHS_tune-mips64el = "mips64el"
+
+TUNE_FEATURES_tune-mips-nf = "o32 bigendian"
+BASE_LIB_tune-mips-nf = "lib"
+MIPSPKGSFX_VARIANT_tune-mips-nf = "${TUNE_ARCH}"
+PACKAGE_EXTRA_ARCHS_tune-mips-nf = "mips-nf"
+
+TUNE_FEATURES_tune-mips64-nf-n32 = "n32 bigendian"
+BASE_LIB_tune-mips64-nf-n32 = "lib32"
+MIPSPKGSFX_VARIANT_tune-mips64-nf-n32 = "${TUNE_ARCH}"
+PACKAGE_EXTRA_ARCHS_tune-mips64-nf-n32 = "mips64-nf-n32"
+
+TUNE_FEATURES_tune-mips64-nf = "n64 bigendian"
+BASE_LIB_tune-mips64-nf = "lib64"
+MIPSPKGSFX_VARIANT_tune-mips64-nf = "${TUNE_ARCH}"
+PACKAGE_EXTRA_ARCHS_tune-mips64-nf = "mips64-nf"
+
+TUNE_FEATURES_tune-mipsel-nf = "o32"
+BASE_LIB_tune-mipsel-nf = "lib"
+MIPSPKGSFX_VARIANT_tune-mipsel-nf = "${TUNE_ARCH}"
+PACKAGE_EXTRA_ARCHS_tune-mipsel-nf = "mipsel-nf"
+
+TUNE_FEATURES_tune-mips64el-nf-n32 = "n32"
+BASE_LIB_tune-mips64el-nf-n32 = "lib32"
+MIPSPKGSFX_VARIANT_tune-mips64el-nf-n32 = "${TUNE_ARCH}"
+PACKAGE_EXTRA_ARCHS_tune-mips64el-nf-n32 = "mips64el-nf-n32"
+
+TUNE_FEATURES_tune-mips64el-nf = "n64"
+BASE_LIB_tune-mips64el-nf = "lib64"
+MIPSPKGSFX_VARIANT_tune-mips64el-nf = "${TUNE_ARCH}"
+PACKAGE_EXTRA_ARCHS_tune-mips64el-nf = "mips64el-nf"
diff --git a/meta/conf/machine/include/powerpc/README b/meta/conf/machine/include/powerpc/README
new file mode 100644
index 000000000..e87fb5082
--- /dev/null
+++ b/meta/conf/machine/include/powerpc/README
@@ -0,0 +1,17 @@
+2012/03/30 - Mark Hatle <mark.hatle@windriver.com>
+ - Initial revision
+
+There are 4 primary PowerPC ABIs.
+# *) Hard/Soft Floating Point
+# *) 32-bit/64-bit
+
+TUNE_ARCH is defined as either "powerpc" or "powerpc64" based on the m32
+or m64 feature.
+
+May of the PowerPC package archictures are based on legacy Linux names.
+However, a general naming scheme should be similar to: ppc[64][<family>][-nf].
+(Note: the default package architectures are "powerpc" and "powerpc64".)
+
+TUNE_PKGARCH is defined as TUNE_PKGARCH_tune-${DEFAULTTUNE}. All
+PowerPC tunings are required to define TUNE_PKGARCH_tune-<tune>.
+
diff --git a/meta/conf/machine/include/powerpc/arch-powerpc.inc b/meta/conf/machine/include/powerpc/arch-powerpc.inc
new file mode 100644
index 000000000..12909d965
--- /dev/null
+++ b/meta/conf/machine/include/powerpc/arch-powerpc.inc
@@ -0,0 +1,32 @@
+# Power Architecture definition
+# Four defined ABIs, all combinations of:
+# *) Hard/Soft Floating Point
+# *) 32-bit/64-bit
+
+DEFAULTTUNE ?= "powerpc"
+
+TUNE_PKGARCH = "${TUNE_PKGARCH_tune-${DEFAULTTUNE}}"
+ABIEXTENSION ?= ""
+
+TUNEVALID[m32] = "Power ELF32 standard ABI"
+TUNE_CCARGS += "${@bb.utils.contains("TUNE_FEATURES", "m32", "-m32", "", d)}"
+TUNE_ARCH .= "${@bb.utils.contains("TUNE_FEATURES", "m32", "powerpc", "", d)}"
+
+TUNEVALID[fpu-hard] = "Use hardware FPU."
+TUNE_CCARGS += "${@bb.utils.contains("TUNE_FEATURES", "fpu-hard", "-mhard-float", "", d)}"
+
+TUNEVALID[fpu-soft] = "Use software FPU."
+TUNE_CCARGS += "${@bb.utils.contains("TUNE_FEATURES", "fpu-soft", "-msoft-float", "", d)}"
+TARGET_FPU .= "${@bb.utils.contains("TUNE_FEATURES", "fpu-soft", "soft", "", d)}"
+
+# Basic tune definitions
+AVAILTUNES += "powerpc powerpc-nf"
+TUNE_FEATURES_tune-powerpc-nf = "m32 fpu-soft"
+BASE_LIB_tune-powerpc-nf = "lib"
+TUNE_PKGARCH_tune-powerpc-nf = "powerpc-nf"
+PACKAGE_EXTRA_ARCHS_tune-powerpc-nf = "powerpc-nf"
+
+TUNE_FEATURES_tune-powerpc = "m32 fpu-hard"
+BASE_LIB_tune-powerpc = "lib"
+TUNE_PKGARCH_tune-powerpc = "powerpc"
+PACKAGE_EXTRA_ARCHS_tune-powerpc = "powerpc"
diff --git a/meta/conf/machine/include/powerpc/arch-powerpc64.inc b/meta/conf/machine/include/powerpc/arch-powerpc64.inc
new file mode 100644
index 000000000..a5e975574
--- /dev/null
+++ b/meta/conf/machine/include/powerpc/arch-powerpc64.inc
@@ -0,0 +1,14 @@
+DEFAULTTUNE ?= "powerpc64"
+
+require conf/machine/include/powerpc/arch-powerpc.inc
+
+TUNEVALID[m64] = "Power ELF64 standard ABI"
+TUNE_CONFLICTS[m64] = "m32 nf"
+TUNE_CCARGS += "${@bb.utils.contains("TUNE_FEATURES", "m64", "-m64", "", d)}"
+TUNE_ARCH .= "${@bb.utils.contains("TUNE_FEATURES", [ "m64" ], "powerpc64", "", d)}"
+
+AVAILTUNES += "powerpc64"
+TUNE_FEATURES_tune-powerpc64 ?= "m64 fpu-hard"
+BASE_LIB_tune-powerpc64 = "lib64"
+TUNE_PKGARCH_tune-powerpc64 = "powerpc64"
+PACKAGE_EXTRA_ARCHS_tune-powerpc64 = "powerpc64"
diff --git a/meta/conf/machine/include/qemu.inc b/meta/conf/machine/include/qemu.inc
index 005472b17..421a14925 100644
--- a/meta/conf/machine/include/qemu.inc
+++ b/meta/conf/machine/include/qemu.inc
@@ -1,15 +1,17 @@
PCMCIA_MANAGER = "pcmciautils"
-PREFERRED_PROVIDER_xserver = "xserver-kdrive"
-GUI_MACHINE_CLASS = "bigscreen"
-GPE_EXTRA_INSTALL += "gaim sylpheed"
+PREFERRED_PROVIDER_virtual/xserver ?= "xserver-kdrive"
+PREFERRED_PROVIDER_virtual/libgl ?= "mesa-xlib"
-MACHINE_FEATURES = "kernel26 apm alsa pcmcia bluetooth irda usbgadget screen"
+MACHINE_FEATURES = "apm alsa pcmcia bluetooth irda usbgadget screen"
-IMAGE_FSTYPES ?= "tar.bz2 ext3"
+IMAGE_FSTYPES += "tar.bz2 ext3"
ROOT_FLASH_SIZE = "280"
-IMAGE_ROOTFS_SIZE_ext2 ?= "280000"
-IMAGE_ROOTFS_SIZE_ext3 ?= "280000"
# Don't include kernels in standard images
RDEPENDS_kernel-base = ""
+
+# Use a common kernel recipe for all QEMU machines
+PREFERRED_PROVIDER_virtual/kernel ?= "linux-yocto"
+
+EXTRA_IMAGEDEPENDS += "qemu-native qemu-helper-native"
diff --git a/meta/conf/machine/include/sh/README b/meta/conf/machine/include/sh/README
new file mode 100644
index 000000000..b351acdd2
--- /dev/null
+++ b/meta/conf/machine/include/sh/README
@@ -0,0 +1,11 @@
+2012/03/30 - Mark Hatle <mark.hatle@windriver.com>
+ - Initial Revision
+
+Both big endian and little endian are defined for SH.
+
+Experimental -- SH tunings have not been validated.
+
+The TUNE_ARCH is defined as ${TUNE_ARCH_tune-${DEFAULTTUNE}}.
+
+The TUNE_PKGARCH is defind as ${TUNE_PKGARCH_tune-${DEFAULTTUNE}}.
+
diff --git a/meta/conf/machine/include/sh/arch-sh.inc b/meta/conf/machine/include/sh/arch-sh.inc
new file mode 100644
index 000000000..cde59fed8
--- /dev/null
+++ b/meta/conf/machine/include/sh/arch-sh.inc
@@ -0,0 +1,9 @@
+# SH Architecture definition
+
+DEFAULTTUNE ?= "sh"
+
+TUNE_ARCH = "${TUNE_ARCH_tune-${DEFAULTTUNE}}"
+TUNE_PKGARCH = "${TUNE_PKGARCH_tune-${DEFAULTTUNE}}"
+
+TUNEVALID[bigendian] = "Enabled big-endian mode."
+TUNE_CCARGS += "${@bb.utils.contains("TUNE_FEATURES", "bigendian", "-mb", "-ml", d)}"
diff --git a/meta/conf/machine/include/soc-family.inc b/meta/conf/machine/include/soc-family.inc
new file mode 100644
index 000000000..612039cb8
--- /dev/null
+++ b/meta/conf/machine/include/soc-family.inc
@@ -0,0 +1,2 @@
+# Add SOC_FAMILY to machine overrides so we get access to e.g. 'omap3' and 'ti335x'
+MACHINEOVERRIDES .= "${@['', ':${SOC_FAMILY}']['${SOC_FAMILY}' != '']}"
diff --git a/meta/conf/machine/include/tune-arm1136jf-s.inc b/meta/conf/machine/include/tune-arm1136jf-s.inc
index be5aedc50..4f4a2eba0 100644
--- a/meta/conf/machine/include/tune-arm1136jf-s.inc
+++ b/meta/conf/machine/include/tune-arm1136jf-s.inc
@@ -1,8 +1,10 @@
-TARGET_CC_ARCH = "-march=armv6j -mtune=arm1136jf-s"
-TARGET_CC_ARCH += "${@['', '-mfloat-abi=softfp -mfpu=vfp'][(bb.data.getVar('TARGET_FPU', d, 1) == 'soft') and (bb.data.getVar('CPU_FEATURES', d, 1).find('vfp') != -1)]}"
-FEED_ARCH = "armv6"
-BASE_PACKAGE_ARCH = "armv6"
+DEFAULTTUNE ?= "arm1136jfs"
-ARM_INSTRUCTION_SET = "${@['thumb','arm'][bb.data.getVar('CPU_FEATURES', d, 1).find('thumb') == -1]}"
+require conf/machine/include/arm/arch-armv6.inc
-require conf/machine/include/tune-thumb.inc
+TUNEVALID[arm1136jfs] = "Enable arm1136jfs specific processor optimizations"
+TUNE_CCARGS += "${@bb.utils.contains("TUNE_FEATURES", "arm1136jfs", "-mtune=arm1136jf-s", "", d)}"
+
+AVAILTUNES += "arm1136jfs"
+TUNE_FEATURES_tune-arm1136jfs = "${TUNE_FEATURES_tune-armv6} arm1136jfs"
+PACKAGE_EXTRA_ARCHS_tune-arm1136jfs = "${PACKAGE_EXTRA_ARCHS_tune-armv6}"
diff --git a/meta/conf/machine/include/tune-arm920t.inc b/meta/conf/machine/include/tune-arm920t.inc
index 1f7a04bb3..b7584ab2d 100644
--- a/meta/conf/machine/include/tune-arm920t.inc
+++ b/meta/conf/machine/include/tune-arm920t.inc
@@ -1,4 +1,11 @@
-FEED_ARCH = "armv4t"
-BASE_PACKAGE_ARCH = "armv4t"
-TARGET_CC_ARCH = "-march=armv4t -mtune=arm920t"
+DEFAULTTUNE ?= "arm920t"
+
+require conf/machine/include/arm/arch-armv4.inc
+
+TUNEVALID[arm920t] = "Enable arm920t specific processor optimizations"
+TUNE_CCARGS += "${@bb.utils.contains("TUNE_FEATURES", "arm920t", "-mtune=arm920t", "", d)}"
+
+AVAILTUNES += "arm920t"
+TUNE_FEATURES_tune-arm920t = "${TUNE_FEATURES_tune-armv4t} arm920t"
+PACKAGE_EXTRA_ARCHS_tune-arm920t = "${PACKAGE_EXTRA_ARCHS_tune-armv4t}"
diff --git a/meta/conf/machine/include/tune-arm926ejs.inc b/meta/conf/machine/include/tune-arm926ejs.inc
index e80ef1049..7f2cc4e65 100644
--- a/meta/conf/machine/include/tune-arm926ejs.inc
+++ b/meta/conf/machine/include/tune-arm926ejs.inc
@@ -1,7 +1,11 @@
-FEED_ARCH = "armv5te"
+DEFAULTTUNE ?= "arm926ejs"
+
+require conf/machine/include/arm/arch-armv5-dsp.inc
+
+TUNEVALID[arm926ejs] = "Enable arm926ejs specific processor optimizations"
+TUNE_CCARGS += "${@bb.utils.contains("TUNE_FEATURES", "arm926ejs", "-mtune=arm926ej-s", "", d)}"
+
+AVAILTUNES += "arm926ejs"
+TUNE_FEATURES_tune-arm926ejs = "${TUNE_FEATURES_tune-armv5te} arm926ejs"
+PACKAGE_EXTRA_ARCHS_tune-arm926ejs = "${PACKAGE_EXTRA_ARCHS_tune-armv5te}"
-# For gcc 3.x you need:
-#TARGET_CC_ARCH = "-march=armv5te -mtune=arm926ejs"
-# For gcc 4.x you need:
-TARGET_CC_ARCH = "-march=armv5te -mtune=arm926ej-s"
-BASE_PACKAGE_ARCH = "armv5te"
diff --git a/meta/conf/machine/include/tune-arm9tdmi.inc b/meta/conf/machine/include/tune-arm9tdmi.inc
index 39e449301..0dc5c2612 100644
--- a/meta/conf/machine/include/tune-arm9tdmi.inc
+++ b/meta/conf/machine/include/tune-arm9tdmi.inc
@@ -1,2 +1,11 @@
-BASE_PACKAGE_ARCH = "armv4t"
-TARGET_CC_ARCH = "-mcpu=arm9tdmi -mtune=arm9tdmi"
+DEFAULTTUNE ?= "arm9tdmi"
+
+require conf/machine/include/arm/arch-armv4.inc
+
+TUNEVALID[arm9tdmi] = "Enable arm9tdmi specific processor optimizations"
+TUNE_CCARGS += "${@bb.utils.contains("TUNE_FEATURES", "arm9tdmi", "-mtune=arm9tdmi", "", d)}"
+
+AVAILTUNES += "arm9tdmi"
+TUNE_FEATURES_tune-arm9tdmi = "${TUNE_FEATURES_tune-armv4t} arm9tdmi"
+PACKAGE_EXTRA_ARCHS_tune-arm9tdmi = "${PACKAGE_EXTRA_ARCHS_tune-armv4t}"
+
diff --git a/meta/conf/machine/include/tune-armv7.inc b/meta/conf/machine/include/tune-armv7.inc
deleted file mode 100644
index 96c8c6490..000000000
--- a/meta/conf/machine/include/tune-armv7.inc
+++ /dev/null
@@ -1,6 +0,0 @@
-# valid options for -march: `armv7', `armv7-a', `armv7-r', `armv7-m'
-# valid option for -mtune: `cortex-a8', `cortex-r4', `cortex-m3', `cortex-m1'
-# This will NOT compile programs in 'ARM' mode, which is what you really want
-TARGET_CC_ARCH = "-march=armv7 -mfpu=vfp -mfloat-abi=softfp"
-FEED_ARCH = "armv7"
-BASE_PACKAGE_ARCH = "armv7"
diff --git a/meta/conf/machine/include/tune-atom.inc b/meta/conf/machine/include/tune-atom.inc
index 607054674..5e1bb74c6 100644
--- a/meta/conf/machine/include/tune-atom.inc
+++ b/meta/conf/machine/include/tune-atom.inc
@@ -1 +1,2 @@
-TARGET_CC_ARCH = "-march=i586"
+# Atom tunings are the same as core2 for now...
+require conf/machine/include/tune-core2.inc
diff --git a/meta/conf/machine/include/tune-c3.inc b/meta/conf/machine/include/tune-c3.inc
index 107341eb6..79bb67b45 100644
--- a/meta/conf/machine/include/tune-c3.inc
+++ b/meta/conf/machine/include/tune-c3.inc
@@ -1,3 +1,12 @@
-TARGET_CC_ARCH = "-march=c3 -mtune=c3"
-BASE_PACKAGE_ARCH = "i586"
+require conf/machine/include/ia32/arch-ia32.inc
+TUNEVALID[c3] = "VIA Cyrix III or VIA C3 specific optimizations"
+TUNECONFLICTS[c3] = "m64 mx32"
+TUNE_CCARGS += "${@bb.utils.contains("TUNE_FEATURES", "c3", "-march=c3 -mtune=c3", "", d)}"
+
+AVAILTUNES += "c3"
+TUNE_FEATURES_tune-c3 = "${TUNE_FEATURES_tune-x86} c3"
+BASE_LIBS_tune-c3 = "${BASE_LIB_tune-x86}"
+# The following should likely be something other then i586...
+TUNE_PKGARCH_tune-c3 = "i586"
+PACKAGE_EXTRA_ARCHS_tune-c3 = "${PACKAGE_EXTRA_ARCHS_tune-x86} i386 i486 i586"
diff --git a/meta/conf/machine/include/tune-core2.inc b/meta/conf/machine/include/tune-core2.inc
new file mode 100644
index 000000000..338ba7333
--- /dev/null
+++ b/meta/conf/machine/include/tune-core2.inc
@@ -0,0 +1,26 @@
+DEFAULTTUNE ?= "core2"
+
+require conf/machine/include/tune-i586.inc
+
+# Extra tune features
+TUNEVALID[core2] = "Enable core2 specific processor optimizations"
+TUNE_CCARGS += "${@bb.utils.contains("TUNE_FEATURES", "core2", "-march=core2 -msse3 -mtune=generic -mfpmath=sse", "", d)}"
+
+# Extra tune selections
+AVAILTUNES += "core2"
+TUNE_FEATURES_tune-core2 = "${TUNE_FEATURES_tune-x86} core2"
+BASE_LIB_tune-core2 = "lib"
+TUNE_PKGARCH_tune-core2 = "core2"
+PACKAGE_EXTRA_ARCHS_tune-core2 = "${PACKAGE_EXTRA_ARCHS_tune-x86} i386 i486 i586 i686 core2"
+
+AVAILTUNES += "core2-64"
+TUNE_FEATURES_tune-core2-64 = "${TUNE_FEATURES_tune-x86-64} core2"
+BASE_LIB_tune-core2-64 = "lib64"
+TUNE_PKGARCH_tune-core2-64 = "core2_64"
+PACKAGE_EXTRA_ARCHS_tune-core2-64 = "${PACKAGE_EXTRA_ARCHS_tune-x86-64} core2_64"
+
+AVAILTUNES += "core2-64-x32"
+TUNE_FEATURES_tune-core2-64-x32 = "${TUNE_FEATURES_tune-x86-64-x32} core2"
+BASE_LIB_tune-core2-64-x32 = "libx32"
+TUNE_PKGARCH_tune-core2-64-x32 = "core2_64_x32"
+PACKAGE_EXTRA_ARCHS_tune-core2-64-x32 = "${PACKAGE_EXTRA_ARCHS_tune-x86-64-x32} core2_64_x32"
diff --git a/meta/conf/machine/include/tune-cortexa8.inc b/meta/conf/machine/include/tune-cortexa8.inc
index 489a9b980..9d79a58c5 100644
--- a/meta/conf/machine/include/tune-cortexa8.inc
+++ b/meta/conf/machine/include/tune-cortexa8.inc
@@ -1,13 +1,24 @@
-# Instead of using -mfpu=vfp[2] we can use -mfpu=neon to make use of gcc intrinsics[1] and vectorize loops with -ftree-vectorize[3]
-# [1] http://gcc.gnu.org/onlinedocs/gcc/ARM-NEON-Intrinsics.html
-# [2] http://gcc.gnu.org/onlinedocs/gcc/ARM-Options.html
-# [3] https://support.codesourcery.com/GNUToolchain/kbentry29
+DEFAULTTUNE ?= "cortexa8-neon"
-TARGET_CC_ARCH = "-march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=softfp"
-# Override the options for some packages
-TARGET_CC_ARCH_pn-liba52 = "-march=armv7-a -mtune=cortex-a8 -mfloat-abi=softfp"
-TARGET_CC_ARCH_pn-libmad = "-mfpu=neon -mfloat-abi=softfp"
-# Other potentially useful options
-#-ftree-vectorize -ffast-math -fno-omit-frame-pointer
-FEED_ARCH = "armv7a"
-BASE_PACKAGE_ARCH = "armv7a"
+require conf/machine/include/arm/arch-armv7a.inc
+
+TUNEVALID[cortexa8] = "Enable Cortex-A8 specific processor optimizations"
+TUNE_CCARGS += "${@bb.utils.contains("TUNE_FEATURES", "cortexa8", "-mtune=cortex-a8", "", d)}"
+
+# Little Endian base configs
+AVAILTUNES += "cortexa8 cortexa8t cortexa8-neon"
+TUNE_FEATURES_tune-cortexa8 = "${TUNE_FEATURES_tune-armv7a} cortexa8"
+TUNE_FEATURES_tune-cortexa8t = "${TUNE_FEATURES_tune-armv7at} cortexa8"
+TUNE_FEATURES_tune-cortexa8-neon = "${TUNE_FEATURES_tune-armv7a-neon} cortexa8"
+PACKAGE_EXTRA_ARCHS_tune-cortexa8 = "${PACKAGE_EXTRA_ARCHS_tune-armv7a}"
+PACKAGE_EXTRA_ARCHS_tune-cortexa8t = "${PACKAGE_EXTRA_ARCHS_tune-armv7at}"
+PACKAGE_EXTRA_ARCHS_tune-cortexa8-neon = "${PACKAGE_EXTRA_ARCHS_tune-armv7a-neon}"
+
+# VFP Tunes
+AVAILTUNES += "cortexa8hf cortexa8thf cortexa8hf-neon"
+TUNE_FEATURES_tune-cortexa8hf ?= "${TUNE_FEATURES_tune-armv7ahf} cortexa8"
+TUNE_FEATURES_tune-cortexa8thf ?= "${TUNE_FEATURES_tune-armv7athf} cortexa8"
+TUNE_FEATURES_tune-cortexa8hf-neon ?= "${TUNE_FEATURES_tune-armv7ahf-neon} cortexa8"
+PACKAGE_EXTRA_ARCHS_tune-cortexa8hf = "${PACKAGE_EXTRA_ARCHS_tune-armv7ahf}"
+PACKAGE_EXTRA_ARCHS_tune-cortexa8thf = "${PACKAGE_EXTRA_ARCHS_tune-armv7athf}"
+PACKAGE_EXTRA_ARCHS_tune-cortexa8hf-neon = "${PACKAGE_EXTRA_ARCHS_tune-armv7ahf-neon}"
diff --git a/meta/conf/machine/include/tune-cortexa9.inc b/meta/conf/machine/include/tune-cortexa9.inc
new file mode 100644
index 000000000..a8e27ca87
--- /dev/null
+++ b/meta/conf/machine/include/tune-cortexa9.inc
@@ -0,0 +1,24 @@
+DEFAULTTUNE ?= "cortexa9-neon"
+
+require conf/machine/include/arm/arch-armv7a.inc
+
+TUNEVALID[cortexa9] = "Enable Cortex-A9 specific processor optimizations"
+TUNE_CCARGS += "${@bb.utils.contains("TUNE_FEATURES", "cortexa9", "-mtune=cortex-a9", "", d)}"
+
+# Little Endian base configs
+AVAILTUNES += "cortexa9 cortexa9t cortexa9-neon"
+TUNE_FEATURES_tune-cortexa9 = "${TUNE_FEATURES_tune-armv7a} cortexa9"
+TUNE_FEATURES_tune-cortexa9t = "${TUNE_FEATURES_tune-armv7at} cortexa9"
+TUNE_FEATURES_tune-cortexa9-neon = "${TUNE_FEATURES_tune-armv7a-neon} cortexa9"
+PACKAGE_EXTRA_ARCHS_tune-cortexa9 = "${PACKAGE_EXTRA_ARCHS_tune-armv7a}"
+PACKAGE_EXTRA_ARCHS_tune-cortexa9t = "${PACKAGE_EXTRA_ARCHS_tune-armv7at}"
+PACKAGE_EXTRA_ARCHS_tune-cortexa9-neon = "${PACKAGE_EXTRA_ARCHS_tune-armv7a-neon}"
+
+# VFP Tunes
+AVAILTUNES += "cortexa9hf cortexa9thf cortexa9hf-neon"
+TUNE_FEATURES_tune-cortexa9hf ?= "${TUNE_FEATURES_tune-armv7ahf} cortexa9"
+TUNE_FEATURES_tune-cortexa9thf ?= "${TUNE_FEATURES_tune-armv7athf} cortexa9"
+TUNE_FEATURES_tune-cortexa9hf-neon ?= "${TUNE_FEATURES_tune-armv7ahf-neon} cortexa9"
+PACKAGE_EXTRA_ARCHS_tune-cortexa9hf = "${PACKAGE_EXTRA_ARCHS_tune-armv7ahf}"
+PACKAGE_EXTRA_ARCHS_tune-cortexa9thf = "${PACKAGE_EXTRA_ARCHS_tune-armv7athf}"
+PACKAGE_EXTRA_ARCHS_tune-cortexa9hf-neon = "${PACKAGE_EXTRA_ARCHS_tune-armv7ahf-neon}"
diff --git a/meta/conf/machine/include/tune-cortexm1.inc b/meta/conf/machine/include/tune-cortexm1.inc
index 6c4a70a24..3eecd5bfc 100644
--- a/meta/conf/machine/include/tune-cortexm1.inc
+++ b/meta/conf/machine/include/tune-cortexm1.inc
@@ -1,3 +1,11 @@
-TARGET_CC_ARCH = "-march=armv7 -mtune=cortex-m1 -mfpu=vfp -mfloat-abi=softfp"
-FEED_ARCH = "armv6"
-BASE_PACKAGE_ARCH = "armv6"
+DEFAULTTUNE ?= "cortexm1"
+
+require conf/machine/include/arm/arch-armv7a.inc
+
+TUNEVALID[cortexm1] = "Enable Cortex-M1 specific processor optimizations"
+TUNE_CCARGS += "${@bb.utils.contains("TUNE_FEATURES", "cortexm1", "-mtune=cortex-m1", "", d)}"
+
+AVAILTUNES += "cortexm1"
+TUNE_FEATURES_tune-cortexm1 = "${TUNE_FEATURES_tune-armv7a} cortexm1"
+PACKAGE_EXTRA_ARCHS_tune-cortexm1 = "${PACKAGE_EXTRA_ARCHS_tune-armv7at}"
+
diff --git a/meta/conf/machine/include/tune-cortexm3.inc b/meta/conf/machine/include/tune-cortexm3.inc
index 6da9aeedd..20a3c655c 100644
--- a/meta/conf/machine/include/tune-cortexm3.inc
+++ b/meta/conf/machine/include/tune-cortexm3.inc
@@ -1,4 +1,15 @@
-# valid options for -march: `armv7', `armv7-m'
-TARGET_CC_ARCH = "-march=armv7-m -mtune=cortex-m3 -mfpu=vfp -mfloat-abi=softfp"
-FEED_ARCH = "armv7"
-BASE_PACKAGE_ARCH = "armv7"
+DEFAULTTUNE ?= "cortexm3"
+ARMPKGARCH ?= "armv7m"
+
+require conf/machine/include/arm/arch-armv7a.inc
+
+TUNEVALID[cortexm3] = "Enable Cortex-M3 specific processor optimizations"
+TUNE_CCARGS += "${@bb.utils.contains("TUNE_FEATURES", "cortexm3", "-mtune=cortex-m3", "", d)}"
+
+TUNEVALID[armv7m] = "Enable Cortex-M3 specific processor optimizations"
+TUNE_CCARGS += "${@bb.utils.contains("TUNE_FEATURES", "armv7m", "-march=armv7-m", "", d)}"
+
+AVAILTUNES += "cortexm3"
+TUNE_FEATURES_tune-cortexm3 = "armv7m vfp cortexm3"
+PACKAGE_EXTRA_ARCHS_tune-cortexm3 = "${PACKAGE_EXTRA_ARCHS_tune-armv7at} armv7m-vfp"
+
diff --git a/meta/conf/machine/include/tune-cortexr4.inc b/meta/conf/machine/include/tune-cortexr4.inc
index b8bb7f50a..d1fc60701 100644
--- a/meta/conf/machine/include/tune-cortexr4.inc
+++ b/meta/conf/machine/include/tune-cortexr4.inc
@@ -1,4 +1,14 @@
-# valid options for -march: `armv7', `armv7-r'
-TARGET_CC_ARCH = "-march=armv7-r -mtune=cortex-r4 -mfpu=vfp -mfloat-abi=softfp"
-FEED_ARCH = "armv7"
-BASE_PACKAGE_ARCH = "armv7"
+DEFAULTTUNE ?= "cortexr4"
+ARMPKGARCH ?= "armv7r"
+
+require conf/machine/include/arm/arch-armv7a.inc
+
+TUNEVALID[cortexr4] = "Enable Cortex-R4 specific processor optimizations"
+TUNE_CCARGS += "${@bb.utils.contains("TUNE_FEATURES", "cortexr4", "-mtune=cortex-r4", "", d)}"
+
+TUNEVALID[armv7r] = "Enable Cortex-R4 specific processor optimizations"
+TUNE_CCARGS += "${@bb.utils.contains("TUNE_FEATURES", "armv7r", "-march=armv7-m", "", d)}"
+
+AVAILTUNES += "cortexr4"
+TUNE_FEATURES_tune-cortexr4 = "armv7r vfp cortexr4"
+PACKAGE_EXTRA_ARCHS_tune-cortexr4 = "${PACKAGE_EXTRA_ARCHS_tune-armv7at} armv7r-vfp"
diff --git a/meta/conf/machine/include/tune-ep9312.inc b/meta/conf/machine/include/tune-ep9312.inc
index 2cfdf5270..f10123f0d 100644
--- a/meta/conf/machine/include/tune-ep9312.inc
+++ b/meta/conf/machine/include/tune-ep9312.inc
@@ -1,6 +1,13 @@
-TARGET_CC_ARCH = "-march=ep9312 -mtune=ep9312 -mcpu=ep9312"
-# add "-mfp=maverick" for newer gcc versions > 4.0
+DEFAULTTUNE ?= "ep9312"
+ARMPKGARCH ?= "ep9312"
+
+require conf/machine/include/arm/arch-armv4.inc
+
+TUNEVALID[ep9312] = "Enable Intel PXA27x specific processor optimizations"
+TUNE_CCARGS += "${@bb.utils.contains("TUNE_FEATURES", "ep9312", "-march=ep9312 -mtune=ep9312", "", d)}"
+
+AVAILTUNES += "ep9312"
+TUNE_FEATURES_tune-ep9312 = "thumb ep9312"
+PACKAGE_EXTRA_ARCHS_tune-ep9312 = "${PACKAGE_EXTRA_ARCHS_tune-armv4t} ep9312"
-#set arch to ep9312 for all generated packages
-BASE_PACKAGE_ARCH = "ep9312"
diff --git a/meta/conf/machine/include/tune-i586.inc b/meta/conf/machine/include/tune-i586.inc
new file mode 100644
index 000000000..afa9c92fd
--- /dev/null
+++ b/meta/conf/machine/include/tune-i586.inc
@@ -0,0 +1,14 @@
+DEFAULTTUNE ?= "i586"
+
+require conf/machine/include/ia32/arch-ia32.inc
+
+# Extra tune features
+TUNEVALID[i586] = "Enable i586 specific processor optimizations"
+TUNE_CCARGS += "${@bb.utils.contains("TUNE_FEATURES", "i586", "-march=i586", "", d)}"
+
+# Extra tune selections
+AVAILTUNES += "i586"
+TUNE_FEATURES_tune-i586 = "${TUNE_FEATURES_tune-x86} i586"
+BASE_LIB_tune-i586 = "lib"
+TUNE_PKGARCH_tune-i586 = "i586"
+PACKAGE_EXTRA_ARCHS_tune-i586 = "${PACKAGE_EXTRA_ARCHS_tune-x86} i386 i486 i586"
diff --git a/meta/conf/machine/include/tune-iwmmxt.inc b/meta/conf/machine/include/tune-iwmmxt.inc
index 49e560ea1..14f59555a 100644
--- a/meta/conf/machine/include/tune-iwmmxt.inc
+++ b/meta/conf/machine/include/tune-iwmmxt.inc
@@ -1,6 +1,16 @@
# Configurations for the Intel PXA27x Appications Processor Family.
# Please use tune-xscale for PXA255/PXA26x based processors.
-TARGET_CC_ARCH = "-march=iwmmxt -mcpu=iwmmxt -mtune=iwmmxt"
-BASE_PACKAGE_ARCH = "iwmmxt"
-PACKAGE_EXTRA_ARCHS += "iwmmxt"
+
+DEFAULTTUNE ?= "iwmmxt"
+ARMPKGARCH ?= "iwmmxt"
+
+require conf/machine/include/arm/arch-armv5-dsp.inc
+
+TUNEVALID[iwmmxt] = "Enable Intel PXA27x specific processor optimizations"
+TUNE_CCARGS += "${@bb.utils.contains("TUNE_FEATURES", "iwmmxt", "-march=iwmmxt -mtune=iwmmxt", "", d)}"
+
+AVAILTUNES += "iwmmxt"
+TUNE_FEATURES_tune-iwmmxt = "thumb iwmmxt"
+PACKAGE_EXTRA_ARCHS_tune-iwmmxt = "${PACKAGE_EXTRA_ARCHS_tune-armv5te} iwmmxt"
+
diff --git a/meta/conf/machine/include/tune-mips32.inc b/meta/conf/machine/include/tune-mips32.inc
new file mode 100644
index 000000000..93ed5ee79
--- /dev/null
+++ b/meta/conf/machine/include/tune-mips32.inc
@@ -0,0 +1,25 @@
+DEFAULTTUNE ?= "mips32"
+
+require conf/machine/include/mips/arch-mips.inc
+
+TUNEVALID[mips32] = "Enable mips32 specific processor optimizations"
+TUNE_CONFLICTS[mips32] = "n64 n32"
+TUNE_CCARGS += "${@bb.utils.contains("TUNE_FEATURES", "mips32", "-march=mips32", "", d)}"
+
+AVAILTUNES += "mips32 mips32el mips32-nf mips32el-nf"
+
+TUNE_FEATURES_tune-mips32 = "${TUNE_FEATURES_tune-mips} mips32"
+MIPSPKGSFX_VARIANT_tune-mips32 = "mips32"
+PACKAGE_EXTRA_ARCHS_tune-mips32 = "mips mips32"
+
+TUNE_FEATURES_tune-mips32el = "${TUNE_FEATURES_tune-mipsel} mips32"
+MIPSPKGSFX_VARIANT_tune-mips32el = "mips32el"
+PACKAGE_EXTRA_ARCHS_tune-mips32el = "mipsel mips32el"
+
+TUNE_FEATURES_tune-mips32-nf = "${TUNE_FEATURES_tune-mips-nf} mips32"
+MIPSPKGSFX_VARIANT_tune-mips32-nf = "mips32"
+PACKAGE_EXTRA_ARCHS_tune-mips32-nf = "mips-nf mips32-nf"
+
+TUNE_FEATURES_tune-mips32el-nf = "${TUNE_FEATURES_tune-mipsel-nf} mips32"
+MIPSPKGSFX_VARIANT_tune-mips32el-nf = "mips32el"
+PACKAGE_EXTRA_ARCHS_tune-mips32el-nf = "mipsel-nf mips32el-nf"
diff --git a/meta/conf/machine/include/tune-ppc603e.inc b/meta/conf/machine/include/tune-ppc603e.inc
index a4a68d60e..6557c1d69 100644
--- a/meta/conf/machine/include/tune-ppc603e.inc
+++ b/meta/conf/machine/include/tune-ppc603e.inc
@@ -1,2 +1,14 @@
-TARGET_CC_ARCH = "-mcpu=603e -mhard-float"
-BASE_PACKAGE_ARCH = "ppc603e"
+DEFAULTTUNE ?= "ppc603e"
+
+require conf/machine/include/powerpc/arch-powerpc.inc
+
+TUNEVALID[ppc603e] = "Enable ppc603e specific processor optimizations"
+TUNE_CCARGS += "${@bb.utils.contains("TUNE_FEATURES", "ppc603e", "-mcpu=603e", "", d)}"
+
+AVAILTUNES += "ppc603e"
+TUNE_FEATURES_tune-ppc603e = "m32 fpu-hard ppc603e"
+TUNE_PKGARCH_tune-ppc603e = "ppc603e"
+PACKAGE_EXTRA_ARCHS_tune-ppc603e = "${PACKAGE_EXTRA_ARCHS_tune-powerpc} ppc603e"
+
+# glibc configure options to get 603e specific library (for sqrt)
+GLIBC_EXTRA_OECONF += "${@bb.utils.contains("TUNE_FEATURES", "ppc603e", "-with-cpu=603e", "", d)}"
diff --git a/meta/conf/machine/include/tune-ppce300c2.inc b/meta/conf/machine/include/tune-ppce300c2.inc
new file mode 100644
index 000000000..aae8ac08b
--- /dev/null
+++ b/meta/conf/machine/include/tune-ppce300c2.inc
@@ -0,0 +1,11 @@
+DEFAULTTUNE ?= "ppce300c2"
+
+require conf/machine/include/powerpc/arch-powerpc.inc
+
+TUNEVALID[ppce300c2] = "Enable ppce300c2 specific processor optimizations"
+TUNE_CCARGS += "${@bb.utils.contains("TUNE_FEATURES", "ppce300c2", "-mcpu=e300c2", "", d)}"
+
+AVAILTUNES += "ppce300c2"
+TUNE_FEATURES_tune-ppce300c2 = "m32 fpu-soft ppce300c2"
+TUNE_PKGARCH_tune-ppce300c2 = "ppce300c2"
+PACKAGE_EXTRA_ARCHS_tune-ppce300c2 = "${PACKAGE_EXTRA_ARCHS_tune-powerpc-nf} ppce300c2"
diff --git a/meta/conf/machine/include/tune-ppce500.inc b/meta/conf/machine/include/tune-ppce500.inc
index 248219642..be4372235 100644
--- a/meta/conf/machine/include/tune-ppce500.inc
+++ b/meta/conf/machine/include/tune-ppce500.inc
@@ -1,2 +1,20 @@
-TARGET_CC_ARCH = "-mcpu=8540"
-BASE_PACKAGE_ARCH = "ppce500"
+DEFAULTTUNE ?= "ppce500"
+
+require conf/machine/include/powerpc/arch-powerpc.inc
+
+TUNEVALID[ppce500] = "Enable ppce500 specific processor optimizations"
+TUNE_CCARGS += "${@bb.utils.contains("TUNE_FEATURES", "ppce500", "-mcpu=8540", "", d)}"
+
+TUNEVALID[spe] = "Enable SPE ABI extensions"
+TUNE_CCARGS += "${@bb.utils.contains("TUNE_FEATURES", [ "ppce500", "spe" ], "-mabi=spe -mspe -mfloat-gprs=single", "", d)}"
+TARGET_FPU .= "${@bb.utils.contains("TUNE_FEATURES", [ "ppce500" , "spe" ], "ppc-efs", "", d)}"
+
+# spe is defined potentially in two places, so we want to be sure it will
+# only write spe once to the ABIEXTENSIONS field.
+SPEABIEXTENSION = "${@bb.utils.contains("TUNE_FEATURES", "spe", "spe", "", d)}"
+ABIEXTENSION .= "${SPEABIEXTENSION}"
+
+AVAILTUNES += "ppce500"
+TUNE_FEATURES_tune-ppce500 = "m32 spe ppce500"
+TUNE_PKGARCH_tune-ppce500 = "ppce500"
+PACKAGE_EXTRA_ARCHS_tune-ppce500 = "ppce500"
diff --git a/meta/conf/machine/include/tune-ppce500mc.inc b/meta/conf/machine/include/tune-ppce500mc.inc
new file mode 100644
index 000000000..0e0938462
--- /dev/null
+++ b/meta/conf/machine/include/tune-ppce500mc.inc
@@ -0,0 +1,14 @@
+DEFAULTTUNE ?= "ppce500mc"
+
+require conf/machine/include/powerpc/arch-powerpc.inc
+
+TUNEVALID[ppce500mc] = "Enable ppce500mc specific processor optimizations"
+TUNE_CCARGS += "${@bb.utils.contains("TUNE_FEATURES", "ppce500mc", "-mcpu=e500mc", "", d)}"
+
+AVAILTUNES += "ppce500mc"
+TUNE_FEATURES_tune-ppce500mc = "m32 fpu-hard ppce500mc"
+TUNE_PKGARCH_tune-ppce500mc = "ppce500mc"
+PACKAGE_EXTRA_ARCHS_tune-ppce500mc = "${PACKAGE_EXTRA_ARCHS_tune-powerpc} ppce500mc"
+
+# glibc configure options to get e500mc specific library (for sqrt)
+GLIBC_EXTRA_OECONF += "${@bb.utils.contains("TUNE_FEATURES", "ppce500mc", "-with-cpu=e500mc", "", d)}"
diff --git a/meta/conf/machine/include/tune-ppce500v2.inc b/meta/conf/machine/include/tune-ppce500v2.inc
new file mode 100644
index 000000000..3fe47da58
--- /dev/null
+++ b/meta/conf/machine/include/tune-ppce500v2.inc
@@ -0,0 +1,20 @@
+DEFAULTTUNE ?= "ppce500v2"
+
+require conf/machine/include/powerpc/arch-powerpc.inc
+
+TUNEVALID[ppce500v2] = "Enable ppce500v2 specific processor optimizations"
+TUNE_CCARGS += "${@bb.utils.contains("TUNE_FEATURES", "ppce500v2", "-mcpu=8548", "", d)}"
+
+TUNEVALID[spe] = "Enable SPE ABI extensions"
+TUNE_CCARGS += "${@bb.utils.contains("TUNE_FEATURES", [ "ppce500v2", "spe" ], "-mabi=spe -mspe -mfloat-gprs=double", "", d)}"
+TARGET_FPU .= "${@bb.utils.contains("TUNE_FEATURES", [ "ppce500v2" , "spe" ], "ppc-efd", "", d)}"
+
+# spe is defined potentially in two places, so we want to be sure it will
+# only write spe once to the ABIEXTENSIONS field.
+SPEABIEXTENSION = "${@bb.utils.contains("TUNE_FEATURES", "spe", "spe", "", d)}"
+ABIEXTENSION .= "${SPEABIEXTENSION}"
+
+AVAILTUNES += "ppce500v2"
+TUNE_FEATURES_tune-ppce500v2 = "m32 spe ppce500v2"
+TUNE_PKGARCH_tune-ppce500v2 = "ppce500v2"
+PACKAGE_EXTRA_ARCHS_tune-ppce500v2 = "ppce500v2"
diff --git a/meta/conf/machine/include/tune-ppce5500.inc b/meta/conf/machine/include/tune-ppce5500.inc
new file mode 100644
index 000000000..8ab0fc5b8
--- /dev/null
+++ b/meta/conf/machine/include/tune-ppce5500.inc
@@ -0,0 +1,20 @@
+DEFAULTTUNE ?= "ppce5500"
+
+require conf/machine/include/powerpc/arch-powerpc64.inc
+
+TUNEVALID[e5500] = "Enable Freescale e5500 specific processor optimizations"
+TUNE_CCARGS += "${@bb.utils.contains("TUNE_FEATURES", "e5500", "-mcpu=e5500", "", d)}"
+
+AVAILTUNES += "ppce5500 ppc64e5500"
+TUNE_FEATURES_tune-ppce5500 = "m32 fpu-hard e5500"
+BASE_LIB_tune-ppce5500 = "lib"
+TUNE_PKGARCH_tune-ppce5500 = "ppce5500"
+PACKAGE_EXTRA_ARCHS_tune-ppce5500 = "${PACKAGE_EXTRA_ARCHS_tune-powerpc} ppce5500"
+
+TUNE_FEATURES_tune-ppc64e5500 = "m64 fpu-hard e5500"
+BASE_LIB_tune-ppc64e5500 = "lib64"
+TUNE_PKGARCH_tune-ppc64e5500 = "ppc64e5500"
+PACKAGE_EXTRA_ARCHS_tune-ppc64e5500 = "${PACKAGE_EXTRA_ARCHS_tune-powerpc64} ppc64e5500"
+
+# glibc configure options to get e5500 specific library (for sqrt)
+GLIBC_EXTRA_OECONF += "${@bb.utils.contains("TUNE_FEATURES", "e5500", "--with-cpu=e5500", "", d)}"
diff --git a/meta/conf/machine/include/tune-sh3.inc b/meta/conf/machine/include/tune-sh3.inc
index 192dd8fd2..70bb10b04 100644
--- a/meta/conf/machine/include/tune-sh3.inc
+++ b/meta/conf/machine/include/tune-sh3.inc
@@ -1 +1,17 @@
-TARGET_CC_ARCH = "-ml -m3"
+DEFAULTTUNE ?= "sh3"
+
+require conf/machine/include/sh/arch-sh.inc
+
+TUNEVALID[sh3] = "Enable SH3 optimizations"
+TUNE_CCARGS += "${@bb.utils.contains("TUNE_FEATURES", "sh3", "-m3", "", d)}"
+
+AVAILTUNES += "sh3 sh3eb"
+TUNE_FEATURES_tune-sh3 = "sh3"
+TUNE_ARCH_tune-sh3 = "sh3"
+TUNE_PKGARCH_tune-sh3 = "sh3"
+PACKAGE_EXTRA_ARCHS_tune-sh3 = "sh sh3"
+
+TUNE_FEATURES_tune-sh3eb = "sh3 bigendian"
+TUNE_ARCH_tune-sh3eb = "sh3eb"
+TUNE_PKGARCH_tune-sh3eb = "sh3eb"
+PACKAGE_EXTRA_ARCHS_tune-sh3eb = "sheb sh3eb"
diff --git a/meta/conf/machine/include/tune-sh4.inc b/meta/conf/machine/include/tune-sh4.inc
index 866f7f89d..00cfc3d03 100644
--- a/meta/conf/machine/include/tune-sh4.inc
+++ b/meta/conf/machine/include/tune-sh4.inc
@@ -1 +1,34 @@
-TARGET_CC_ARCH = "-ml -m4"
+DEFAULTTUNE ?= "sh4"
+
+# Pull in sh4 for compatibility...
+require conf/machine/include/sh/arch-sh.inc
+
+TUNEVALID[sh4] = "Enable SH4 optimizations"
+TUNE_CCARGS += "${@bb.utils.contains("TUNE_FEATURES", "sh4", "-m4", "", d)}"
+
+# NOTE: If you want to optimize to sh4a, conf/machine/include/tune-sh4a.inc.
+# But it is not compatible for sh4.
+# The binary optimized by m4a doesn't operate on sh4. It works on sh4a only.
+TUNEVALID[sh4a] = "Enable SH4a optimizations"
+TUNE_CCARGS += "${@bb.utils.contains("TUNE_FEATURES", "sh4a", "-m4a", "", d)}"
+
+AVAILTUNES += "sh4 sh4eb sh4a sh4aeb"
+TUNE_FEATURES_tune-sh4 = "sh4"
+TUNE_ARCH_tune-sh4 = "sh4"
+TUNE_PKGARCH_tune-sh4 = "sh4"
+PACKAGE_EXTRA_ARCHS_tune-sh4 = "sh sh4"
+
+TUNE_FEATURES_tune-sh4eb = "sh4 bigendian"
+TUNE_ARCH_tune-sh4eb = "sh4eb"
+TUNE_PKGARCH_tune-sh4eb = "sh4eb"
+PACKAGE_EXTRA_ARCHS_tune-sh4eb = "sheb sh4eb"
+
+TUNE_FEATURES_tune-sh4a = "sh4a"
+TUNE_ARCH_tune-sh4a = "sh4"
+TUNE_PKGARCH_tune-sh4a = "sh4a"
+PACKAGE_EXTRA_ARCHS_tune-sh4a = "sh sh4 sh4a"
+
+TUNE_FEATURES_tune-sh4aeb = "sh4a bigendian"
+TUNE_ARCH_tune-sh4aeb = "sh4eb"
+TUNE_PKGARCH_tune-sh4aeb = "sh4aeb"
+PACKAGE_EXTRA_ARCHS_tune-sh4aeb = "sheb sh4eb sh4aeb"
diff --git a/meta/conf/machine/include/tune-strongarm1100.inc b/meta/conf/machine/include/tune-strongarm1100.inc
index f13671040..66bab8e49 100644
--- a/meta/conf/machine/include/tune-strongarm1100.inc
+++ b/meta/conf/machine/include/tune-strongarm1100.inc
@@ -1,5 +1,12 @@
-# This machine lists common configuration options for Strongarm 1100 devices
-# NOTE: The Zaurus Collie also has a Strongarm processor, but uses the 1110 type
+DEFAULTTUNE ?= "strongarm"
+
+require conf/machine/include/arm/arch-armv4.inc
+
+TUNEVALID[strongarm] = "Enable Strongarm 1100 series processor optimizations"
+TUNE_CCARGS += "${@bb.utils.contains("TUNE_FEATURES", "strongarm", "-mtune=strongarm1100", "", d)}"
+
+AVAILTUNES += "strongarm"
+TUNE_FEATURES_tune-strongarm = "${TUNE_FEATURES_tune-armv4} strongarm"
+PACKAGE_EXTRA_ARCHS_tune-strongarm = "${PACKAGE_EXTRA_ARCHS_tune-armv4}"
-TARGET_CC_ARCH = "-march=armv4 -mtune=strongarm1100"
diff --git a/meta/conf/machine/include/tune-supersparc.inc b/meta/conf/machine/include/tune-supersparc.inc
index 10133c6c2..0faa361f1 100644
--- a/meta/conf/machine/include/tune-supersparc.inc
+++ b/meta/conf/machine/include/tune-supersparc.inc
@@ -1,2 +1,4 @@
-TARGET_CC_ARCH = "-mcpu=supersparc"
-BASE_PACKAGE_ARCH = "supersparc"
+TUNE_ARCH = "sparc"
+
+TUNE_CCARGS = "-mcpu=supersparc"
+TUNE_PKGARCH = "supersparc"
diff --git a/meta/conf/machine/include/tune-thumb.inc b/meta/conf/machine/include/tune-thumb.inc
index a25cb5320..a2392c2d5 100644
--- a/meta/conf/machine/include/tune-thumb.inc
+++ b/meta/conf/machine/include/tune-thumb.inc
@@ -16,17 +16,17 @@ THUMB_INTERWORK ?= "yes"
# arm system and vice versa. It is strongly recommended that DISTROs not
# turn this off - the actual cost is very small.
-OVERRIDE_THUMB = "${@['', ':thumb'][bb.data.getVar('ARM_INSTRUCTION_SET', d, 1) == 'thumb']}"
-OVERRIDE_INTERWORK = "${@['', ':thumb-interwork'][bb.data.getVar('THUMB_INTERWORK', d, 1) == 'yes']}"
+OVERRIDE_THUMB = "${@['', ':thumb'][d.getVar('ARM_INSTRUCTION_SET', True) == 'thumb']}"
+OVERRIDE_INTERWORK = "${@['', ':thumb-interwork'][d.getVar('THUMB_INTERWORK', True) == 'yes']}"
OVERRIDES .= "${OVERRIDE_THUMB}${OVERRIDE_INTERWORK}"
# 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']}"
+ARM_INTERWORK_M_OPT = "${@['-mno-thumb-interwork', '-mthumb-interwork'][d.getVar('THUMB_INTERWORK', True) == 'yes']}"
+ARM_THUMB_M_OPT = "${@['-marm', '-mthumb'][d.getVar('ARM_INSTRUCTION_SET', True) == 'thumb']}"
#
-TARGET_CC_ARCH += "${ARM_INTERWORK_M_OPT} ${ARM_THUMB_M_OPT}"
-TARGET_CC_KERNEL_ARCH += "-mno-thumb-interwork -mno-thumb"
+TUNE_CCARGS += "${ARM_INTERWORK_M_OPT} ${ARM_THUMB_M_OPT}"
+TARGET_CC_KERNEL_ARCH += "-mno-thumb-interwork -marm"
diff --git a/meta/conf/machine/include/tune-x86_64.inc b/meta/conf/machine/include/tune-x86_64.inc
new file mode 100644
index 000000000..31e06da5e
--- /dev/null
+++ b/meta/conf/machine/include/tune-x86_64.inc
@@ -0,0 +1,4 @@
+DEFAULTTUNE ?= "x86-64"
+
+require conf/machine/include/ia32/arch-ia32.inc
+
diff --git a/meta/conf/machine/include/tune-xscale.inc b/meta/conf/machine/include/tune-xscale.inc
index 134758621..80a368366 100644
--- a/meta/conf/machine/include/tune-xscale.inc
+++ b/meta/conf/machine/include/tune-xscale.inc
@@ -1,10 +1,19 @@
-FEED_ARCH = "armv5te"
+DEFAULTTUNE ?= "xscale"
-TARGET_CC_ARCH = "-march=armv5te -mtune=xscale"
-TARGET_CC_KERNEL_ARCH = "-march=armv5te -mtune=xscale"
-BASE_PACKAGE_ARCH = "${@['armv5teb', 'armv5te'][bb.data.getVar('SITEINFO_ENDIANESS', d, 1) == 'le']}"
+require conf/machine/include/arm/arch-armv5-dsp.inc
+
+TUNEVALID[xscale] = "Enable PXA255/PXA26x Xscale specific processor optimizations"
+TUNE_CCARGS += "${@bb.utils.contains("TUNE_FEATURES", "xscale", "-mtune=xscale", "", d)}"
+
+AVAILTUNES += "xscale"
+TUNE_FEATURES_tune-xscale = "${TUNE_FEATURES_tune-armv5te} xscale"
+PACKAGE_EXTRA_ARCHS_tune-xscale = "${PACKAGE_EXTRA_ARCHS_tune-armv5te}"
+
+AVAILTUNES += "xscale-be"
+TUNE_FEATURES_tune-xscale-be = "${TUNE_FEATURES_tune-armv5teb} xscale bigendian"
+PACKAGE_EXTRA_ARCHS_tune-xscale-be = "${PACKAGE_EXTRA_ARCHS_tune-armv5teb}"
# webkit-gtk has alignment issues with double instructions on armv5 so
# disable them here
-TARGET_CC_ARCH_pn-webkit-gtk = "-march=armv4t"
-TARGET_CC_ARCH_pn-cairo = "-march=armv4t"
+TUNE_CCARGS_pn-webkit-gtk = "-march=armv4t"
+TUNE_CCARGS_pn-cairo = "-march=armv4t"
diff --git a/meta/conf/machine/include/zaurus-2.6.inc b/meta/conf/machine/include/zaurus-2.6.inc
deleted file mode 100644
index aec61c7cf..000000000
--- a/meta/conf/machine/include/zaurus-2.6.inc
+++ /dev/null
@@ -1,72 +0,0 @@
-# Zaurus specific configuration for kernel 2.6
-# Additionally, clamshell specific stuff in zaurus-clamshell.inc
-
-TARGET_ARCH = "arm"
-PACKAGE_EXTRA_ARCHS = "armv4 armv4t armv5e armv5te"
-PACKAGE_EXTRA_ARCHS_collie = ""
-
-MACHINE_KERNEL_VERSION = "2.6"
-
-ERASEBLOCKSIZE = "0x4000"
-ERASEBLOCKSIZE_akita = "0x20000"
-
-EXTRA_IMAGECMD_jffs2 = "--little-endian --eraseblock=${ERASEBLOCKSIZE} --pad --faketime -n"
-IMAGE_CMD_jffs2 = "mkfs.jffs2 -x lzo --root=${IMAGE_ROOTFS} --output=${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.jffs2 ${EXTRA_IMAGECMD}"
-EXTRA_IMAGEDEPENDS += "zaurus-updater"
-
-SERIAL_CONSOLE = "115200 ttyS0"
-SERIAL_CONSOLE_collie = "115200 ttySA0"
-
-PREFERRED_PROVIDER_virtual/kernel = "linux-rp"
-PREFERRED_PROVIDER_xserver = "xserver-kdrive"
-
-PCMCIA_MANAGER ?= "pcmciautils"
-
-MACHINE_FEATURES = "kernel26 apm alsa pcmcia irda usbgadget keyboard touchscreen screen vfat"
-MACHINE_FEATURES_append_tosa = " usbhost wifi "
-MACHINE_FEATURES_append_akita = " usbhost "
-MACHINE_FEATURES_append_spitz = " usbhost ext2 "
-
-MACHINE_EXTRA_RDEPENDS = "zaurusd"
-MACHINE_EXTRA_RRECOMMENDS_c7x0 = "kernel-module-snd-soc-corgi kernel-module-pxa2xx-cs kernel-module-pcmcia"
-MACHINE_EXTRA_RRECOMMENDS_akita = "kernel-module-snd-soc-spitz kernel-module-pxa2xx-cs kernel-module-pcmcia"
-MACHINE_EXTRA_RRECOMMENDS_spitz = "kernel-module-snd-soc-spitz"
-MACHINE_EXTRA_RRECOMMENDS_poodle = "kernel-module-snd-soc-poodle"
-
-GUI_MACHINE_CLASS = "bigscreen"
-GUI_MACHINE_CLASS_collie = "smallscreen"
-GUI_MACHINE_CLASS_poodle = "smallscreen"
-
-KERNEL_IMAGE_MAXSIZE = "1294336"
-KERNEL_IMAGE_MAXSIZE_collie = "1048576"
-
-MACHINE_POSTPROCESS_COMMAND = "zaurus_make_installkit"
-
-zaurus_make_installkit () {
- cd ${DEPLOY_DIR_IMAGE}
- rm -rf ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}-installkit/
- mkdir ${IMAGE_NAME}-installkit/
-
- # Get the latest kernel using the zImage-<machine>.bin symlink
- cp zImage-${MACHINE}.bin ${IMAGE_NAME}-installkit/zImage
-
- if [ "${MACHINE}" = "spitz" ]; then
- cp gnu-tar ${IMAGE_NAME}-installkit/
- cp ${IMAGE_NAME}.rootfs.tar.gz ${IMAGE_NAME}-installkit/hdimage1.tgz
- else
- [ -f ${IMAGE_NAME}.rootfs.jffs2 ] && cp ${IMAGE_NAME}.rootfs.jffs2 ${IMAGE_NAME}-installkit/initrd.bin
- fi
-
- # All zaurus machines except collie need updater.sh
- if [ "${MACHINE}" != "collie" ]; then
- cp updater.sh.${MACHINE} ${IMAGE_NAME}-installkit/updater.sh
- fi
-
- tar czf ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}-installkit.tgz ${IMAGE_NAME}-installkit/
- md5sum ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}-installkit.tgz > ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}-installkit.tgz.md5
- rm -rf ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}-installkit/
-}
-
-# Don't include kernels in standard images for Zaurus machines
-RDEPENDS_kernel-base = ""
-KERNEL_IMAGETYPE = "zImage"
diff --git a/meta/conf/machine/include/zaurus-clamshell.inc b/meta/conf/machine/include/zaurus-clamshell.inc
deleted file mode 100644
index 4fa9f75eb..000000000
--- a/meta/conf/machine/include/zaurus-clamshell.inc
+++ /dev/null
@@ -1,15 +0,0 @@
-include conf/machine/include/tune-xscale.inc
-
-EXTRA_IMAGEDEPENDS += "sharp-flash-header-c700"
-
-IMAGE_CMD_jffs2 = "mkfs.jffs2 --root=${IMAGE_ROOTFS} --faketime -m favourlzo \
- --output=${T}/${IMAGE_NAME}.rootfs.jffs2 --pad --little-endian --eraseblock=${ERASEBLOCKSIZE} -n \
- && sumtool -i ${T}/${IMAGE_NAME}.rootfs.jffs2 \
- -o ${T}/${IMAGE_NAME}.rootfs.jffs2.summary \
- --eraseblock=${ERASEBLOCKSIZE} -l -p; \
- cat ${STAGING_LIBDIR}/sharp-flash-header/header-c700.bin \
- ${T}/${IMAGE_NAME}.rootfs.jffs2 > ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.jffs2; \
- rm ${T}/${IMAGE_NAME}.rootfs.jffs2; \
- cat ${STAGING_LIBDIR}/sharp-flash-header/header-c700.bin \
- ${T}/${IMAGE_NAME}.rootfs.jffs2.summary > ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.summary.jffs2; \
- rm ${T}/${IMAGE_NAME}.rootfs.jffs2.summary;"
diff --git a/meta/conf/machine/mx31ads.conf b/meta/conf/machine/mx31ads.conf
deleted file mode 100644
index 04a238d60..000000000
--- a/meta/conf/machine/mx31ads.conf
+++ /dev/null
@@ -1,16 +0,0 @@
-#@TYPE: Machine
-#@NAME: Freescale imx31 ADS Board
-#@DESCRIPTION: Machine configuration for the imx31 based Freescale ADS Board
-TARGET_ARCH = "arm"
-PACKAGE_EXTRA_ARCHS = "armv4 armv4t armv5te armv6"
-
-PREFERRED_PROVIDER_virtual/kernel = "linux-mx31"
-
-MACHINE_FEATURES = "kernel26 apm alsa bluetooth irda screen touchscreen"
-
-IMAGE_FSTYPES ?= "tar.gz jffs2"
-SERIAL_CONSOLE = "-L 115200 ttymxc0"
-
-EXTRA_IMAGECMD_jffs2_mx31ads = "--pad --little-endian --eraseblock=0x20000 -n"
-
-require conf/machine/include/tune-arm1136jf-s.inc
diff --git a/meta/conf/machine/mx31litekit.conf b/meta/conf/machine/mx31litekit.conf
deleted file mode 100644
index 2dc288375..000000000
--- a/meta/conf/machine/mx31litekit.conf
+++ /dev/null
@@ -1,14 +0,0 @@
-#@TYPE: Machine
-#@NAME: imx31 Lite Kit
-#@DESCRIPTION: Machine configuration for the imx31 based Lite Kit
-TARGET_ARCH = "arm"
-PACKAGE_EXTRA_ARCHS = "armv4 armv4t armv5te armv6"
-
-PREFERRED_PROVIDER_virtual/kernel = "linux-mx31"
-
-MACHINE_FEATURES = "kernel26 apm alsa bluetooth irda screen touchscreen"
-
-IMAGE_FSTYPES ?= "tar.gz"
-SERIAL_CONSOLE = "-L 115200 ttymxc0"
-
-require conf/machine/include/tune-arm1136jf-s.inc
diff --git a/meta/conf/machine/mx31phy.conf b/meta/conf/machine/mx31phy.conf
deleted file mode 100644
index 28b255cce..000000000
--- a/meta/conf/machine/mx31phy.conf
+++ /dev/null
@@ -1,17 +0,0 @@
-#@TYPE: Machine
-#@NAME: Phytec phyCORE-iMX31 Board
-#@DESCRIPTION: Machine configuration for the imx31 based Phytec phyCORE-iMX31
-TARGET_ARCH = "arm"
-PACKAGE_EXTRA_ARCHS = "armv4 armv4t armv5te armv6"
-
-PREFERRED_PROVIDER_virtual/kernel = "linux-mx31"
-
-MACHINE_FEATURES = "kernel26 apm alsa bluetooth irda screen touchscreen"
-
-IMAGE_FSTYPES ?= "tar.gz jffs2"
-KERNEL_IMAGETYPE = "uImage"
-UBOOT_ENTRYPOINT = "80008000"
-SERIAL_CONSOLE = "-L 115200 ttymxc0"
-EXTRA_IMAGECMD_jffs2_mx31phy = "--pad --little-endian --eraseblock=0x20000 -n"
-
-require conf/machine/include/tune-arm1136jf-s.inc
diff --git a/meta/conf/machine/nokia770.conf b/meta/conf/machine/nokia770.conf
deleted file mode 100644
index c8b4c3c91..000000000
--- a/meta/conf/machine/nokia770.conf
+++ /dev/null
@@ -1,35 +0,0 @@
-#@TYPE: Machine
-#@NAME: Nokia 770 internet tablet
-#@DESCRIPTION: Machine configuration for the Nokia 770, an omap 1710 based tablet
-TARGET_ARCH = "arm"
-PACKAGE_EXTRA_ARCHS = "armv4 armv4t armv5te"
-
-PREFERRED_PROVIDER_virtual/xserver = "xserver-kdrive-xomap"
-PREFERRED_PROVIDER_virtual/bootloader = ""
-
-XSERVER = "xserver-kdrive-xomap"
-
-# 800x480 is big enough for me
-GUI_MACHINE_CLASS = "bigscreen"
-
-require conf/machine/include/tune-arm926ejs.inc
-
-#size of the root partition (yes, it is 123 MB)
-ROOT_FLASH_SIZE = "123"
-EXTRA_IMAGECMD_jffs2_nokia770 = "--pad --little-endian --eraseblock=0x20000 -n"
-
-IMAGE_FSTYPES ?= "jffs2"
-
-# serial console port on devboard rev. B3
-SERIAL_CONSOLE = "115200 ttyS0"
-
-PREFERRED_PROVIDER_virtual/kernel = "linux-nokia800"
-
-#use this if you are using the nokia initfs
-ROOTFS_POSTPROCESS_COMMAND += " remove_init_link; "
-
-MACHINE_FEATURES = "kernel26 apm alsa bluetooth usbgadget usbhost screen vfat"
-MACHINE_EXTRA_RDEPENDS = "usbinit"
-MACHINE_ESSENTIAL_EXTRA_RDEPENDS = "nokia770-init"
-
-KERNEL_IMAGE_MAXSIZE = "2097152"
diff --git a/meta/conf/machine/nokia800.conf b/meta/conf/machine/nokia800.conf
deleted file mode 100644
index fb2cd02b0..000000000
--- a/meta/conf/machine/nokia800.conf
+++ /dev/null
@@ -1,30 +0,0 @@
-#@TYPE: Machine
-#@NAME: Nokia 800/810 internet tablet
-#@DESCRIPTION: Machine configuration for the Nokia 800/810
-TARGET_ARCH = "arm"
-PACKAGE_EXTRA_ARCHS = "armv4 armv4t armv5te armv6"
-
-PREFERRED_PROVIDER_virtual/xserver = "xserver-kdrive-xomap"
-XSERVER = "xserver-kdrive-xomap"
-
-GUI_MACHINE_CLASS = "bigscreen"
-
-require conf/machine/include/tune-arm1136jf-s.inc
-
-ROOT_FLASH_SIZE = "174"
-EXTRA_IMAGECMD_jffs2_nokia800 = "--pad --little-endian --eraseblock=0x20000 -n"
-
-IMAGE_FSTYPES ?= "jffs2"
-
-SERIAL_CONSOLE = "-L 115200 ttyS0"
-
-PREFERRED_PROVIDER_virtual/kernel = "linux-nokia800"
-
-#use this if you are using the nokia initfs
-ROOTFS_POSTPROCESS_COMMAND += " remove_init_link; "
-
-MACHINE_FEATURES = "kernel26 apm alsa bluetooth usbgadget usbhost vfat"
-MACHINE_EXTRA_RDEPENDS = "cx3110x usbinit"
-MACHINE_ESSENTIAL_EXTRA_RDEPENDS = "nokia770-init"
-
-KERNEL_IMAGE_MAXSIZE = "2097152"
diff --git a/meta/conf/machine/om-gta01.conf b/meta/conf/machine/om-gta01.conf
deleted file mode 100644
index f40457e22..000000000
--- a/meta/conf/machine/om-gta01.conf
+++ /dev/null
@@ -1,48 +0,0 @@
-#-----------------------------------------------------------------------------
-#@TYPE: Machine
-#@NAME: FIC GTA01 (Neo1973)
-#@DESCRIPTION: Machine configuration for the FIC Neo1973/1 GSM phone
-#-----------------------------------------------------------------------------
-
-TARGET_ARCH = "arm"
-MACHINE_CLASS = "neo1973"
-PACKAGE_EXTRA_ARCHS = "armv4t fic-gta01 ${MACHINE_CLASS}"
-
-PREFERRED_PROVIDER_virtual/kernel = "linux-openmoko"
-UBOOT_ENTRYPOINT = "30008000"
-
-MACHINE_FEATURES = "kernel26 apm alsa bluetooth gps usbgadget usbhost phone vfat ext2"
-MACHINE_DISPLAY_WIDTH_PIXELS = "480"
-MACHINE_DISPLAY_HEIGHT_PIXELS = "640"
-MACHINE_DISPLAY_ORIENTATION = "0"
-MACHINE_DISPLAY_PPI = "285"
-XSERVER = "xserver-kdrive-fbdev"
-
-MACHINE_EXTRA_RDEPENDS = "usbinit"
-# package machine specific modules
-MACHINE_EXTRA_RRECOMMENDS = "\
- kernel-module-gta01-pm-bt \
- kernel-module-gta01-pm-gps \
- kernel-module-gta01-pm-gsm \
- kernel-module-gta01kbd \
- kernel-module-s3cmci \
- kernel-module-snd-soc-neo1973-wm8753 \
- kernel-module-snd-soc-smdk2440 \
-"
-
-# do not outcomment, we bypass the sysvinit.bb logic here -- see FIC GTA01 inittab
-#SERIAL_CONSOLE = "115200 ttySAC0"
-
-# used by some images
-ROOT_FLASH_SIZE = "60"
-
-# extra jffs2 tweaks
-IMAGE_FSTYPES ?= "jffs2"
-EXTRA_IMAGECMD_jffs2 = "--little-endian --eraseblock=0x4000 --pad -n"
-
-# build / upload tools
-#EXTRA_IMAGEDEPENDS += "dfu-util-native"
-
-# tune for S3C24x0
-include conf/machine/include/tune-arm920t.inc
-
diff --git a/meta/conf/machine/om-gta02.conf b/meta/conf/machine/om-gta02.conf
deleted file mode 100644
index 55f4bec21..000000000
--- a/meta/conf/machine/om-gta02.conf
+++ /dev/null
@@ -1,49 +0,0 @@
-#-----------------------------------------------------------------------------
-#@TYPE: Machine
-#@NAME: FIC GTA02 (Neo1973)
-#@DESCRIPTION: Machine configuration for the FIC Neo1973/2 GSM phone
-#-----------------------------------------------------------------------------
-
-TARGET_ARCH = "arm"
-MACHINE_CLASS = "neo1973"
-PACKAGE_EXTRA_ARCHS = "armv4t fic-gta02 ${MACHINE_CLASS}"
-
-PREFERRED_PROVIDER_virtual/kernel = "linux-openmoko"
-PREFERRED_PROVIDER_virtual/xserver = "xserver-kdrive-glamo"
-UBOOT_ENTRYPOINT = "30008000"
-
-MACHINE_FEATURES = "kernel26 apm alsa bluetooth gps usbgadget usbhost phone wifi vfat ext2"
-MACHINE_DISPLAY_WIDTH_PIXELS = "480"
-MACHINE_DISPLAY_HEIGHT_PIXELS = "640"
-MACHINE_DISPLAY_ORIENTATION = "0"
-MACHINE_DISPLAY_PPI = "285"
-XSERVER = "xserver-kdrive-glamo xserver-kdrive-fbdev"
-
-# package machine specific modules
-MACHINE_EXTRA_RRECOMMENDS = "\
- kernel-module-gta01-pm-bt \
- kernel-module-gta01-pm-gps \
- kernel-module-gta01-pm-gsm \
- kernel-module-gta01kbd \
- kernel-module-s3cmci \
- kernel-module-snd-soc-neo1973-gta02-wm8753 \
-"
-
-SERIAL_CONSOLE = "115200 ttySAC2"
-
-# used by some images
-ROOT_FLASH_SIZE = "256"
-
-# extra jffs2 tweaks
-IMAGE_FSTYPES ?= "jffs2"
-EXTRA_IMAGECMD_jffs2 = "--little-endian --eraseblock=0x20000 --pagesize=0x800 \
- --no-cleanmarkers --pad -n ; sumtool --eraseblock=0x20000 --no-cleanmarkers \
- --littleendian --pad \
- -i ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.jffs2 \
- -o ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.jffs2.summary"
-
-# build / upload tools
-#EXTRA_IMAGEDEPENDS += "sjf2410-linux-native dfu-util-native"
-
-# tune for S3C24x0
-include conf/machine/include/tune-arm920t.inc
diff --git a/meta/conf/machine/omap-3430ldp.conf b/meta/conf/machine/omap-3430ldp.conf
deleted file mode 100644
index 0be0546b8..000000000
--- a/meta/conf/machine/omap-3430ldp.conf
+++ /dev/null
@@ -1,27 +0,0 @@
-#@TYPE: Machine
-#@NAME: TI OMAP 3430 LDP
-#@DESCRIPTION: Machine configuration for the TI OMAP 3430 LDP (aka OMAP Zoom)
-TARGET_ARCH = "arm"
-PACKAGE_EXTRA_ARCHS = "armv4 armv4t armv5te armv6 armv7a"
-
-PREFERRED_PROVIDER_virtual/kernel = "linux-omap"
-
-MACHINE_FEATURES = "kernel26 apm alsa bluetooth screen touchscreen phone"
-KERNEL_IMAGETYPE = "uImage"
-IMAGE_FSTYPES ?= "tar.gz jffs2"
-EXTRA_IMAGECMD_jffs2 = "--pad --little-endian --eraseblock=0x20000 -n"
-SERIAL_CONSOLE = "-L 115200 ttyS2"
-
-require conf/machine/include/tune-cortexa8.inc
-#require conf/machine/include/tune-arm1136jf-s.inc
-
-MACHINE_EXTRA_RRECOMMENDS = "\
- kernel-module-ads7846 \
- kernel-module-atkbd \
- kernel-module-g-ether \
- kernel-module-musb-hdrc \
- kernel-module-omap24xxlib \
- kernel-module-omap24xxvout \
- kernel-module-omap-hsmmc \
- kernel-module-snd-omap2-audio \
- "
diff --git a/meta/conf/machine/omap-3430sdp.conf b/meta/conf/machine/omap-3430sdp.conf
deleted file mode 100644
index 5d87bd148..000000000
--- a/meta/conf/machine/omap-3430sdp.conf
+++ /dev/null
@@ -1,16 +0,0 @@
-#@TYPE: Machine
-#@NAME: TI OMAP 3430 SDP
-#@DESCRIPTION: Machine configuration for the TI OMAP 3430 SDP
-TARGET_ARCH = "arm"
-PACKAGE_EXTRA_ARCHS = "armv4 armv4t armv5te armv6 armv7a"
-
-PREFERRED_PROVIDER_virtual/kernel = "linux-omap"
-
-MACHINE_FEATURES = "kernel26 apm alsa bluetooth irda screen touchscreen"
-KERNEL_IMAGETYPE = "uImage"
-IMAGE_FSTYPES ?= "tar.gz jffs2"
-EXTRA_IMAGECMD_jffs2 = "--pad --little-endian --eraseblock=0x20000 -n"
-SERIAL_CONSOLE = "-L 115200 ttyS0"
-
-require conf/machine/include/tune-cortexa8.inc
-#require conf/machine/include/tune-arm1136jf-s.inc
diff --git a/meta/conf/machine/overo.conf b/meta/conf/machine/overo.conf
deleted file mode 100644
index dde4bff47..000000000
--- a/meta/conf/machine/overo.conf
+++ /dev/null
@@ -1,37 +0,0 @@
-#@TYPE: Machine
-#@NAME: overo machine
-#@DESCRIPTION: Machine configuration for the overo
-
-include conf/machine/include/tune-cortexa8.inc
-
-TARGET_ARCH = "arm"
-PACKAGE_EXTRA_ARCHS = "armv4 armv4t armv5te armv6 armv7 armv7a"
-MACHINE_FEATURES = "kernel26 apm usbgadget usbhost vfat alsa"
-
-PREFERRED_VERSION_u-boot = "git"
-UBOOT_ENTRYPOINT = "0x80008000"
-UBOOT_LOADADDRESS = "0x80008000"
-
-PREFERRED_PROVIDER_virtual/kernel = "linux-omap3"
-KERNEL_IMAGETYPE = "uImage"
-MACHINE_EXTRA_RRECOMMENDS = " kernel-modules"
-SERIAL_CONSOLE = "115200 ttyS2"
-
-IMAGE_FSTYPES += "tar.bz2 jffs2"
-EXTRA_IMAGECMD_jffs2 = "-lnp "
-EXTRA_IMAGEDEPENDS += "u-boot-omap3 x-load"
-
-PREFERRED_PROVIDER_virtual/xserver = "xserver-kdrive"
-#XSERVER = "xserver-xorg \
-# xf86-input-evdev \
-# xf86-input-mouse \
-# xf86-video-fbdev \
-# xf86-input-keyboard"
-
-XSERVER = "xserver-kdrive-fbdev"
-
-GUI_MACHINE_CLASS = "bigscreen"
-
-ANGSTROM_URI = "http://www.gumstix.net"
-
-
diff --git a/meta/conf/machine/qemuarm.conf b/meta/conf/machine/qemuarm.conf
index 4ea8371ef..d07084bcf 100644
--- a/meta/conf/machine/qemuarm.conf
+++ b/meta/conf/machine/qemuarm.conf
@@ -1,9 +1,6 @@
#@TYPE: Machine
-#@NAME: qemu ARM Emulator setup
-#@DESCRIPTION: Machine configuration for running an ARM system under qemu emulation
-
-TARGET_ARCH = "arm"
-PACKAGE_EXTRA_ARCHS = "armv4 armv4t armv5te"
+#@NAME: arm_versatile_926ejs
+#@DESCRIPTION: arm_versatile_926ejs
require conf/machine/include/qemu.inc
require conf/machine/include/tune-arm926ejs.inc
@@ -13,4 +10,3 @@ KERNEL_IMAGETYPE = "zImage"
SERIAL_CONSOLE = "115200 ttyAMA0"
-PREFERRED_PROVIDER_virtual/kernel = "linux-rp"
diff --git a/meta/conf/machine/qemumips.conf b/meta/conf/machine/qemumips.conf
new file mode 100644
index 000000000..ce1c419d1
--- /dev/null
+++ b/meta/conf/machine/qemumips.conf
@@ -0,0 +1,13 @@
+#@TYPE: Machine
+#@NAME: mti_malta32_be MIPS
+#@DESCRIPTION: mti_malta32_be
+
+require conf/machine/include/qemu.inc
+require conf/machine/include/tune-mips32.inc
+
+KERNEL_IMAGETYPE = "vmlinux"
+KERNEL_ALT_IMAGETYPE = "vmlinux.bin"
+
+SERIAL_CONSOLE = "115200 ttyS0"
+
+MACHINE_EXTRA_RRECOMMENDS = " kernel-modules"
diff --git a/meta/conf/machine/qemuppc.conf b/meta/conf/machine/qemuppc.conf
new file mode 100644
index 000000000..48eecb73b
--- /dev/null
+++ b/meta/conf/machine/qemuppc.conf
@@ -0,0 +1,11 @@
+#@TYPE: Machine
+#@NAME: qemu PPC Emulator setup
+#@DESCRIPTION: Machine configuration for running an PPC system under qemu emulation
+
+require conf/machine/include/qemu.inc
+require conf/machine/include/tune-ppc603e.inc
+
+KERNEL_IMAGETYPE = "vmlinux"
+
+SERIAL_CONSOLE = "115200 ttyS0"
+
diff --git a/meta/conf/machine/qemux86-64.conf b/meta/conf/machine/qemux86-64.conf
new file mode 100644
index 000000000..129fe9f28
--- /dev/null
+++ b/meta/conf/machine/qemux86-64.conf
@@ -0,0 +1,29 @@
+#@TYPE: Machine
+#@NAME: common_pc
+#@DESCRIPTION: Machine configuration for running a common x86
+
+PREFERRED_PROVIDER_virtual/xserver ?= "xserver-xorg"
+PREFERRED_PROVIDER_virtual/libgl ?= "mesa-dri"
+
+require conf/machine/include/tune-x86_64.inc
+require conf/machine/include/qemu.inc
+
+MACHINE_FEATURES += "x86"
+
+KERNEL_IMAGETYPE = "bzImage"
+
+SERIAL_CONSOLE = "115200 ttyS0"
+
+# We bypass swrast but we need it to be present for X to load correctly
+XSERVER ?= "xserver-xorg \
+ mesa-dri-driver-swrast \
+ xf86-input-vmmouse \
+ xf86-input-keyboard \
+ xf86-input-evdev \
+ xf86-video-vmware \
+ qemugl"
+
+GLIBC_ADDONS = "nptl"
+GLIBC_EXTRA_OECONF = "--with-tls"
+
+MACHINE_ESSENTIAL_EXTRA_RDEPENDS += "v86d"
diff --git a/meta/conf/machine/qemux86.conf b/meta/conf/machine/qemux86.conf
index c7ed4b87d..246d5a0c8 100644
--- a/meta/conf/machine/qemux86.conf
+++ b/meta/conf/machine/qemux86.conf
@@ -1,10 +1,11 @@
#@TYPE: Machine
-#@NAME: qemu x86 Emulator setup
-#@DESCRIPTION: Machine configuration for running an x86 system under qemu emulation
+#@NAME: common_pc
+#@DESCRIPTION: Machine configuration for running a common x86
-TARGET_ARCH = "i586"
-PACKAGE_EXTRA_ARCHS = "x86"
+PREFERRED_PROVIDER_virtual/xserver ?= "xserver-xorg"
+PREFERRED_PROVIDER_virtual/libgl ?= "mesa-dri"
+require conf/machine/include/tune-i586.inc
require conf/machine/include/qemu.inc
MACHINE_FEATURES += "x86"
@@ -13,23 +14,17 @@ KERNEL_IMAGETYPE = "bzImage"
SERIAL_CONSOLE = "115200 ttyS0"
-PREFERRED_PROVIDER_virtual/kernel = "linux-rp"
-PREFERRED_PROVIDER_virtual/libgl = "qemugl"
-PREFERRED_PROVIDER_virtual/kernel ?= "linux-moblin"
-PREFERRED_PROVIDER_virtual/libx11 ?= "libx11-trim"
-PREFERRED_PROVIDER_virtual/xserver ?= "xserver-xf86-dri-lite"
-PREFERRED_PROVIDER_virtual/xserver-xf86 ?= "xserver-xf86-dri-lite"
-XSERVER ?= "xserver-xf86-dri-lite \
- xf86-input-mouse \
+# We bypass swrast but we need it to be present for X to load correctly
+XSERVER ?= "xserver-xorg \
+ mesa-dri-driver-swrast \
+ xf86-input-vmmouse \
xf86-input-keyboard \
xf86-input-evdev \
- xf86-input-synaptics \
xf86-video-vmware \
qemugl"
GLIBC_ADDONS = "nptl"
GLIBC_EXTRA_OECONF = "--with-tls"
-MACHINE_ESSENTIAL_EXTRA_RDEPENDS = "v86d"
+MACHINE_ESSENTIAL_EXTRA_RDEPENDS += "v86d"
-TARGET_CC_ARCH = "-march=i586"
diff --git a/meta/conf/machine/spitz.conf b/meta/conf/machine/spitz.conf
deleted file mode 100644
index 4a794331e..000000000
--- a/meta/conf/machine/spitz.conf
+++ /dev/null
@@ -1,16 +0,0 @@
-#@TYPE: Machine
-#@NAME: Sharp Zaurus SL-C3000
-#@DESCRIPTION: Machine configuration for the Sharp Zaurus SL-C3000 device
-
-require conf/machine/include/zaurus-2.6.inc
-require conf/machine/include/zaurus-clamshell.inc
-
-MACHINE_FEATURES += "iwmmxt"
-
-PIVOTBOOT_EXTRA_RDEPENDS += "pivotinit ${PCMCIA_MANAGER}"
-
-PACKAGE_EXTRA_ARCHS += "iwmmxt"
-IMAGE_FSTYPES ?= "tar.gz ext3"
-IMAGE_ROOTFS_SIZE_ext3 = "250000"
-
-ROOT_FLASH_SIZE = "100"
diff --git a/meta/conf/machine/zylonite.conf b/meta/conf/machine/zylonite.conf
deleted file mode 100644
index 644675e84..000000000
--- a/meta/conf/machine/zylonite.conf
+++ /dev/null
@@ -1,24 +0,0 @@
-#@TYPE: Machine
-#@NAME: Marvel PXA3xx Monahans Zylonite
-#@DESCRIPTION: Machine configuration for the Zylonite Development board
-
-require conf/machine/include/tune-xscale.inc
-
-TARGET_ARCH = "arm"
-PACKAGE_EXTRA_ARCHS = "armv4 armv4t armv5e armv5te iwmmxt"
-
-EXTRA_IMAGECMD_jffs2 = "--little-endian --eraseblock=0x20000 -n -x lzo -p"
-
-IMAGE_CMD_jffs2 = "mkdir -p ${DEPLOY_DIR_IMAGE}; \
- mkfs.jffs2 --root=${IMAGE_ROOTFS} --faketime \
- --output=${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.jffs2 ${EXTRA_IMAGECMD}; "
-
-IMAGE_FSTYPES ?= "tar.bz2 jffs2"
-
-SERIAL_CONSOLE = "38400 ttyS0"
-
-PREFERRED_PROVIDER_virtual/kernel = "linux-rp"
-PREFERRED_PROVIDER_virtual/xserver = "xserver-kdrive"
-XSERVER = "xserver-kdrive-fbdev"
-
-MACHINE_FEATURES = "kernel26 apm usbgadget"