[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 04/11] linux-user: Use restrictive mask when calling
From: |
Peter Maydell |
Subject: |
[Qemu-devel] [PATCH 04/11] linux-user: Use restrictive mask when calling cpsr_write() |
Date: |
Mon, 15 Feb 2016 17:22:50 +0000 |
When linux-user code is calling cpsr_write(), use a restrictive
mask to ensure we are limiting the set of CPSR bits we update.
In particular, don't allow the mode bits to be changed.
Signed-off-by: Peter Maydell <address@hidden>
---
linux-user/main.c | 3 ++-
linux-user/signal.c | 2 +-
2 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/linux-user/main.c b/linux-user/main.c
index 1269470..c467fa7 100644
--- a/linux-user/main.c
+++ b/linux-user/main.c
@@ -4446,7 +4446,8 @@ int main(int argc, char **argv, char **envp)
#elif defined(TARGET_ARM)
{
int i;
- cpsr_write(env, regs->uregs[16], 0xffffffff, CPSRWriteByInstr);
+ cpsr_write(env, regs->uregs[16], CPSR_USER | CPSR_EXEC,
+ CPSRWriteByInstr);
for(i = 0; i < 16; i++) {
env->regs[i] = regs->uregs[i];
}
diff --git a/linux-user/signal.c b/linux-user/signal.c
index 82f81c7..962111c 100644
--- a/linux-user/signal.c
+++ b/linux-user/signal.c
@@ -1611,7 +1611,7 @@ setup_return(CPUARMState *env, struct target_sigaction
*ka,
env->regs[13] = frame_addr;
env->regs[14] = retcode;
env->regs[15] = handler & (thumb ? ~1 : ~3);
- cpsr_write(env, cpsr, 0xffffffff, CPSRWriteByInstr);
+ cpsr_write(env, cpsr, CPSR_IT | CPSR_T, CPSRWriteByInstr);
}
static abi_ulong *setup_sigframe_v2_vfp(abi_ulong *regspace, CPUARMState *env)
--
1.9.1
- [Qemu-devel] [PATCH 00/11] target-arm: clean up cpsr_write mode changing, Peter Maydell, 2016/02/15
- [Qemu-devel] [PATCH 08/11] target-arm: Forbid mode switch to Mon from Secure EL1, Peter Maydell, 2016/02/15
- [Qemu-devel] [PATCH 11/11] target-arm: Make Monitor->NS PL1 mode changes illegal if HCR.TGE is 1, Peter Maydell, 2016/02/15
- [Qemu-devel] [PATCH 04/11] linux-user: Use restrictive mask when calling cpsr_write(),
Peter Maydell <=
- [Qemu-devel] [PATCH 09/11] target-arm: In v8, make illegal AArch32 mode changes set PSTATE.IL, Peter Maydell, 2016/02/15
- [Qemu-devel] [PATCH 02/11] target-arm: Add write_type argument to cpsr_write(), Peter Maydell, 2016/02/15
- [Qemu-devel] [PATCH 07/11] target-arm: Add Hyp mode checks to bad_mode_switch(), Peter Maydell, 2016/02/15
- [Qemu-devel] [PATCH 05/11] target-arm: In cpsr_write() ignore mode switches from User mode, Peter Maydell, 2016/02/15
- [Qemu-devel] [PATCH 01/11] target-arm: Give CPSR setting on 32-bit exception return its own helper, Peter Maydell, 2016/02/15