aboutsummaryrefslogtreecommitdiffstats
path: root/meta/recipes-devtools/qemu/files/target-i386-Fix-aflag-logic-for-CODE64-and-the-0x67-.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta/recipes-devtools/qemu/files/target-i386-Fix-aflag-logic-for-CODE64-and-the-0x67-.patch')
-rw-r--r--meta/recipes-devtools/qemu/files/target-i386-Fix-aflag-logic-for-CODE64-and-the-0x67-.patch79
1 files changed, 0 insertions, 79 deletions
diff --git a/meta/recipes-devtools/qemu/files/target-i386-Fix-aflag-logic-for-CODE64-and-the-0x67-.patch b/meta/recipes-devtools/qemu/files/target-i386-Fix-aflag-logic-for-CODE64-and-the-0x67-.patch
deleted file mode 100644
index 852efd1cc9..0000000000
--- a/meta/recipes-devtools/qemu/files/target-i386-Fix-aflag-logic-for-CODE64-and-the-0x67-.patch
+++ /dev/null
@@ -1,79 +0,0 @@
-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
-