[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v5 03/17] linux-user, m68k: correctly manage SR in c
From: |
Laurent Vivier |
Subject: |
[Qemu-devel] [PATCH v5 03/17] linux-user, m68k: correctly manage SR in context |
Date: |
Tue, 2 Jan 2018 02:10:18 +0100 |
Use cpu_m68k_get_ccr()/cpu_m68k_set_ccr() to setup and restore correctly
the value of SR in the context structure. Fix target_rt_setup_ucontext().
Fixes: 3219de458c ("linux-user: correctly manage SR in ucontext")
Signed-off-by: Laurent Vivier <address@hidden>
---
linux-user/signal.c | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/linux-user/signal.c b/linux-user/signal.c
index dae14d4a89..74fa03f96d 100644
--- a/linux-user/signal.c
+++ b/linux-user/signal.c
@@ -5612,13 +5612,14 @@ struct target_rt_sigframe
static void setup_sigcontext(struct target_sigcontext *sc, CPUM68KState *env,
abi_ulong mask)
{
+ uint32_t sr = (env->sr & 0xff00) | cpu_m68k_get_ccr(env);
__put_user(mask, &sc->sc_mask);
__put_user(env->aregs[7], &sc->sc_usp);
__put_user(env->dregs[0], &sc->sc_d0);
__put_user(env->dregs[1], &sc->sc_d1);
__put_user(env->aregs[0], &sc->sc_a0);
__put_user(env->aregs[1], &sc->sc_a1);
- __put_user(env->sr, &sc->sc_sr);
+ __put_user(sr, &sc->sc_sr);
__put_user(env->pc, &sc->sc_pc);
}
@@ -5634,7 +5635,7 @@ restore_sigcontext(CPUM68KState *env, struct
target_sigcontext *sc)
__get_user(env->aregs[1], &sc->sc_a1);
__get_user(env->pc, &sc->sc_pc);
__get_user(temp, &sc->sc_sr);
- env->sr = (env->sr & 0xff00) | (temp & 0xff);
+ cpu_m68k_set_ccr(env, temp);
}
/*
@@ -5726,7 +5727,7 @@ static inline int target_rt_setup_ucontext(struct
target_ucontext *uc,
CPUM68KState *env)
{
target_greg_t *gregs = uc->tuc_mcontext.gregs;
- uint32_t sr = cpu_m68k_get_ccr(env);
+ uint32_t sr = (env->sr & 0xff00) | cpu_m68k_get_ccr(env);
__put_user(TARGET_MCONTEXT_VERSION, &uc->tuc_mcontext.version);
__put_user(env->dregs[0], &gregs[0]);
--
2.14.3
- [Qemu-devel] [PATCH v5 06/17] target/m68k: manage 680x0 stack frames, (continued)
- [Qemu-devel] [PATCH v5 06/17] target/m68k: manage 680x0 stack frames, Laurent Vivier, 2018/01/01
- [Qemu-devel] [PATCH v5 04/17] target-m68k: use insn_pc to generate instruction fault address, Laurent Vivier, 2018/01/01
- [Qemu-devel] [PATCH v5 14/17] target/m68k: add 680x0 "move to SR" instruction, Laurent Vivier, 2018/01/01
- [Qemu-devel] [PATCH v5 12/17] target/m68k: implement fsave/frestore, Laurent Vivier, 2018/01/01
- [Qemu-devel] [PATCH v5 17/17] target/m68k: fix m68k_cpu_dump_state(), Laurent Vivier, 2018/01/01
- [Qemu-devel] [PATCH v5 03/17] linux-user, m68k: correctly manage SR in context,
Laurent Vivier <=
- [Qemu-devel] [PATCH v5 05/17] target/m68k: add CPU_LOG_INT trace, Laurent Vivier, 2018/01/01
- [Qemu-devel] [PATCH v5 11/17] target/m68k: add reset, Laurent Vivier, 2018/01/01
- [Qemu-devel] [PATCH v5 15/17] target/m68k: add andi/ori/eori to SR/CCR, Laurent Vivier, 2018/01/01
- [Qemu-devel] [PATCH v5 13/17] target/m68k: move CCR/SR functions, Laurent Vivier, 2018/01/01