From patchwork Tue Oct 25 14:50:02 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 686486 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3t3GRB3SpBz9t2n for ; Wed, 26 Oct 2016 01:55:18 +1100 (AEDT) Received: from localhost ([::1]:55216 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bz38F-0003uw-1y for incoming@patchwork.ozlabs.org; Tue, 25 Oct 2016 10:55:15 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:60244) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bz33n-0008Qs-Ld for qemu-devel@nongnu.org; Tue, 25 Oct 2016 10:50:44 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bz33i-0005uj-Ki for qemu-devel@nongnu.org; Tue, 25 Oct 2016 10:50:39 -0400 Received: from mout.kundenserver.de ([212.227.126.187]:51013) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1bz33i-0005uF-AA for qemu-devel@nongnu.org; Tue, 25 Oct 2016 10:50:34 -0400 Received: from Quad.localdomain ([78.238.229.36]) by mrelayeu.kundenserver.de (mreue003) with ESMTPSA (Nemesis) id 0MUjgO-1cQRIG1Vvw-00Y7nZ; Tue, 25 Oct 2016 16:50:28 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Date: Tue, 25 Oct 2016 16:50:02 +0200 Message-Id: <1477407021-30755-5-git-send-email-laurent@vivier.eu> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1477407021-30755-1-git-send-email-laurent@vivier.eu> References: <1477407021-30755-1-git-send-email-laurent@vivier.eu> MIME-Version: 1.0 X-Provags-ID: V03:K0:4CSlg95Uwm+fEBrPEY5hTWN+GlnVvw32h5XqQk48Db/BWR+s7jl DnwlJv+j+jDuXaOQ3a+6ZNvxcud8aRN+/DfqLgxTnO6HyKddNuZX/2K3R1x1jNNXzPSaU1x 1k1Z/fUyvvj8bqDz6H3vdSUHShYbmVMaKZRfKZ0npGowvmae+2aq1ak1kkMtwaiAUquC1ZX KABUxGzhJFVv+3JhgbAvQ== X-UI-Out-Filterresults: notjunk:1; V01:K0:srehqVYeLEw=:D3hPKFTlTNag+sj53B+Dh6 S3CD485lwiUVItw4Uw1eQ3xkOhNXN0H4bruGgp4Xz9ku+UXZczkcOfAaRfzHrFtoqHeh2g/3T /NJu+nqHDhPTQGm3l5cRUQBB5WcPlJr9OngaxvbS5jkJFs08qze+GgkPi718THZFOHimUAC34 UFSaiFg040JhTgcKJ06zLBsZnygGQDC2zy4eVxfKoNf9yOrRR6eO80EByCty9JGC/xhEQT9jd kN4ghEt3XD2kiWEISKy5ZFiYv44cw/AJm4p6XL4BuYnn8oVBvQOTablSQnzLZz/d68eoa7rEa p42rLRKWGCt1+fU7TLmSRFkvCIiEvG61WDsex+rYTBQk5K7Xufa/UszqE94HgQG4Dh4OPKLwO 7rsKmlHISXKsmpxH/hQWUP7/ix0wZvzjHiAbXO1oT6A0vfS5RIS3OEyccdR3tCPV6Q8zAG8Zz 7X03Bj5a1oeIAM7nDM6EQyBCXC3cZVK5tO14Fpf2RbiQfV7U8pL9mLgWy9gUxZ4c4gtDaGg1C ftBlRFHH6001YrIPN31/nsdePpzUN5AEvpC+sr4ThO2qK0y1pAJ1IW30BZpTNO5MPVSeFl5wY 6mNP5UmsM5HvYoo98iNOLxCs2WbqfbXFxT1DOmwEHwBoeisIzOzG8jfjCYXWmsYd+97Puso73 WPZLlCCsX62zRBqiJyMisx5du6xoYZmJ8k5dIrWPPQw8pAxMVFSMtz7P5KGFb4ndvvJhNIWax J7phYcqGY40a/cy8 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 212.227.126.187 Subject: [Qemu-devel] [PATCH 04/23] target-m68k: manage scaled index X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Laurent Vivier , gerg@uclinux.org, schwab@linux-m68k.org, agraf@suse.de, Richard Henderson Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Scaled index is not supported by 68000, 68008, and 68010. EA = (bd + PC) + Xn.SIZE*SCALE + od Ignore it: M68000 FAMILY PROGRAMMER’S REFERENCE MANUAL 2.4 BRIEF EXTENSION WORD FORMAT COMPATIBILITY "If the MC68000 were to execute an instruction that encoded a scaling factor, the scaling factor would be ignored and would not access the desired memory address. The earlier microprocessors do not recognize the brief extension word formats implemented by newer processors. Although they can detect illegal instructions, they do not decode invalid encodings of the brief extension word formats as exceptions." Signed-off-by: Laurent Vivier Reviewed-by: Richard Henderson --- target-m68k/translate.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/target-m68k/translate.c b/target-m68k/translate.c index 3773fb4..d73350c 100644 --- a/target-m68k/translate.c +++ b/target-m68k/translate.c @@ -315,6 +315,11 @@ static TCGv gen_lea_indexed(CPUM68KState *env, DisasContext *s, TCGv base) if ((ext & 0x800) == 0 && !m68k_feature(s->env, M68K_FEATURE_WORD_INDEX)) return NULL_QREG; + if (m68k_feature(s->env, M68K_FEATURE_M68000) && + !m68k_feature(s->env, M68K_FEATURE_SCALED_INDEX)) { + ext &= ~(3 << 9); + } + if (ext & 0x100) { /* full extension word format */ if (!m68k_feature(s->env, M68K_FEATURE_EXT_FULL))