aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--meta-aarch64/recipes-devtools/qemu/files/fix-configure-checks.patch22
-rw-r--r--meta-aarch64/recipes-devtools/qemu/nativesdk-qemu-helper_1.0.bb49
-rw-r--r--meta-aarch64/recipes-devtools/qemu/qemu-helper-native_1.0.bb23
-rw-r--r--meta-aarch64/recipes-devtools/qemu/qemu-helper/raw2flash.c370
-rw-r--r--meta-aarch64/recipes-devtools/qemu/qemu-helper/tunctl.c156
-rw-r--r--meta-aarch64/recipes-devtools/qemu/qemu-targets.inc18
-rw-r--r--meta-aarch64/recipes-devtools/qemu/qemu.inc73
-rw-r--r--meta-aarch64/recipes-devtools/qemu/qemu_1.5.0.bb10
-rw-r--r--meta-aarch64/recipes-devtools/qemu/qemu_git.bb17
-rw-r--r--meta-aarch64/recipes-devtools/qemu/qemuwrapper-cross_1.0.bb48
-rw-r--r--meta-linaro/recipes-devtools/qemu/files/3f08ffb4a4741d147634761dc053ed386243a0de.patch (renamed from meta-aarch64/recipes-devtools/qemu/files/3f08ffb4a4741d147634761dc053ed386243a0de.patch)0
-rw-r--r--meta-linaro/recipes-devtools/qemu/files/aarch64-softmmu.patch103
-rw-r--r--meta-linaro/recipes-devtools/qemu/files/enable-i386-linux-user.patch (renamed from meta-aarch64/recipes-devtools/qemu/files/enable-i386-linux-user.patch)0
-rw-r--r--meta-linaro/recipes-devtools/qemu/files/fdt_header.patch (renamed from meta-aarch64/recipes-devtools/qemu/files/fdt_header.patch)0
-rw-r--r--meta-linaro/recipes-devtools/qemu/files/fix-libcap-header-issue-on-some-distro.patch (renamed from meta-aarch64/recipes-devtools/qemu/files/fix-libcap-header-issue-on-some-distro.patch)0
-rw-r--r--meta-linaro/recipes-devtools/qemu/files/init-info.patch (renamed from meta-aarch64/recipes-devtools/qemu/files/init-info.patch)0
-rw-r--r--meta-linaro/recipes-devtools/qemu/files/larger_default_ram_size.patch (renamed from meta-aarch64/recipes-devtools/qemu/files/larger_default_ram_size.patch)0
-rw-r--r--meta-linaro/recipes-devtools/qemu/files/no-strip.patch (renamed from meta-aarch64/recipes-devtools/qemu/files/no-strip.patch)0
-rw-r--r--meta-linaro/recipes-devtools/qemu/files/powerpc_rom.bin (renamed from meta-aarch64/recipes-devtools/qemu/files/powerpc_rom.bin)bin4096 -> 4096 bytes
-rw-r--r--meta-linaro/recipes-devtools/qemu/files/relocatable_sdk.patch (renamed from meta-aarch64/recipes-devtools/qemu/files/relocatable_sdk.patch)0
-rw-r--r--meta-linaro/recipes-devtools/qemu/files/target-i386-Fix-aflag-logic-for-CODE64-and-the-0x67-.patch79
-rw-r--r--meta-linaro/recipes-devtools/qemu/files/target-ppc_fix_bit_extraction.patch70
-rw-r--r--meta-linaro/recipes-devtools/qemu/qemu_git.bb20
23 files changed, 272 insertions, 786 deletions
diff --git a/meta-aarch64/recipes-devtools/qemu/files/fix-configure-checks.patch b/meta-aarch64/recipes-devtools/qemu/files/fix-configure-checks.patch
deleted file mode 100644
index 294c2201..00000000
--- a/meta-aarch64/recipes-devtools/qemu/files/fix-configure-checks.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-In native builds, qemu can fail to find zlib development files in the native
-sysroot and the build machine might not have zlib-dev packages installed.
-
-Add CFLAGS to qemu's CFLAGS which in the native case means BUILD_CFLAGS are
-added and files in the sysroot can be found.
-
-Patch from Paul Eggleton, Comments by RP 28/11/10
-
-Upstream-Status: Inappropriate [embedded specific]
-
-Index: qemu-1.4.0/configure
-===================================================================
---- qemu-1.4.0.orig/configure 2013-02-15 15:05:35.000000000 -0800
-+++ qemu-1.4.0/configure 2013-02-25 13:44:17.915273181 -0800
-@@ -286,6 +286,7 @@
- QEMU_CFLAGS="-Wstrict-prototypes -Wredundant-decls $QEMU_CFLAGS"
- QEMU_CFLAGS="-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE $QEMU_CFLAGS"
- QEMU_INCLUDES="-I. -I\$(SRC_PATH) -I\$(SRC_PATH)/include"
-+QEMU_CFLAGS="$QEMU_CFLAGS $CFLAGS"
- if test "$debug_info" = "yes"; then
- CFLAGS="-g $CFLAGS"
- LDFLAGS="-g $LDFLAGS"
diff --git a/meta-aarch64/recipes-devtools/qemu/nativesdk-qemu-helper_1.0.bb b/meta-aarch64/recipes-devtools/qemu/nativesdk-qemu-helper_1.0.bb
deleted file mode 100644
index fbf9e771..00000000
--- a/meta-aarch64/recipes-devtools/qemu/nativesdk-qemu-helper_1.0.bb
+++ /dev/null
@@ -1,49 +0,0 @@
-SUMMARY = "Qemu helper scripts"
-DESCRIPTION = "Qemu helper scripts"
-LICENSE = "GPLv2"
-RDEPENDS_${PN} = "nativesdk-qemu"
-PR = "r9"
-
-FILESPATH = "${FILE_DIRNAME}/qemu-helper"
-
-LIC_FILES_CHKSUM = "file://${WORKDIR}/tunctl.c;endline=4;md5=ff3a09996bc5fff6bc5d4e0b4c28f999 \
- file://${COREBASE}/scripts/runqemu;endline=18;md5=77fbe442a88b1bcdc29c3ba67733b21b"
-
-
-SRC_URI = "file://${COREBASE}/scripts/runqemu \
- file://${COREBASE}/scripts/runqemu-internal \
- file://${COREBASE}/scripts/runqemu-addptable2image \
- file://${COREBASE}/scripts/runqemu-gen-tapdevs \
- file://${COREBASE}/scripts/runqemu-ifup \
- file://${COREBASE}/scripts/runqemu-ifdown \
- file://${COREBASE}/scripts/oe-find-native-sysroot \
- file://${COREBASE}/scripts/runqemu-extract-sdk \
- file://${COREBASE}/scripts/runqemu-export-rootfs \
- file://tunctl.c \
- file://raw2flash.c \
- "
-
-S = "${WORKDIR}"
-
-inherit nativesdk
-
-do_compile() {
- ${CC} tunctl.c -o tunctl
- ${CC} raw2flash.c -o raw2flash.spitz
- ${CC} raw2flash.c -o flash2raw.spitz -Dflash2raw
-}
-
-do_install() {
- install -d ${D}${bindir}
- install -m 0755 ${WORKDIR}${COREBASE}/scripts/oe-* ${D}${bindir}/
- install -m 0755 ${WORKDIR}${COREBASE}/scripts/runqemu* ${D}${bindir}/
- install tunctl ${D}${bindir}/
- install raw2flash.spitz ${D}${bindir}/
- install flash2raw.spitz ${D}${bindir}/
- ln -fs raw2flash.spitz ${D}${bindir}/raw2flash.akita
- ln -fs raw2flash.spitz ${D}${bindir}/raw2flash.borzoi
- ln -fs raw2flash.spitz ${D}${bindir}/raw2flash.terrier
- ln -fs flash2raw.spitz ${D}${bindir}/flash2raw.akita
- ln -fs flash2raw.spitz ${D}${bindir}/flash2raw.borzoi
- ln -fs flash2raw.spitz ${D}${bindir}/flash2raw.terrier
-}
diff --git a/meta-aarch64/recipes-devtools/qemu/qemu-helper-native_1.0.bb b/meta-aarch64/recipes-devtools/qemu/qemu-helper-native_1.0.bb
deleted file mode 100644
index 23771acf..00000000
--- a/meta-aarch64/recipes-devtools/qemu/qemu-helper-native_1.0.bb
+++ /dev/null
@@ -1,23 +0,0 @@
-DESCRIPTION = "Qemu helper utilities from Poky"
-LICENSE = "GPLv2"
-RDEPENDS_${PN} = "qemu-native"
-PR = "r1"
-
-LIC_FILES_CHKSUM = "file://${WORKDIR}/tunctl.c;endline=4;md5=ff3a09996bc5fff6bc5d4e0b4c28f999"
-
-FILESPATH = "${FILE_DIRNAME}/qemu-helper"
-
-SRC_URI = "file://tunctl.c"
-
-S = "${WORKDIR}"
-
-inherit native
-
-do_compile() {
- ${CC} tunctl.c -o tunctl
-}
-
-do_install() {
- install -d ${D}${bindir}
- install tunctl ${D}${bindir}/
-}
diff --git a/meta-aarch64/recipes-devtools/qemu/qemu-helper/raw2flash.c b/meta-aarch64/recipes-devtools/qemu/qemu-helper/raw2flash.c
deleted file mode 100644
index 19faf629..00000000
--- a/meta-aarch64/recipes-devtools/qemu/qemu-helper/raw2flash.c
+++ /dev/null
@@ -1,370 +0,0 @@
-/*
- * Copyright (c) 2006 OpenedHand Ltd.
- *
- * This file is licensed under GNU GPL v2.
- */
-#include <string.h>
-#include <unistd.h>
-#include <stdint.h>
-#include <stdio.h>
-#include <sys/types.h>
-#include <stdlib.h>
-
-#define TFR(_) _
-#define VERBOSE
-#define PBAR_LEN 40
-
-#define PARTITION_START 0x00700000
-
-static const int ecc_pos8[] = {
- 0x0, 0x1, 0x2,
-};
-
-static const int ecc_pos16[] = {
- 0x0, 0x1, 0x2, 0x3, 0x6, 0x7,
-};
-
-static const int ecc_pos64[] = {
- 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
- 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
- 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
-};
-
-static const int ecc_akita[] = {
- 0x05, 0x01, 0x02, 0x03, 0x06, 0x07, 0x15, 0x11,
- 0x12, 0x13, 0x16, 0x17, 0x25, 0x21, 0x22, 0x23,
- 0x26, 0x27, 0x35, 0x31, 0x32, 0x33, 0x36, 0x37,
-};
-
-struct jffs_marker_s {
- int pos;
- uint8_t value;
-};
-
-static const struct jffs_marker_s free_pos8[] = {
- { 0x03, 0xff }, { 0x04, 0xff }, { 0x06, 0x85 }, { 0x07, 0x19 },
- { -1 },
-};
-
-static const struct jffs_marker_s free_pos16[] = {
- { 0x08, 0x85 }, { 0x09, 0x19 }, { 0x0a, 0x03 }, { 0x0b, 0x20 },
- { 0x0c, 0x08 }, { 0x0d, 0x00 }, { 0x0e, 0x00 }, { 0x0f, 0x00 },
- { -1 },
-};
-
-static const struct jffs_marker_s free_pos64[] = {
- { 0x02, 0xff }, { 0x03, 0xff }, { 0x04, 0xff }, { 0x05, 0xff },
- { 0x06, 0xff }, { 0x07, 0xff }, { 0x08, 0xff }, { 0x09, 0xff },
- { 0x0a, 0xff }, { 0x0b, 0xff }, { 0x0c, 0xff }, { 0x0d, 0xff },
- { 0x0e, 0xff }, { 0x0f, 0xff }, { 0x10, 0x85 }, { 0x11, 0x19 },
- { 0x12, 0x03 }, { 0x13, 0x20 }, { 0x14, 0x08 }, { 0x15, 0x00 },
- { 0x16, 0x00 }, { 0x17, 0x00 }, { 0x18, 0xff }, { 0x19, 0xff },
- { 0x1a, 0xff }, { 0x1b, 0xff }, { 0x1c, 0xff }, { 0x1d, 0xff },
- { 0x1e, 0xff }, { 0x1f, 0xff }, { 0x20, 0xff }, { 0x21, 0xff },
- { 0x22, 0xff }, { 0x23, 0xff }, { 0x24, 0xff }, { 0x25, 0xff },
- { 0x26, 0xff }, { 0x27, 0xff },
- { -1 },
-};
-
-static const struct jffs_marker_s free_akita[] = {
- { 0x08, 0x85 }, { 0x09, 0x19 }, { 0x0a, 0x03 }, { 0x0b, 0x20 },
- { 0x0c, 0x08 }, { 0x0d, 0x00 }, { 0x0e, 0x00 }, { 0x0f, 0x00 },
- { 0x10, 0xff },
- { -1 },
-};
-
-#define LEN(array) (sizeof(array) / sizeof(*array))
-
-static const struct ecc_style_s {
- int page_size;
- int oob_size;
- int eccbytes;
- int eccsize;
- const int *eccpos;
- int romsize;
- const struct jffs_marker_s *freepos;
-} spitz = {
- 0x200, 0x10, 0x100, LEN(ecc_pos16), ecc_pos16, 0x01000000, free_pos16
-}, akita = {
- 0x800, 0x40, 0x100, LEN(ecc_akita), ecc_akita, 0x08000000, free_akita
-}, borzoi = {
- 0x800, 0x40, 0x100, LEN(ecc_akita), ecc_akita, 0x08000000, free_akita
-}, terrier = {
- 0x800, 0x40, 0x100, LEN(ecc_akita), ecc_akita, 0x08000000, free_akita
-};
-
-struct ecc_state_s {
- int count;
- uint8_t cp;
- uint8_t lp[2];
- const struct ecc_style_s *style;
-};
-
-#ifndef flash2raw
-/*
- * Pre-calculated 256-way 1 byte column parity. Table borrowed from Linux.
- */
-static const uint8_t ecc_precalc_table[] = {
- 0x00, 0x55, 0x56, 0x03, 0x59, 0x0c, 0x0f, 0x5a,
- 0x5a, 0x0f, 0x0c, 0x59, 0x03, 0x56, 0x55, 0x00,
- 0x65, 0x30, 0x33, 0x66, 0x3c, 0x69, 0x6a, 0x3f,
- 0x3f, 0x6a, 0x69, 0x3c, 0x66, 0x33, 0x30, 0x65,
- 0x66, 0x33, 0x30, 0x65, 0x3f, 0x6a, 0x69, 0x3c,
- 0x3c, 0x69, 0x6a, 0x3f, 0x65, 0x30, 0x33, 0x66,
- 0x03, 0x56, 0x55, 0x00, 0x5a, 0x0f, 0x0c, 0x59,
- 0x59, 0x0c, 0x0f, 0x5a, 0x00, 0x55, 0x56, 0x03,
- 0x69, 0x3c, 0x3f, 0x6a, 0x30, 0x65, 0x66, 0x33,
- 0x33, 0x66, 0x65, 0x30, 0x6a, 0x3f, 0x3c, 0x69,
- 0x0c, 0x59, 0x5a, 0x0f, 0x55, 0x00, 0x03, 0x56,
- 0x56, 0x03, 0x00, 0x55, 0x0f, 0x5a, 0x59, 0x0c,
- 0x0f, 0x5a, 0x59, 0x0c, 0x56, 0x03, 0x00, 0x55,
- 0x55, 0x00, 0x03, 0x56, 0x0c, 0x59, 0x5a, 0x0f,
- 0x6a, 0x3f, 0x3c, 0x69, 0x33, 0x66, 0x65, 0x30,
- 0x30, 0x65, 0x66, 0x33, 0x69, 0x3c, 0x3f, 0x6a,
- 0x6a, 0x3f, 0x3c, 0x69, 0x33, 0x66, 0x65, 0x30,
- 0x30, 0x65, 0x66, 0x33, 0x69, 0x3c, 0x3f, 0x6a,
- 0x0f, 0x5a, 0x59, 0x0c, 0x56, 0x03, 0x00, 0x55,
- 0x55, 0x00, 0x03, 0x56, 0x0c, 0x59, 0x5a, 0x0f,
- 0x0c, 0x59, 0x5a, 0x0f, 0x55, 0x00, 0x03, 0x56,
- 0x56, 0x03, 0x00, 0x55, 0x0f, 0x5a, 0x59, 0x0c,
- 0x69, 0x3c, 0x3f, 0x6a, 0x30, 0x65, 0x66, 0x33,
- 0x33, 0x66, 0x65, 0x30, 0x6a, 0x3f, 0x3c, 0x69,
- 0x03, 0x56, 0x55, 0x00, 0x5a, 0x0f, 0x0c, 0x59,
- 0x59, 0x0c, 0x0f, 0x5a, 0x00, 0x55, 0x56, 0x03,
- 0x66, 0x33, 0x30, 0x65, 0x3f, 0x6a, 0x69, 0x3c,
- 0x3c, 0x69, 0x6a, 0x3f, 0x65, 0x30, 0x33, 0x66,
- 0x65, 0x30, 0x33, 0x66, 0x3c, 0x69, 0x6a, 0x3f,
- 0x3f, 0x6a, 0x69, 0x3c, 0x66, 0x33, 0x30, 0x65,
- 0x00, 0x55, 0x56, 0x03, 0x59, 0x0c, 0x0f, 0x5a,
- 0x5a, 0x0f, 0x0c, 0x59, 0x03, 0x56, 0x55, 0x00,
-};
-
-/* Update ECC parity count */
-static inline uint8_t ecc_digest(struct ecc_state_s *s, uint8_t sample) {
- uint8_t idx = ecc_precalc_table[sample];
-
- s->cp ^= idx & 0x3f;
- if (idx & 0x40) {
- s->lp[0] ^= ~(s->count & 0xff);
- s->lp[1] ^= s->count & 0xff;
- }
- s->count ++;
-
- return sample;
-}
-
-static void buffer_digest(struct ecc_state_s *ecc,
- const uint8_t *buf, uint8_t *out) {
- int i, lp_a[2];
-
- ecc->lp[0] = 0x00;
- ecc->lp[1] = 0x00;
- ecc->cp = 0x00;
- ecc->count = 0;
- for (i = 0; i < ecc->style->eccbytes; i ++)
- ecc_digest(ecc, buf[i]);
-
-# define BSHR(byte, from, to) ((ecc->lp[byte] >> (from - to)) & (1 << to))
- lp_a[0] =
- BSHR(0, 4, 0) | BSHR(0, 5, 2) |
- BSHR(0, 6, 4) | BSHR(0, 7, 6) |
- BSHR(1, 4, 1) | BSHR(1, 5, 3) |
- BSHR(1, 6, 5) | BSHR(1, 7, 7);
-
-# define BSHL(byte, from, to) ((ecc->lp[byte] << (to - from)) & (1 << to))
- lp_a[1] =
- BSHL(0, 0, 0) | BSHL(0, 1, 2) |
- BSHL(0, 2, 4) | BSHL(0, 3, 6) |
- BSHL(1, 0, 1) | BSHL(1, 1, 3) |
- BSHL(1, 2, 5) | BSHL(1, 3, 7);
-
- out[0] = ~lp_a[1];
- out[1] = ~lp_a[0];
- out[2] = (~ecc->cp << 2) | 0x03;
-}
-
-static void jffs2_format(const struct ecc_state_s *ecc, uint8_t oob[]) {
- const struct jffs_marker_s *byte;
- for (byte = ecc->style->freepos; byte->pos >= 0; byte ++)
- oob[byte->pos] = byte->value;
-}
-
-static void buffer_fill(const struct ecc_state_s *ecc, uint8_t buffer[],
- int *len, int *partition, int count, uint8_t jffs_buffer[]) {
- int ret;
-
- switch (*partition) {
- case 0:
- if (count < PARTITION_START) {
- memcpy(buffer, jffs_buffer + count,
- ecc->style->eccbytes);
- *len = ecc->style->eccbytes;
- break;
- }
- *partition = 1;
- case 1:
- if (count - PARTITION_START < PARTITION_START) {
- memcpy(buffer, jffs_buffer + count - PARTITION_START,
- ecc->style->eccbytes);
- *len = ecc->style->eccbytes;
- break;
- }
-
- while (*len < ecc->style->eccbytes) {
- ret = TFR(read(0, buffer + *len, 0x800 - *len));
- if (ret <= 0)
- break;
- *len += ret;
- }
-
- if (*len == 0)
- *partition = 2;
- else if (*len < ecc->style->eccbytes) {
- fprintf(stderr, "\nWarning: %i stray bytes\n", *len);
- memset(buffer + *len, 0xff,
- ecc->style->eccbytes - *len);
- *len = ecc->style->eccbytes;
- break;
- } else
- break;
- case 2:
- memset(buffer, 0xff, ecc->style->eccbytes);
- *len = ecc->style->eccbytes;
- break;
- }
-}
-
-int main(int argc, char *argv[], char *envp[]) {
- struct ecc_state_s ecc;
- uint8_t buffer[0x1000], ecc_payload[0x40], regs[3], *jffs;
- int ret, len, eccbyte, count, partition;
-
- /* Check if we're called by "raw2flash.spitz" or similar */
- len = strlen(argv[0]);
- if (!strcasecmp(argv[0] + len - 5, "akita"))
- ecc.style = &akita;
- else if (!strcasecmp(argv[0] + len - 6, "borzoi"))
- ecc.style = &borzoi;
- else if (!strcasecmp(argv[0] + len - 7, "terrier"))
- ecc.style = &terrier;
- else
- ecc.style = &spitz;
-
-# ifdef VERBOSE
- fprintf(stderr, "[");
-# endif
-
- /* Skip first 10 bytes */
- TFR(read(0, buffer, 0x10));
-
- len = 0;
- jffs = (uint8_t *) malloc(PARTITION_START);
- while (len < PARTITION_START) {
- ret = TFR(read(0, jffs + len, PARTITION_START - len));
- if (ret <= 0)
- break;
- len += ret;
- }
-
- /* Convert data from stdin */
- partition = len = eccbyte = count = 0;
- memset(ecc_payload, 0xff, ecc.style->oob_size);
- jffs2_format(&ecc, ecc_payload);
- while (count < ecc.style->romsize) {
- buffer_fill(&ecc, buffer, &len, &partition, count, jffs);
- buffer_digest(&ecc, buffer, regs);
-
- ecc_payload[ecc.style->eccpos[eccbyte ++]] = regs[0];
- ecc_payload[ecc.style->eccpos[eccbyte ++]] = regs[1];
- ecc_payload[ecc.style->eccpos[eccbyte ++]] = regs[2];
-
- TFR(write(1, buffer, ecc.style->eccbytes));
- count += ecc.style->eccbytes;
- len -= ecc.style->eccbytes;
- memmove(buffer, buffer + ecc.style->eccbytes, len);
-
- if (eccbyte >= ecc.style->eccsize) {
- TFR(write(1, ecc_payload, ecc.style->oob_size));
- eccbyte = 0;
- memset(ecc_payload, 0xff, ecc.style->oob_size);
- if (partition < 2)
- jffs2_format(&ecc, ecc_payload);
- }
-
-# ifdef VERBOSE
- if (count * PBAR_LEN / ecc.style->romsize >
- (count - ecc.style->eccbytes) *
- PBAR_LEN / ecc.style->romsize)
- fprintf(stderr, "#");
-# endif
- }
-
-# ifdef VERBOSE
- fprintf(stderr, "]\n");
-# endif
- free(jffs);
- return 0;
-}
-#else
-int main(int argc, char *argv[], char *envp[]) {
- struct ecc_state_s ecc;
- uint8_t buffer[0x1000];
- int ret, len, count;
-
- /* Check if we're called by "flash2raw.spitz" or similar */
- len = strlen(argv[0]);
- if (!strcasecmp(argv[0] + len - 5, "akita"))
- ecc.style = &akita;
- else if (!strcasecmp(argv[0] + len - 6, "borzoi"))
- ecc.style = &borzoi;
- else if (!strcasecmp(argv[0] + len - 7, "terrier"))
- ecc.style = &terrier;
- else
- ecc.style = &spitz;
-
-# ifdef VERBOSE
- fprintf(stderr, "[");
-# endif
-
- /* Convert data from stdin */
- count = 0;
- while (count < ecc.style->romsize) {
- len = 0;
- while (len < ecc.style->page_size) {
- ret = TFR(read(0, buffer + len,
- ecc.style->page_size - len));
- if (ret <= 0)
- break;
- len += ret;
- }
- if (len == 0)
- break;
- if (len < ecc.style->page_size) {
- fprintf(stderr, "\nWarning: %i stray bytes\n", len);
- }
-
- TFR(write(1, buffer, ecc.style->page_size));
-
- count += len;
- len = 0;
- while (len < ecc.style->oob_size) {
- ret = TFR(read(0, buffer, ecc.style->oob_size - len));
- if (ret <= 0)
- break;
- len += ret;
- }
-
-# ifdef VERBOSE
- if (count * PBAR_LEN / ecc.style->romsize >
- (count - ecc.style->page_size) *
- PBAR_LEN / ecc.style->romsize)
- fprintf(stderr, "#");
-# endif
- }
-
-# ifdef VERBOSE
- fprintf(stderr, "]\n");
-# endif
- return 0;
-}
-#endif
diff --git a/meta-aarch64/recipes-devtools/qemu/qemu-helper/tunctl.c b/meta-aarch64/recipes-devtools/qemu/qemu-helper/tunctl.c
deleted file mode 100644
index 16e24a2a..00000000
--- a/meta-aarch64/recipes-devtools/qemu/qemu-helper/tunctl.c
+++ /dev/null
@@ -1,156 +0,0 @@
-/* Copyright 2002 Jeff Dike
- * Licensed under the GPL
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <errno.h>
-#include <fcntl.h>
-#include <unistd.h>
-#include <pwd.h>
-#include <grp.h>
-#include <net/if.h>
-#include <sys/ioctl.h>
-#include <linux/if_tun.h>
-
-/* TUNSETGROUP appeared in 2.6.23 */
-#ifndef TUNSETGROUP
-#define TUNSETGROUP _IOW('T', 206, int)
-#endif
-
-static void Usage(char *name)
-{
- fprintf(stderr, "Create: %s [-b] [-u owner] [-g group] [-t device-name] "
- "[-f tun-clone-device]\n", name);
- fprintf(stderr, "Delete: %s -d device-name [-f tun-clone-device]\n\n",
- name);
- fprintf(stderr, "The default tun clone device is /dev/net/tun - some systems"
- " use\n/dev/misc/net/tun instead\n\n");
- fprintf(stderr, "-b will result in brief output (just the device name)\n");
- exit(1);
-}
-
-int main(int argc, char **argv)
-{
- struct ifreq ifr;
- struct passwd *pw;
- struct group *gr;
- uid_t owner = -1;
- gid_t group = -1;
- int tap_fd, opt, delete = 0, brief = 0;
- char *tun = "", *file = "/dev/net/tun", *name = argv[0], *end;
-
- while((opt = getopt(argc, argv, "bd:f:t:u:g:")) > 0){
- switch(opt) {
- case 'b':
- brief = 1;
- break;
- case 'd':
- delete = 1;
- tun = optarg;
- break;
- case 'f':
- file = optarg;
- break;
- case 'u':
- pw = getpwnam(optarg);
- if(pw != NULL){
- owner = pw->pw_uid;
- break;
- }
- owner = strtol(optarg, &end, 0);
- if(*end != '\0'){
- fprintf(stderr, "'%s' is neither a username nor a numeric uid.\n",
- optarg);
- Usage(name);
- }
- break;
- case 'g':
- gr = getgrnam(optarg);
- if(gr != NULL){
- group = gr->gr_gid;
- break;
- }
- group = strtol(optarg, &end, 0);
- if(*end != '\0'){
- fprintf(stderr, "'%s' is neither a groupname nor a numeric group.\n",
- optarg);
- Usage(name);
- }
- break;
-
- case 't':
- tun = optarg;
- break;
- case 'h':
- default:
- Usage(name);
- }
- }
-
- argv += optind;
- argc -= optind;
-
- if(argc > 0)
- Usage(name);
-
- if((tap_fd = open(file, O_RDWR)) < 0){
- fprintf(stderr, "Failed to open '%s' : ", file);
- perror("");
- exit(1);
- }
-
- memset(&ifr, 0, sizeof(ifr));
-
- ifr.ifr_flags = IFF_TAP | IFF_NO_PI;
- strncpy(ifr.ifr_name, tun, sizeof(ifr.ifr_name) - 1);
- if(ioctl(tap_fd, TUNSETIFF, (void *) &ifr) < 0){
- perror("TUNSETIFF");
- exit(1);
- }
-
- if(delete){
- if(ioctl(tap_fd, TUNSETPERSIST, 0) < 0){
- perror("disabling TUNSETPERSIST");
- exit(1);
- }
- printf("Set '%s' nonpersistent\n", ifr.ifr_name);
- }
- else {
- /* emulate behaviour prior to TUNSETGROUP */
- if(owner == -1 && group == -1) {
- owner = geteuid();
- }
-
- if(owner != -1) {
- if(ioctl(tap_fd, TUNSETOWNER, owner) < 0){
- perror("TUNSETOWNER");
- exit(1);
- }
- }
- if(group != -1) {
- if(ioctl(tap_fd, TUNSETGROUP, group) < 0){
- perror("TUNSETGROUP");
- exit(1);
- }
- }
-
- if(ioctl(tap_fd, TUNSETPERSIST, 1) < 0){
- perror("enabling TUNSETPERSIST");
- exit(1);
- }
-
- if(brief)
- printf("%s\n", ifr.ifr_name);
- else {
- printf("Set '%s' persistent and owned by", ifr.ifr_name);
- if(owner != -1)
- printf(" uid %d", owner);
- if(group != -1)
- printf(" gid %d", group);
- printf("\n");
- }
- }
- return(0);
-}
diff --git a/meta-aarch64/recipes-devtools/qemu/qemu-targets.inc b/meta-aarch64/recipes-devtools/qemu/qemu-targets.inc
deleted file mode 100644
index 5a60bfda..00000000
--- a/meta-aarch64/recipes-devtools/qemu/qemu-targets.inc
+++ /dev/null
@@ -1,18 +0,0 @@
-# possible arch values are arm mips mipsel mips64 mips64el ppc ppc64 ppc64abi32
-# ppcemb armeb alpha sparc32plus i386 x86_64 cris m68k microblaze sparc sparc32
-# sparc32plus
-
-def get_qemu_target_list(d):
- import bb
- archs = d.getVar('QEMU_TARGETS', True).split()
- targets = ""
- for arch in ['mips64', 'mips64el', 'ppcemb']:
- if arch in archs:
- targets += arch + "-softmmu,"
- archs.remove(arch)
- for arch in ['armeb', 'alpha', 'ppc64abi32', 'sparc32plus']:
- if arch in archs:
- targets += arch + "-linux-user,"
- archs.remove(arch)
- return targets + ''.join([arch + "-linux-user" + "," + arch + "-softmmu" + "," for arch in archs]).rstrip(',')
-
diff --git a/meta-aarch64/recipes-devtools/qemu/qemu.inc b/meta-aarch64/recipes-devtools/qemu/qemu.inc
deleted file mode 100644
index bd03d50c..00000000
--- a/meta-aarch64/recipes-devtools/qemu/qemu.inc
+++ /dev/null
@@ -1,73 +0,0 @@
-DESCRIPTION = "open source processor emulator"
-HOMEPAGE = "http://qemu.org"
-LICENSE = "GPLv2 & LGPLv2.1"
-DEPENDS = "glib-2.0 zlib alsa-lib virtual/libx11 pixman dtc libsdl"
-DEPENDS_class-native = "zlib-native alsa-lib-native glib-2.0-native pixman-native dtc-native"
-DEPENDS_class-nativesdk = "nativesdk-zlib nativesdk-libsdl nativesdk-glib-2.0 nativesdk-pixman nativesdk-dtc"
-RDEPENDS_${PN}_class-nativesdk = "nativesdk-libsdl"
-
-require qemu-targets.inc
-inherit autotools
-BBCLASSEXTEND = "native nativesdk"
-
-# QEMU_TARGETS is overridable variable
-QEMU_TARGETS ?= "arm i386 mips mipsel mips64 mips64el ppc sh4 x86_64"
-
-SDL ?= ""
-SDL_class-native ?= ""
-SDL_class-nativesdk ?= ""
-
-SRC_URI = "\
- file://powerpc_rom.bin \
- file://no-strip.patch \
- file://fix-configure-checks.patch \
- file://larger_default_ram_size.patch \
- "
-
-SRC_URI_append_class-nativesdk = "\
- file://relocatable_sdk.patch \
- "
-
-SRC_URI_append_class-native = "\
- file://fix-libcap-header-issue-on-some-distro.patch \
- "
-
-EXTRA_OECONF += "--target-list=${@get_qemu_target_list(d)} --disable-werror --disable-vnc-tls --audio-drv-list=oss,alsa --disable-curl --disable-vnc-jpeg --disable-bluez --with-system-pixman"
-
-EXTRA_OECONF_class-nativesdk = "--target-list=${@get_qemu_target_list(d)} --disable-werror --disable-vnc-tls \
- --disable-curl \
- "
-
-do_configure() {
- rm -f ${S}/include/libfdt_env.h
- ${S}/configure --prefix=${prefix} --sysconfdir=${sysconfdir} --libexecdir=${libexecdir} --disable-strip ${EXTRA_OECONF} $KVMOPTS
-}
-
-do_install () {
- export STRIP="true"
- autotools_do_install
- install -d ${D}${datadir}/qemu
- install -m 0755 ${WORKDIR}/powerpc_rom.bin ${D}${datadir}/qemu||true
-}
-
-# The following fragment will create a wrapper for qemu-mips user emulation
-# binary in order to work around a segmentation fault issue. Basically, by
-# default, the reserved virtual address space for 32-on-64 bit is set to 4GB.
-# This will trigger a MMU access fault in the virtual CPU. With this change,
-# the qemu-mips works fine.
-# IMPORTANT: This piece needs to be removed once the root cause is fixed!
-do_install_append() {
- if [ -e "${D}/${bindir}/qemu-mips" ]; then
- create_wrapper ${D}/${bindir}/qemu-mips \
- QEMU_RESERVED_VA=0x0
- fi
-}
-# END of qemu-mips workaround
-
-PACKAGECONFIG ??= ""
-
-# Qemu target will not build in world build for ARM or Mips
-BROKEN_qemuarm = "1"
-BROKEN_qemumips = "1"
-
-INSANE_SKIP_${PN} = "arch"
diff --git a/meta-aarch64/recipes-devtools/qemu/qemu_1.5.0.bb b/meta-aarch64/recipes-devtools/qemu/qemu_1.5.0.bb
deleted file mode 100644
index 2ea4f120..00000000
--- a/meta-aarch64/recipes-devtools/qemu/qemu_1.5.0.bb
+++ /dev/null
@@ -1,10 +0,0 @@
-require qemu.inc
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=441c28d2cf86e15a37fa47e15a72fbac \
- file://COPYING.LIB;endline=24;md5=c04def7ae38850e7d3ef548588159913"
-
-SRC_URI += "file://fdt_header.patch"
-
-SRC_URI_prepend = "http://wiki.qemu.org/download/qemu-${PV}.tar.bz2"
-SRC_URI[md5sum] = "b6f3265b8ed39d77e8f354f35cc26e16"
-SRC_URI[sha256sum] = "b22b30ee9712568dfb4eedf76783f4a76546e1cbc41659b909646bcf0b4867bb"
diff --git a/meta-aarch64/recipes-devtools/qemu/qemu_git.bb b/meta-aarch64/recipes-devtools/qemu/qemu_git.bb
deleted file mode 100644
index f1fc354e..00000000
--- a/meta-aarch64/recipes-devtools/qemu/qemu_git.bb
+++ /dev/null
@@ -1,17 +0,0 @@
-require qemu.inc
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=441c28d2cf86e15a37fa47e15a72fbac \
- file://COPYING.LIB;endline=24;md5=c04def7ae38850e7d3ef548588159913"
-
-PV = "1.5.git${SRCPV}"
-PR = "r0"
-
-QEMU_TARGETS_aarch64 = ""
-EXTRA_OECONF_aarch64 += "--enable-tcg-interpreter --enable-kvm --enable-fdt --target-list=aarch64-softmmu"
-EXTRA_OECONF_class-native = "--target-list=arm-linux-user --extra-cflags='${CFLAGS}'"
-
-SRC_URI = "git://git.linaro.org/git-ro/people/pmaydell/qemu-arm.git;branch=mach-virt;protocol=http"
-S = "${WORKDIR}/git"
-
-SRCREV = "${AUTOREV}"
-
diff --git a/meta-aarch64/recipes-devtools/qemu/qemuwrapper-cross_1.0.bb b/meta-aarch64/recipes-devtools/qemu/qemuwrapper-cross_1.0.bb
deleted file mode 100644
index 18f18928..00000000
--- a/meta-aarch64/recipes-devtools/qemu/qemuwrapper-cross_1.0.bb
+++ /dev/null
@@ -1,48 +0,0 @@
-DESCRIPTION = "Qemu wrapper script"
-LICENSE = "MIT"
-PR = "r0"
-LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
-
-inherit qemu
-
-do_install () {
- install -d ${D}${bindir_crossscripts}/
-
- echo "#!/bin/sh" > ${D}${bindir_crossscripts}/qemuwrapper
- qemu_binary=${@qemu_target_binary(d)}
- echo "$qemu_binary \"\$@\"" >> ${D}${bindir_crossscripts}/qemuwrapper
- fallback_qemu_bin=
- case $qemu_binary in
- "qemu-i386")
- fallback_qemu_bin=qemu-x86_64
- ;;
- "qemu-x86_64")
- fallback_qemu_bin=qemu-i386
- ;;
- *)
- ;;
- esac
-
- if [ -n "$fallback_qemu_bin" ]; then
-
- cat >> ${D}${bindir_crossscripts}/qemuwrapper << EOF
-rc=\$?
-if [ \$rc = 255 ]; then
- $fallback_qemu_bin "\$@"
- rc=\$?
-fi
-exit \$rc
-EOF
-
- fi
-
- chmod +x ${D}${bindir_crossscripts}/qemuwrapper
-}
-
-SYSROOT_PREPROCESS_FUNCS += "qemuwrapper_sysroot_preprocess"
-
-qemuwrapper_sysroot_preprocess () {
- sysroot_stage_dir ${D}${bindir_crossscripts} ${SYSROOT_DESTDIR}${bindir_crossscripts}
-}
-
-INHIBIT_DEFAULT_DEPS = "1"
diff --git a/meta-aarch64/recipes-devtools/qemu/files/3f08ffb4a4741d147634761dc053ed386243a0de.patch b/meta-linaro/recipes-devtools/qemu/files/3f08ffb4a4741d147634761dc053ed386243a0de.patch
index 4390b943..4390b943 100644
--- a/meta-aarch64/recipes-devtools/qemu/files/3f08ffb4a4741d147634761dc053ed386243a0de.patch
+++ b/meta-linaro/recipes-devtools/qemu/files/3f08ffb4a4741d147634761dc053ed386243a0de.patch
diff --git a/meta-linaro/recipes-devtools/qemu/files/aarch64-softmmu.patch b/meta-linaro/recipes-devtools/qemu/files/aarch64-softmmu.patch
new file mode 100644
index 00000000..d684080d
--- /dev/null
+++ b/meta-linaro/recipes-devtools/qemu/files/aarch64-softmmu.patch
@@ -0,0 +1,103 @@
+
+m: Peter Maydell <peter.maydell@linaro.org>
+Date: Fri, 9 Aug 2013 13:19:04 +0000 (+0100)
+Subject: default-configs: Add config for aarch64-softmmu
+X-Git-Url: https://git.linaro.org/gitweb?p=people%2Fpmaydell%2Fqemu-arm.git;a=commitdiff_plain;h=5b60e30712cbdf478b77ada9433c7f0d1b9d07bd
+
+default-configs: Add config for aarch64-softmmu
+
+Add a config for aarch64-softmmu; this enables building of this target.
+The resulting executable doesn't know about any 64 bit CPUs, but all
+the 32 bit CPUs and board models work.
+
+Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
+---
+
+diff --git a/default-configs/aarch64-softmmu.mak b/default-configs/aarch64-softmmu.mak
+new file mode 100644
+index 0000000..175362f
+--- /dev/null
++++ b/default-configs/aarch64-softmmu.mak
+@@ -0,0 +1,82 @@
++# Default configuration for aarch64-softmmu
++
++include pci.mak
++include usb.mak
++CONFIG_GDBSTUB_XML=y
++CONFIG_VGA=y
++CONFIG_ISA_MMIO=y
++CONFIG_NAND=y
++CONFIG_ECC=y
++CONFIG_SERIAL=y
++CONFIG_PTIMER=y
++CONFIG_SD=y
++CONFIG_MAX7310=y
++CONFIG_WM8750=y
++CONFIG_TWL92230=y
++CONFIG_TSC2005=y
++CONFIG_LM832X=y
++CONFIG_TMP105=y
++CONFIG_STELLARIS=y
++CONFIG_STELLARIS_INPUT=y
++CONFIG_STELLARIS_ENET=y
++CONFIG_SSD0303=y
++CONFIG_SSD0323=y
++CONFIG_ADS7846=y
++CONFIG_MAX111X=y
++CONFIG_SSI=y
++CONFIG_SSI_SD=y
++CONFIG_SSI_M25P80=y
++CONFIG_LAN9118=y
++CONFIG_SMC91C111=y
++CONFIG_DS1338=y
++CONFIG_PFLASH_CFI01=y
++CONFIG_PFLASH_CFI02=y
++CONFIG_MICRODRIVE=y
++CONFIG_USB_MUSB=y
++
++CONFIG_ARM11MPCORE=y
++CONFIG_A9MPCORE=y
++CONFIG_A15MPCORE=y
++
++CONFIG_ARM_GIC=y
++CONFIG_ARM_GIC_KVM=$(CONFIG_KVM)
++CONFIG_ARM_TIMER=y
++CONFIG_ARM_MPTIMER=y
++CONFIG_PL011=y
++CONFIG_PL022=y
++CONFIG_PL031=y
++CONFIG_PL041=y
++CONFIG_PL050=y
++CONFIG_PL061=y
++CONFIG_PL080=y
++CONFIG_PL110=y
++CONFIG_PL181=y
++CONFIG_PL190=y
++CONFIG_PL310=y
++CONFIG_PL330=y
++CONFIG_CADENCE=y
++CONFIG_XGMAC=y
++CONFIG_EXYNOS4=y
++CONFIG_PXA2XX=y
++CONFIG_BITBANG_I2C=y
++CONFIG_FRAMEBUFFER=y
++CONFIG_XILINX_SPIPS=y
++
++CONFIG_A9SCU=y
++CONFIG_MARVELL_88W8618=y
++CONFIG_OMAP=y
++CONFIG_TSC210X=y
++CONFIG_BLIZZARD=y
++CONFIG_ONENAND=y
++CONFIG_TUSB6010=y
++CONFIG_IMX=y
++CONFIG_MAINSTONE=y
++CONFIG_NSERIES=y
++CONFIG_REALVIEW=y
++CONFIG_ZAURUS=y
++CONFIG_ZYNQ=y
++
++CONFIG_VERSATILE_PCI=y
++CONFIG_VERSATILE_I2C=y
++
++CONFIG_SDHCI=y
diff --git a/meta-aarch64/recipes-devtools/qemu/files/enable-i386-linux-user.patch b/meta-linaro/recipes-devtools/qemu/files/enable-i386-linux-user.patch
index bb0d6a38..bb0d6a38 100644
--- a/meta-aarch64/recipes-devtools/qemu/files/enable-i386-linux-user.patch
+++ b/meta-linaro/recipes-devtools/qemu/files/enable-i386-linux-user.patch
diff --git a/meta-aarch64/recipes-devtools/qemu/files/fdt_header.patch b/meta-linaro/recipes-devtools/qemu/files/fdt_header.patch
index dccfe531..dccfe531 100644
--- a/meta-aarch64/recipes-devtools/qemu/files/fdt_header.patch
+++ b/meta-linaro/recipes-devtools/qemu/files/fdt_header.patch
diff --git a/meta-aarch64/recipes-devtools/qemu/files/fix-libcap-header-issue-on-some-distro.patch b/meta-linaro/recipes-devtools/qemu/files/fix-libcap-header-issue-on-some-distro.patch
index 13a6ea23..13a6ea23 100644
--- a/meta-aarch64/recipes-devtools/qemu/files/fix-libcap-header-issue-on-some-distro.patch
+++ b/meta-linaro/recipes-devtools/qemu/files/fix-libcap-header-issue-on-some-distro.patch
diff --git a/meta-aarch64/recipes-devtools/qemu/files/init-info.patch b/meta-linaro/recipes-devtools/qemu/files/init-info.patch
index 2250444a..2250444a 100644
--- a/meta-aarch64/recipes-devtools/qemu/files/init-info.patch
+++ b/meta-linaro/recipes-devtools/qemu/files/init-info.patch
diff --git a/meta-aarch64/recipes-devtools/qemu/files/larger_default_ram_size.patch b/meta-linaro/recipes-devtools/qemu/files/larger_default_ram_size.patch
index 711c3607..711c3607 100644
--- a/meta-aarch64/recipes-devtools/qemu/files/larger_default_ram_size.patch
+++ b/meta-linaro/recipes-devtools/qemu/files/larger_default_ram_size.patch
diff --git a/meta-aarch64/recipes-devtools/qemu/files/no-strip.patch b/meta-linaro/recipes-devtools/qemu/files/no-strip.patch
index d6a4377c..d6a4377c 100644
--- a/meta-aarch64/recipes-devtools/qemu/files/no-strip.patch
+++ b/meta-linaro/recipes-devtools/qemu/files/no-strip.patch
diff --git a/meta-aarch64/recipes-devtools/qemu/files/powerpc_rom.bin b/meta-linaro/recipes-devtools/qemu/files/powerpc_rom.bin
index c4044296..c4044296 100644
--- a/meta-aarch64/recipes-devtools/qemu/files/powerpc_rom.bin
+++ b/meta-linaro/recipes-devtools/qemu/files/powerpc_rom.bin
Binary files differ
diff --git a/meta-aarch64/recipes-devtools/qemu/files/relocatable_sdk.patch b/meta-linaro/recipes-devtools/qemu/files/relocatable_sdk.patch
index 774a49c7..774a49c7 100644
--- a/meta-aarch64/recipes-devtools/qemu/files/relocatable_sdk.patch
+++ b/meta-linaro/recipes-devtools/qemu/files/relocatable_sdk.patch
diff --git a/meta-linaro/recipes-devtools/qemu/files/target-i386-Fix-aflag-logic-for-CODE64-and-the-0x67-.patch b/meta-linaro/recipes-devtools/qemu/files/target-i386-Fix-aflag-logic-for-CODE64-and-the-0x67-.patch
new file mode 100644
index 00000000..852efd1c
--- /dev/null
+++ b/meta-linaro/recipes-devtools/qemu/files/target-i386-Fix-aflag-logic-for-CODE64-and-the-0x67-.patch
@@ -0,0 +1,79 @@
+Upstream-Status: Backported
+
+From dec3fc9657e0682637de4d5a29d947284d01985c Mon Sep 17 00:00:00 2001
+From: Richard Henderson <rth@twiddle.net>
+Date: Wed, 29 May 2013 12:30:51 -0700
+Subject: [PATCH] target-i386: Fix aflag logic for CODE64 and the 0x67 prefix
+
+The code reorganization in commit 4a6fd938 broke handling of PREFIX_ADR.
+While fixing this, tidy and comment the code so that it's more obvious
+what's going on in setting both aflag and dflag.
+
+The TARGET_X86_64 ifdef can be eliminated because CODE64 expands to the
+constant zero when TARGET_X86_64 is undefined.
+
+Cc: Paolo Bonzini <pbonzini@redhat.com>
+Reported-by: Laszlo Ersek <lersek@redhat.com>
+Signed-off-by: Richard Henderson <rth@twiddle.net>
+Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
+Message-id: 1369855851-21400-1-git-send-email-rth@twiddle.net
+Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
+---
+ target-i386/translate.c | 30 +++++++++++++++---------------
+ 1 file changed, 15 insertions(+), 15 deletions(-)
+
+diff --git a/target-i386/translate.c b/target-i386/translate.c
+index 0aeccdb..14b0298 100644
+--- a/target-i386/translate.c
++++ b/target-i386/translate.c
+@@ -4677,8 +4677,6 @@ static target_ulong disas_insn(CPUX86State *env, DisasContext *s,
+ }
+ s->pc = pc_start;
+ prefixes = 0;
+- aflag = s->code32;
+- dflag = s->code32;
+ s->override = -1;
+ rex_w = -1;
+ rex_r = 0;
+@@ -4801,23 +4799,25 @@ static target_ulong disas_insn(CPUX86State *env, DisasContext *s,
+ }
+
+ /* Post-process prefixes. */
+- if (prefixes & PREFIX_DATA) {
+- dflag ^= 1;
+- }
+- if (prefixes & PREFIX_ADR) {
+- aflag ^= 1;
+- }
+-#ifdef TARGET_X86_64
+ if (CODE64(s)) {
+- if (rex_w == 1) {
+- /* 0x66 is ignored if rex.w is set */
+- dflag = 2;
++ /* In 64-bit mode, the default data size is 32-bit. Select 64-bit
++ data with rex_w, and 16-bit data with 0x66; rex_w takes precedence
++ over 0x66 if both are present. */
++ dflag = (rex_w > 0 ? 2 : prefixes & PREFIX_DATA ? 0 : 1);
++ /* In 64-bit mode, 0x67 selects 32-bit addressing. */
++ aflag = (prefixes & PREFIX_ADR ? 1 : 2);
++ } else {
++ /* In 16/32-bit mode, 0x66 selects the opposite data size. */
++ dflag = s->code32;
++ if (prefixes & PREFIX_DATA) {
++ dflag ^= 1;
+ }
+- if (!(prefixes & PREFIX_ADR)) {
+- aflag = 2;
++ /* In 16/32-bit mode, 0x67 selects the opposite addressing. */
++ aflag = s->code32;
++ if (prefixes & PREFIX_ADR) {
++ aflag ^= 1;
+ }
+ }
+-#endif
+
+ s->prefix = prefixes;
+ s->aflag = aflag;
+--
+1.7.9.5
+
diff --git a/meta-linaro/recipes-devtools/qemu/files/target-ppc_fix_bit_extraction.patch b/meta-linaro/recipes-devtools/qemu/files/target-ppc_fix_bit_extraction.patch
new file mode 100644
index 00000000..631d23b1
--- /dev/null
+++ b/meta-linaro/recipes-devtools/qemu/files/target-ppc_fix_bit_extraction.patch
@@ -0,0 +1,70 @@
+Delivered-To: raj.khem@gmail.com
+Received: by 10.50.216.195 with SMTP id os3csp11191igc;
+ Thu, 15 Aug 2013 04:32:45 -0700 (PDT)
+X-Received: by 10.180.98.3 with SMTP id ee3mr1508103wib.48.1376566364872;
+ Thu, 15 Aug 2013 04:32:44 -0700 (PDT)
+Return-Path: <aurelien@aurel32.net>
+Received: from hall.aurel32.net (hall.aurel32.net. [2001:470:1f0b:4a8::1])
+ by mx.google.com with ESMTPS id vv5si15578100wjc.49.2013.08.15.04.32.44
+ for <raj.khem@gmail.com>
+ (version=TLSv1.2 cipher=RC4-SHA bits=128/128);
+ Thu, 15 Aug 2013 04:32:44 -0700 (PDT)
+Received-SPF: pass (google.com: best guess record for domain of aurelien@aurel32.net designates 2001:470:1f0b:4a8::1 as permitted sender) client-ip=2001:470:1f0b:4a8::1;
+Authentication-Results: mx.google.com;
+ spf=pass (google.com: best guess record for domain of aurelien@aurel32.net designates 2001:470:1f0b:4a8::1 as permitted sender) smtp.mail=aurelien@aurel32.net
+Received: from [2001:470:d4ed:1:2db:dfff:fe14:52d] (helo=ohm.aurel32.net)
+ by hall.aurel32.net with esmtpsa (TLS1.2:DHE_RSA_AES_128_CBC_SHA1:128)
+ (Exim 4.80)
+ (envelope-from <aurelien@aurel32.net>)
+ id 1V9vnG-0006cO-NN; Thu, 15 Aug 2013 13:32:42 +0200
+Received: from aurel32 by ohm.aurel32.net with local (Exim 4.80)
+ (envelope-from <aurelien@aurel32.net>)
+ id 1V9vnF-0002Lw-7L; Thu, 15 Aug 2013 13:32:41 +0200
+From: Aurelien Jarno <aurelien@aurel32.net>
+To: qemu-devel@nongnu.org
+Cc: Khem Raj <raj.khem@gmail.com>,
+ Alexander Graf <agraf@suse.de> ,
+ qemu-stable@nongnu.org,
+ qemu-ppc@nongnu.org,
+ Aurelien Jarno <aurelien@aurel32.net>
+Subject: [PATCH] target-ppc: fix bit extraction for FPBF and FPL
+Date: Thu, 15 Aug 2013 13:32:38 +0200
+Message-Id: <1376566358-8989-1-git-send-email-aurelien@aurel32.net>
+X-Mailer: git-send-email 1.7.10.4
+
+Bit extraction for the FP BF and L field of the MTFSFI and MTFSF
+instructions is wrong and doesn't match the reference manual (which
+explain the bit number in big endian format). It has been broken in
+commit 7d08d85645def18eac2a9d672c1868a35e0bcf79.
+
+This patch fixes this, which in turn fixes the problem reported by
+Khem Raj about the floor() function of libm.
+
+Reported-by: Khem Raj <raj.khem@gmail.com>
+Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
+
+Upstream-Status: Backport
+
+---
+ target-ppc/translate.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+I don't know if we still have time to get this into 1.6, hence the Cc:
+to stable. In anycase it also needs to be fixed in 1.5.
+
+Index: qemu-1.5.0/target-ppc/translate.c
+===================================================================
+--- qemu-1.5.0.orig/target-ppc/translate.c 2013-05-20 08:34:40.000000000 -0700
++++ qemu-1.5.0/target-ppc/translate.c 2013-08-15 06:49:25.028144352 -0700
+@@ -428,9 +428,9 @@
+ EXTRACT_HELPER(SR, 16, 4);
+
+ /* mtfsf/mtfsfi */
+-EXTRACT_HELPER(FPBF, 19, 3);
++EXTRACT_HELPER(FPBF, 23, 3);
+ EXTRACT_HELPER(FPIMM, 12, 4);
+-EXTRACT_HELPER(FPL, 21, 1);
++EXTRACT_HELPER(FPL, 25, 1);
+ EXTRACT_HELPER(FPFLM, 17, 8);
+ EXTRACT_HELPER(FPW, 16, 1);
+
diff --git a/meta-linaro/recipes-devtools/qemu/qemu_git.bb b/meta-linaro/recipes-devtools/qemu/qemu_git.bb
new file mode 100644
index 00000000..726207b0
--- /dev/null
+++ b/meta-linaro/recipes-devtools/qemu/qemu_git.bb
@@ -0,0 +1,20 @@
+require recipes-devtools/qemu/qemu.inc
+
+SRCREV = "${AUTOREV}"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=441c28d2cf86e15a37fa47e15a72fbac \
+ file://COPYING.LIB;endline=24;md5=c04def7ae38850e7d3ef548588159913"
+
+PV = "1.6.0+git${SRCPV}"
+PR = "r2"
+
+#COMPATIBLE_HOST_append="aarch64 armeb"
+SRC_URI_prepend = "git://git.qemu.org/qemu.git"
+SRC_URI_aarch64_append = "file://aarch64-softmmu.patch"
+S = "${WORKDIR}/git"
+EXTRA_OECONF+="--enable-kvm --enable-fdt"
+EXTRA_OECONF_aarch64+="--target-list=aarch64-softmmu --enable-tcg-interpreter"
+
+DEFAULT_PREFERENCE_arm = "1"
+DEFAULT_PREFERENCE_aarch64 = "1"
+DEFAULT_PREFERENCE_armeb = "1"