From patchwork Thu Jan 4 16:42:45 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 855706 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 3zCDCD0QVMz9sQm for ; Fri, 5 Jan 2018 03:43:51 +1100 (AEDT) Received: from localhost ([::1]:49715 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eX8cP-0007fS-Qh for incoming@patchwork.ozlabs.org; Thu, 04 Jan 2018 11:43:49 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:55403) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eX8bd-0007bL-Rp for qemu-devel@nongnu.org; Thu, 04 Jan 2018 11:43:03 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eX8bb-0003c1-BE for qemu-devel@nongnu.org; Thu, 04 Jan 2018 11:43:01 -0500 Received: from mout.kundenserver.de ([212.227.126.134]:49267) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1eX8ba-0003Zf-Rv for qemu-devel@nongnu.org; Thu, 04 Jan 2018 11:42:59 -0500 Received: from localhost.localdomain ([78.238.229.36]) by mrelayeu.kundenserver.de (mreue003 [212.227.15.167]) with ESMTPSA (Nemesis) id 0Mgrgq-1eJqwT1iqG-00M5iR; Thu, 04 Jan 2018 17:42:57 +0100 From: Laurent Vivier To: qemu-devel@nongnu.org Date: Thu, 4 Jan 2018 17:42:45 +0100 Message-Id: <20180104164251.26494-12-laurent@vivier.eu> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180104164251.26494-1-laurent@vivier.eu> References: <20180104164251.26494-1-laurent@vivier.eu> X-Provags-ID: V03:K0:193lsnYf3tAopT/kzy6OCI24g5ig80hpxww8MBZ/8ZkeB8IDuTT /PV0LkPoMvhCXpEJTUvBnxcLe/Rd3OBl/xuQqqlp8J0bHxX83Sn4fsCri6XkuIhk/Rz5SlP KAGSt2enESZqC0G6M8J410FH/ebyXetA0bIpjeT3/mqJaNiyi95qOgbtdT7eEGh83eH1vto AGV3DPIjvnMGlsjQVxv9g== X-UI-Out-Filterresults: notjunk:1; V01:K0:0WUsljRGwcA=:vq66WKaGpSCPsUsuuO1Y/6 1uAA8BOccdQ6SRMY+LH88okjax7nyx+I/kCrvQhTs+ySx3r8f186suIzzcws9XOPRlrifHgJ4 EVuOD5+Cby/Z9vbYaJ2x60VX2LTJaofnCfj7KXLwWTtnKhWG95BJQM9ebl+5xIsbzN0rR0KsJ o2PN8Tm0kAdNOUwjD/FYSl4TtFKn0dK/tgeDNzG9k5vRvh58h3CQgAl6r5y+DSdOOLlG7Hswn xJXWeqh/N7UzBvBQ9pypyJN7HMoIgRF7EnG4o1SyW7LEelOUb75aOOP1DwGsmxc4g2gakHQvA dArRsK+u30EBoyZoLn+Fk7yn3ltZDhbd7WZWFvoBOiSW6AT7ozJIs/7WAUcgqOoBhvivu63HT wVBdtm32Ec5IoD7L4exuLyRj7vcOwdn2esCHHY6RSonJHAxgmq76XRlZnUlEkiX73jSwxKHMy HxRHWfzHYLKork9d5ItPdAb+3zp0PyWoJerdt5vxEJ4GW4VRDrEmASq5s2ZzQF/L44gGC17fN 2PDsYcNc2bE72M8/0D1UUjXKwUEhHVhoxfB+NDxtmM1KpUAbtWtNKhf+B2Yf2IH1V78WawVHU /A/Y6a5HQ8JpNKsUeth5akEMVjm1+536mUtsHzhP72H9/MGill5djaPRBpt4kPIfzKPAgnEZ1 7sHXhGqFM4e5HJ0OIVZ2xTF9P0Kc6gPPfM+g58JTD1tEqURTmhdZJR8QZCykryDl4En8Gyy2X c9+Ug6Z3Yx0kidqf0jnCLraDSzHwdgPNYpb7OxbkNaUH1TjVYM7YX3yeELk= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 212.227.126.134 Subject: [Qemu-devel] [PULL 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: 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 Message-Id: <20180104012913.30763-12-laurent@vivier.eu> --- 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);