From nobody Tue Feb 10 19:49:40 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1523475477203772.3782662678609; Wed, 11 Apr 2018 12:37:57 -0700 (PDT) Received: from localhost ([::1]:50056 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1f6LZ6-0007P9-BR for importer@patchew.org; Wed, 11 Apr 2018 15:37:56 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:38053) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1f6Kw8-00066f-NB for qemu-devel@nongnu.org; Wed, 11 Apr 2018 14:57:44 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1f6Kw5-0007t3-Fe for qemu-devel@nongnu.org; Wed, 11 Apr 2018 14:57:39 -0400 Received: from mout.kundenserver.de ([212.227.17.10]:55401) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1f6Kvz-0007oz-BY; Wed, 11 Apr 2018 14:57:31 -0400 Received: from localhost.localdomain ([78.238.229.36]) by mrelayeu.kundenserver.de (mreue105 [212.227.15.183]) with ESMTPSA (Nemesis) id 0MINXr-1f2kxV0Vpv-004D9L; Wed, 11 Apr 2018 20:57:18 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Date: Wed, 11 Apr 2018 20:56:43 +0200 Message-Id: <20180411185651.21351-12-laurent@vivier.eu> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180411185651.21351-1-laurent@vivier.eu> References: <20180411185651.21351-1-laurent@vivier.eu> X-Provags-ID: V03:K1:hihjSc31/+33Nm9CjANxTNKN/bAIDKpfyMPWsPjYaQRufBDXRdY NUhAPl18Ph6tUCn1wuLMmDpBH+4L2+HV4VbQ3fnsaT8+plq2qmmVf7zlKQOR7FlZwF2YKej Om8TDfyEjXDEW2Vted4blN6R7mH3wEgbWHnL6+ByO9VWgY17/hcLfvcWYxantxusbW+QjbP PJxAoOHykgLXa4o0EJsGg== X-UI-Out-Filterresults: notjunk:1;V01:K0:KRAIthwPe7s=:GUUiHRXWx3rGbYW/2of4D7 ROzLnMtz7wrsR/dVVNJOxjNFGpNCkw9c8iE2PLB7OrWAzDGxczs13O3Z2yK+d0r9KgLNXr00T bK1/RVxs+5oqXDyvAV5/nHpWNnKL7zEqIfIyipey50Ke7CuTevQa7NTGb0+mWEI3neUN9PWoH y9OF4H2/OETCT4EifXygsRHyUKLtC1WtFQQ0RQ9oBT3Fa2nCULlJRoaMnzTX1oJaCYvhywQ8n INCWcXiQDjiqTjlC+oRZ8lUbwxK6oMLjHrh6BeJaaw7cBgQqXhRpC5nUdC1/Nq7GNAFG+l0xF jZ9AvPRLhGr8BPBZkjqr20U7KD19Qi7xBJGtBmvlOgYe86xq/MegSEozLk4LnzaZTKX3RhBH4 XV2t8qJhZsBcYGlCkjEAiKKIhzXyFWeyUyoqeZnqD94WCwZs9RMmfa0V9CroiZKzsaXEvSwEb e/6Wyz2DxBiz/y6QWewlcVcsP+Ikg8LQGPNsENRiqBMRL5e204/jKsZry+Xm6Gkwau0HMpW12 HzFIiaLIE7c1EKXSVrE7bQtidH8jRrw06/qDxzLvyf5yug5rcUJ4b6+7C11lQKqzhVhAZRUeq hj39r01rfU9Te7dYszeLzsGlGeNOEKaJp8T/77xYfBlmzHhRh2ei0x92zKL9kUx4h6nCsqdfp MRxu821DihU6rv8qtyB81SbHrU+Nz3+aCOpQWOr7SJ3+ADoLekN7TIwqiqupPD3gr2JlnCR2R +db4t8d2TmBCFMX/JALkx6Owb3FXZ276vhssAg== X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 212.227.17.10 Subject: [Qemu-devel] [PATCH for 2.13 v2 11/19] linux-user: move cris cpu loop to cris directory 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: Peter Maydell , Cornelia Huck , Riku Voipio , Richard Henderson , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Laurent Vivier , qemu-s390x@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" No code change, only move code from main.c to cris/cpu_loop.c. Signed-off-by: Laurent Vivier Reviewed-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- Notes: v2: expand tabs linux-user/cris/cpu_loop.c | 89 ++++++++++++++++++++++++++++++++++++++++++= +++ linux-user/main.c | 90 ------------------------------------------= ---- 2 files changed, 89 insertions(+), 90 deletions(-) diff --git a/linux-user/cris/cpu_loop.c b/linux-user/cris/cpu_loop.c index b7700a5561..1c5eca9f83 100644 --- a/linux-user/cris/cpu_loop.c +++ b/linux-user/cris/cpu_loop.c @@ -21,6 +21,95 @@ #include "qemu.h" #include "cpu_loop-common.h" =20 +void cpu_loop(CPUCRISState *env) +{ + CPUState *cs =3D CPU(cris_env_get_cpu(env)); + int trapnr, ret; + target_siginfo_t info; + =20 + while (1) { + cpu_exec_start(cs); + trapnr =3D cpu_exec(cs); + cpu_exec_end(cs); + process_queued_cpu_work(cs); + + switch (trapnr) { + case 0xaa: + { + info.si_signo =3D TARGET_SIGSEGV; + info.si_errno =3D 0; + /* XXX: check env->error_code */ + info.si_code =3D TARGET_SEGV_MAPERR; + info._sifields._sigfault._addr =3D env->pregs[PR_EDA]; + queue_signal(env, info.si_signo, QEMU_SI_FAULT, &info); + } + break; + case EXCP_INTERRUPT: + /* just indicate that signals should be handled asap */ + break; + case EXCP_BREAK: + ret =3D do_syscall(env,=20 + env->regs[9],=20 + env->regs[10],=20 + env->regs[11],=20 + env->regs[12],=20 + env->regs[13],=20 + env->pregs[7],=20 + env->pregs[11], + 0, 0); + if (ret =3D=3D -TARGET_ERESTARTSYS) { + env->pc -=3D 2; + } else if (ret !=3D -TARGET_QEMU_ESIGRETURN) { + env->regs[10] =3D ret; + } + break; + case EXCP_DEBUG: + { + int sig; + + sig =3D gdb_handlesig(cs, TARGET_SIGTRAP); + if (sig) + { + info.si_signo =3D sig; + info.si_errno =3D 0; + info.si_code =3D TARGET_TRAP_BRKPT; + queue_signal(env, info.si_signo, QEMU_SI_FAULT, &info); + } + } + break; + case EXCP_ATOMIC: + cpu_exec_step_atomic(cs); + break; + default: + printf ("Unhandled trap: 0x%x\n", trapnr); + cpu_dump_state(cs, stderr, fprintf, 0); + exit(EXIT_FAILURE); + } + process_pending_signals (env); + } +} + void target_cpu_copy_regs(CPUArchState *env, struct target_pt_regs *regs) { + CPUState *cpu =3D ENV_GET_CPU(env); + TaskState *ts =3D cpu->opaque; + struct image_info *info =3D ts->info; + + env->regs[0] =3D regs->r0; + env->regs[1] =3D regs->r1; + env->regs[2] =3D regs->r2; + env->regs[3] =3D regs->r3; + env->regs[4] =3D regs->r4; + env->regs[5] =3D regs->r5; + env->regs[6] =3D regs->r6; + env->regs[7] =3D regs->r7; + env->regs[8] =3D regs->r8; + env->regs[9] =3D regs->r9; + env->regs[10] =3D regs->r10; + env->regs[11] =3D regs->r11; + env->regs[12] =3D regs->r12; + env->regs[13] =3D regs->r13; + env->regs[14] =3D info->start_stack; + env->regs[15] =3D regs->acr; + env->pc =3D regs->erp; } diff --git a/linux-user/main.c b/linux-user/main.c index d7fee3e3db..9e01325d6a 100644 --- a/linux-user/main.c +++ b/linux-user/main.c @@ -149,76 +149,6 @@ void fork_end(int child) } } =20 -#ifdef TARGET_CRIS -void cpu_loop(CPUCRISState *env) -{ - CPUState *cs =3D CPU(cris_env_get_cpu(env)); - int trapnr, ret; - target_siginfo_t info; - =20 - while (1) { - cpu_exec_start(cs); - trapnr =3D cpu_exec(cs); - cpu_exec_end(cs); - process_queued_cpu_work(cs); - - switch (trapnr) { - case 0xaa: - { - info.si_signo =3D TARGET_SIGSEGV; - info.si_errno =3D 0; - /* XXX: check env->error_code */ - info.si_code =3D TARGET_SEGV_MAPERR; - info._sifields._sigfault._addr =3D env->pregs[PR_EDA]; - queue_signal(env, info.si_signo, QEMU_SI_FAULT, &info); - } - break; - case EXCP_INTERRUPT: - /* just indicate that signals should be handled asap */ - break; - case EXCP_BREAK: - ret =3D do_syscall(env,=20 - env->regs[9],=20 - env->regs[10],=20 - env->regs[11],=20 - env->regs[12],=20 - env->regs[13],=20 - env->pregs[7],=20 - env->pregs[11], - 0, 0); - if (ret =3D=3D -TARGET_ERESTARTSYS) { - env->pc -=3D 2; - } else if (ret !=3D -TARGET_QEMU_ESIGRETURN) { - env->regs[10] =3D ret; - } - break; - case EXCP_DEBUG: - { - int sig; - - sig =3D gdb_handlesig(cs, TARGET_SIGTRAP); - if (sig) - { - info.si_signo =3D sig; - info.si_errno =3D 0; - info.si_code =3D TARGET_TRAP_BRKPT; - queue_signal(env, info.si_signo, QEMU_SI_FAULT, &info); - } - } - break; - case EXCP_ATOMIC: - cpu_exec_step_atomic(cs); - break; - default: - printf ("Unhandled trap: 0x%x\n", trapnr); - cpu_dump_state(cs, stderr, fprintf, 0); - exit(EXIT_FAILURE); - } - process_pending_signals (env); - } -} -#endif - #ifdef TARGET_MICROBLAZE void cpu_loop(CPUMBState *env) { @@ -2290,26 +2220,6 @@ int main(int argc, char **argv, char **envp) env->ir[IR_SP] =3D regs->usp; env->pc =3D regs->pc; } -#elif defined(TARGET_CRIS) - { - env->regs[0] =3D regs->r0; - env->regs[1] =3D regs->r1; - env->regs[2] =3D regs->r2; - env->regs[3] =3D regs->r3; - env->regs[4] =3D regs->r4; - env->regs[5] =3D regs->r5; - env->regs[6] =3D regs->r6; - env->regs[7] =3D regs->r7; - env->regs[8] =3D regs->r8; - env->regs[9] =3D regs->r9; - env->regs[10] =3D regs->r10; - env->regs[11] =3D regs->r11; - env->regs[12] =3D regs->r12; - env->regs[13] =3D regs->r13; - env->regs[14] =3D info->start_stack; - env->regs[15] =3D regs->acr; =20 - env->pc =3D regs->erp; - } #elif defined(TARGET_S390X) { int i; --=20 2.14.3