[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v6 03/17] linux-user, m68k: correctly manage SR in c
From: |
Laurent Vivier |
Subject: |
[Qemu-devel] [PATCH v6 03/17] linux-user, m68k: correctly manage SR in context |
Date: |
Wed, 3 Jan 2018 00:40:54 +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>
Reviewed-by: Richard Henderson <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 v6 00/17] target/m68k: supervisor mode (part 1), Laurent Vivier, 2018/01/02
- [Qemu-devel] [PATCH v6 01/17] target-m68k: sync CC_OP before gen_jmp_tb(), Laurent Vivier, 2018/01/02
- [Qemu-devel] [PATCH v6 02/17] target/m68k: fix gen_get_ccr(), Laurent Vivier, 2018/01/02
- [Qemu-devel] [PATCH v6 03/17] linux-user, m68k: correctly manage SR in context,
Laurent Vivier <=
- [Qemu-devel] [PATCH v6 04/17] target/m68k: use insn_pc to generate instruction fault address, Laurent Vivier, 2018/01/02
- [Qemu-devel] [PATCH v6 05/17] target/m68k: add CPU_LOG_INT trace, Laurent Vivier, 2018/01/02
- [Qemu-devel] [PATCH v6 06/17] target/m68k: manage 680x0 stack frames, Laurent Vivier, 2018/01/02
- [Qemu-devel] [PATCH v6 08/17] target/m68k: add move16, Laurent Vivier, 2018/01/02
- [Qemu-devel] [PATCH v6 07/17] target/m68k: add chk and chk2, Laurent Vivier, 2018/01/02