[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [qemu-s390x] [PATCH for 2.13 v2 11/19] linux-user: move cris cpu loo
From: |
Philippe Mathieu-Daudé |
Subject: |
Re: [qemu-s390x] [PATCH for 2.13 v2 11/19] linux-user: move cris cpu loop to cris directory |
Date: |
Sun, 15 Apr 2018 23:22:18 -0300 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.7.0 |
On 04/11/2018 03:56 PM, Laurent Vivier wrote:
> No code change, only move code from main.c to
> cris/cpu_loop.c.
>
> Signed-off-by: Laurent Vivier <address@hidden>
> Reviewed-by: Richard Henderson <address@hidden>
Reviewed-by: Philippe Mathieu-Daudé <address@hidden>
> ---
>
> 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"
>
> +void cpu_loop(CPUCRISState *env)
> +{
> + CPUState *cs = CPU(cris_env_get_cpu(env));
> + int trapnr, ret;
> + target_siginfo_t info;
> +
> + while (1) {
> + cpu_exec_start(cs);
> + trapnr = cpu_exec(cs);
> + cpu_exec_end(cs);
> + process_queued_cpu_work(cs);
> +
> + switch (trapnr) {
> + case 0xaa:
> + {
> + info.si_signo = TARGET_SIGSEGV;
> + info.si_errno = 0;
> + /* XXX: check env->error_code */
> + info.si_code = TARGET_SEGV_MAPERR;
> + info._sifields._sigfault._addr = 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 = do_syscall(env,
> + env->regs[9],
> + env->regs[10],
> + env->regs[11],
> + env->regs[12],
> + env->regs[13],
> + env->pregs[7],
> + env->pregs[11],
> + 0, 0);
> + if (ret == -TARGET_ERESTARTSYS) {
> + env->pc -= 2;
> + } else if (ret != -TARGET_QEMU_ESIGRETURN) {
> + env->regs[10] = ret;
> + }
> + break;
> + case EXCP_DEBUG:
> + {
> + int sig;
> +
> + sig = gdb_handlesig(cs, TARGET_SIGTRAP);
> + if (sig)
> + {
> + info.si_signo = sig;
> + info.si_errno = 0;
> + info.si_code = 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 = ENV_GET_CPU(env);
> + TaskState *ts = cpu->opaque;
> + struct image_info *info = ts->info;
> +
> + env->regs[0] = regs->r0;
> + env->regs[1] = regs->r1;
> + env->regs[2] = regs->r2;
> + env->regs[3] = regs->r3;
> + env->regs[4] = regs->r4;
> + env->regs[5] = regs->r5;
> + env->regs[6] = regs->r6;
> + env->regs[7] = regs->r7;
> + env->regs[8] = regs->r8;
> + env->regs[9] = regs->r9;
> + env->regs[10] = regs->r10;
> + env->regs[11] = regs->r11;
> + env->regs[12] = regs->r12;
> + env->regs[13] = regs->r13;
> + env->regs[14] = info->start_stack;
> + env->regs[15] = regs->acr;
> + env->pc = 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)
> }
> }
>
> -#ifdef TARGET_CRIS
> -void cpu_loop(CPUCRISState *env)
> -{
> - CPUState *cs = CPU(cris_env_get_cpu(env));
> - int trapnr, ret;
> - target_siginfo_t info;
> -
> - while (1) {
> - cpu_exec_start(cs);
> - trapnr = cpu_exec(cs);
> - cpu_exec_end(cs);
> - process_queued_cpu_work(cs);
> -
> - switch (trapnr) {
> - case 0xaa:
> - {
> - info.si_signo = TARGET_SIGSEGV;
> - info.si_errno = 0;
> - /* XXX: check env->error_code */
> - info.si_code = TARGET_SEGV_MAPERR;
> - info._sifields._sigfault._addr = 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 = do_syscall(env,
> - env->regs[9],
> - env->regs[10],
> - env->regs[11],
> - env->regs[12],
> - env->regs[13],
> - env->pregs[7],
> - env->pregs[11],
> - 0, 0);
> - if (ret == -TARGET_ERESTARTSYS) {
> - env->pc -= 2;
> - } else if (ret != -TARGET_QEMU_ESIGRETURN) {
> - env->regs[10] = ret;
> - }
> - break;
> - case EXCP_DEBUG:
> - {
> - int sig;
> -
> - sig = gdb_handlesig(cs, TARGET_SIGTRAP);
> - if (sig)
> - {
> - info.si_signo = sig;
> - info.si_errno = 0;
> - info.si_code = 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] = regs->usp;
> env->pc = regs->pc;
> }
> -#elif defined(TARGET_CRIS)
> - {
> - env->regs[0] = regs->r0;
> - env->regs[1] = regs->r1;
> - env->regs[2] = regs->r2;
> - env->regs[3] = regs->r3;
> - env->regs[4] = regs->r4;
> - env->regs[5] = regs->r5;
> - env->regs[6] = regs->r6;
> - env->regs[7] = regs->r7;
> - env->regs[8] = regs->r8;
> - env->regs[9] = regs->r9;
> - env->regs[10] = regs->r10;
> - env->regs[11] = regs->r11;
> - env->regs[12] = regs->r12;
> - env->regs[13] = regs->r13;
> - env->regs[14] = info->start_stack;
> - env->regs[15] = regs->acr;
> - env->pc = regs->erp;
> - }
> #elif defined(TARGET_S390X)
> {
> int i;
>
- [qemu-s390x] [PATCH for 2.13 v2 00/19] linux-user: move arch specific parts from main.c to arch directories, Laurent Vivier, 2018/04/11
- [qemu-s390x] [PATCH for 2.13 v2 11/19] linux-user: move cris cpu loop to cris directory, Laurent Vivier, 2018/04/11
- Re: [qemu-s390x] [PATCH for 2.13 v2 11/19] linux-user: move cris cpu loop to cris directory,
Philippe Mathieu-Daudé <=
- [qemu-s390x] [PATCH for 2.13 v2 08/19] linux-user: move nios2 cpu loop to nios2 directory, Laurent Vivier, 2018/04/11
- [qemu-s390x] [PATCH for 2.13 v2 02/19] linux-user: move i386/x86_64 cpu loop to i386 directory, Laurent Vivier, 2018/04/11
- [qemu-s390x] [PATCH for 2.13 v2 19/19] linux-user: move xtensa cpu loop to xtensa directory, Laurent Vivier, 2018/04/11
- [qemu-s390x] [PATCH for 2.13 v2 13/19] linux-user: move m68k cpu loop to m68k directory, Laurent Vivier, 2018/04/11
- [qemu-s390x] [PATCH for 2.13 v2 09/19] linux-user: move openrisc cpu loop to openrisc directory, Laurent Vivier, 2018/04/11
- [qemu-s390x] [PATCH for 2.13 v2 04/19] linux-user: move arm cpu loop to arm directory, Laurent Vivier, 2018/04/11
- [qemu-s390x] [PATCH for 2.13 v2 15/19] linux-user: move s390x cpu loop to s390x directory, Laurent Vivier, 2018/04/11
- [qemu-s390x] [PATCH for 2.13 v2 17/19] linux-user: move riscv cpu loop to riscv directory, Laurent Vivier, 2018/04/11