From patchwork Thu Jan 4 01:29:07 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 855329 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) 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 3zBr6L2ZT1z9s71 for ; Thu, 4 Jan 2018 12:38:18 +1100 (AEDT) Received: from localhost ([::1]:44737 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eWuU4-0006hv-5I for incoming@patchwork.ozlabs.org; Wed, 03 Jan 2018 20:38:16 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:58383) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eWuLU-0000rb-Fn for qemu-devel@nongnu.org; Wed, 03 Jan 2018 20:29:25 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eWuLT-0007B0-Eu for qemu-devel@nongnu.org; Wed, 03 Jan 2018 20:29:24 -0500 Received: from mout.kundenserver.de ([212.227.17.24]:50994) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1eWuLT-00079v-4m for qemu-devel@nongnu.org; Wed, 03 Jan 2018 20:29:23 -0500 Received: from localhost.localdomain ([78.238.229.36]) by mrelayeu.kundenserver.de (mreue105 [212.227.15.183]) with ESMTPSA (Nemesis) id 0MWzzA-1eRX40406W-00W0nG; Thu, 04 Jan 2018 02:29:21 +0100 From: Laurent Vivier To: qemu-devel@nongnu.org Date: Thu, 4 Jan 2018 02:29:07 +0100 Message-Id: <20180104012913.30763-12-laurent@vivier.eu> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180104012913.30763-1-laurent@vivier.eu> References: <20180104012913.30763-1-laurent@vivier.eu> X-Provags-ID: V03:K0:nspQf/my5Mp3HAAXuSiRpSUQCmF0Ma6q+QxLlH6B3gApF351hzI rHJWx4PX/l3yCtUxLhrBkdlSpXwi09wcl4fjxWMmWCOk6p9oJ8KZrbmJOMalLJiyQ76xsLh MM0keQkh7P1VTWobt429QjUAAOzxcXcZla/z9B143+QJpBfah9YTF7pboSXRt2773stOJtn M3v6QlmLhwJHtun5+gM+Q== X-UI-Out-Filterresults: notjunk:1; V01:K0:w+eUwvXFPRc=:38STJoaSNaYM0iqDQd3JC2 tMHIF/C6l/1GKqwIcV+r05RKNPX5V1Z9aTwWyNILAs4+CER8o3CQ8WFEkDPNuBqcVrnJtrM2A Exb1NFlKbyYVahTN+TmYMqByWiuVXRNnl23I5XSJ9RX9eTfVPnWbzpMLhuZyku5c67D/r/Fak V0aE3YpLSOgEqpSIlO7du6tIMheGpi3RSJ32+CS9ADImsVgqIefEWybMfN7u9+gRjmkcZfcqe t1QRKwHN4lN6VaXNwB3B8JgAdNQtmsEY4Jp71Eb7ElAaPkPVzZsOqya7uOEiK3fxqYqqAyIzk iZNxl3dFpgOejnX2FtPyzbDQnsRp+zHDLAe0BHHPs9C165/0rretgomwwBYoWpR0yf6/dE5Ni v/i88i9QOrM0GEp0IYNn2WfDKJdqzkbImwKRW2wg2/mV3ZaT3DAGxhSX9Q+GEtCfYoos2/2Xe 5O4OF8SyE84GeLgmFmJxHvMc6854B97eaaocD10EOZjTBp92kpaOCHZqFG7YjtBK5ZaY3eY3m k5399LBvi9pT3+M1B3q5/Fekn26FQOdzoMDUxnX3rj4TRujn2j3idZmgmdpkkqvE1xVA2pEZF 2KGFicrIjPXMyYmg2iiKaqZ/FW9EMuh10BdJiD8BYoohd+k7YMurEdLNo8bwsyO7XCKJ3OYC5 25g/L+I3InxSI2aLSKCGDbardR0h7BDqkb37yhBj421pak93AOf3+Vp7JxC2tE3SoNuQtSU+s T/mb1fG/nzmiC0AtfGLys6x1zH6LvTgdp6sbSg== X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 212.227.17.24 Subject: [Qemu-devel] [PATCH v7 11/17] target/m68k: add reset 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: Thomas Huth , Richard Henderson , Laurent Vivier Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" The instruction traps if the CPU is not in Supervisor state but the helper is empty because there is no easy way to reset all the peripherals without resetting the CPU itself. Signed-off-by: Laurent Vivier Reviewed-by: Richard Henderson --- target/m68k/helper.c | 7 +++++++ target/m68k/helper.h | 4 ++++ target/m68k/translate.c | 13 +++++++++++++ 3 files changed, 24 insertions(+) diff --git a/target/m68k/helper.c b/target/m68k/helper.c index af57ffcea9..52b054e1a3 100644 --- a/target/m68k/helper.c +++ b/target/m68k/helper.c @@ -711,3 +711,10 @@ void HELPER(set_mac_extu)(CPUM68KState *env, uint32_t val, uint32_t acc) res |= (uint64_t)(val & 0xffff0000) << 16; env->macc[acc + 1] = res; } + +#if defined(CONFIG_SOFTMMU) +void HELPER(reset)(CPUM68KState *env) +{ + /* FIXME: reset all except CPU */ +} +#endif diff --git a/target/m68k/helper.h b/target/m68k/helper.h index 78483da003..d27ea37d60 100644 --- a/target/m68k/helper.h +++ b/target/m68k/helper.h @@ -97,3 +97,7 @@ DEF_HELPER_FLAGS_4(bfffo_mem, TCG_CALL_NO_WG, i64, env, i32, s32, i32) DEF_HELPER_3(chk, void, env, s32, s32) DEF_HELPER_4(chk2, void, env, s32, s32, s32) + +#if defined(CONFIG_SOFTMMU) +DEF_HELPER_FLAGS_1(reset, TCG_CALL_NO_RWG, void, env) +#endif diff --git a/target/m68k/translate.c b/target/m68k/translate.c index 98efe6b976..e8f7d07f3f 100644 --- a/target/m68k/translate.c +++ b/target/m68k/translate.c @@ -2762,6 +2762,18 @@ DISAS_INSN(unlk) tcg_temp_free(src); } +#if defined(CONFIG_SOFTMMU) +DISAS_INSN(reset) +{ + if (IS_USER(s)) { + gen_exception(s, s->insn_pc, EXCP_PRIVILEGE); + return; + } + + gen_helper_reset(cpu_env); +} +#endif + DISAS_INSN(nop) { } @@ -5572,6 +5584,7 @@ void register_m68k_insns (CPUM68KState *env) #if defined(CONFIG_SOFTMMU) INSN(move_to_usp, 4e60, fff8, USP); INSN(move_from_usp, 4e68, fff8, USP); + INSN(reset, 4e70, ffff, M68000); BASE(stop, 4e72, ffff); BASE(rte, 4e73, ffff); INSN(movec, 4e7b, ffff, CF_ISA_A);