[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 05/13] target-arm: Drop CPUARMState* argument from b
From: |
Peter Maydell |
Subject: |
[Qemu-devel] [PATCH 05/13] target-arm: Drop CPUARMState* argument from bank_number() |
Date: |
Tue, 5 Mar 2013 01:12:03 +0000 |
Drop the CPUARMState* argument from bank_number(), since we only
use it for passing to cpu_abort(). Use hw_error() instead.
This avoids propagating further interfaces using env pointers.
In the long term this function's callers need auditing to fix
problems where badly behaved guests can pass invalid bank numbers.
Signed-off-by: Peter Maydell <address@hidden>
Reviewed-by: Andreas Färber <address@hidden>
---
target-arm/helper.c | 13 ++++++-------
1 file changed, 6 insertions(+), 7 deletions(-)
diff --git a/target-arm/helper.c b/target-arm/helper.c
index e97e1a5..7fa4ba0 100644
--- a/target-arm/helper.c
+++ b/target-arm/helper.c
@@ -1617,7 +1617,7 @@ uint32_t HELPER(get_r13_banked)(CPUARMState *env,
uint32_t mode)
#else
/* Map CPU modes onto saved register banks. */
-static inline int bank_number(CPUARMState *env, int mode)
+static inline int bank_number(int mode)
{
switch (mode) {
case ARM_CPU_MODE_USR:
@@ -1634,8 +1634,7 @@ static inline int bank_number(CPUARMState *env, int mode)
case ARM_CPU_MODE_FIQ:
return 5;
}
- cpu_abort(env, "Bad mode %x\n", mode);
- return -1;
+ hw_error("bank number requested for bad CPSR mode value 0x%x\n", mode);
}
void switch_mode(CPUARMState *env, int mode)
@@ -1655,12 +1654,12 @@ void switch_mode(CPUARMState *env, int mode)
memcpy (env->regs + 8, env->fiq_regs, 5 * sizeof(uint32_t));
}
- i = bank_number(env, old_mode);
+ i = bank_number(old_mode);
env->banked_r13[i] = env->regs[13];
env->banked_r14[i] = env->regs[14];
env->banked_spsr[i] = env->spsr;
- i = bank_number(env, mode);
+ i = bank_number(mode);
env->regs[13] = env->banked_r13[i];
env->regs[14] = env->banked_r14[i];
env->spsr = env->banked_spsr[i];
@@ -2530,7 +2529,7 @@ void HELPER(set_r13_banked)(CPUARMState *env, uint32_t
mode, uint32_t val)
if ((env->uncached_cpsr & CPSR_M) == mode) {
env->regs[13] = val;
} else {
- env->banked_r13[bank_number(env, mode)] = val;
+ env->banked_r13[bank_number(mode)] = val;
}
}
@@ -2539,7 +2538,7 @@ uint32_t HELPER(get_r13_banked)(CPUARMState *env,
uint32_t mode)
if ((env->uncached_cpsr & CPSR_M) == mode) {
return env->regs[13];
} else {
- return env->banked_r13[bank_number(env, mode)];
+ return env->banked_r13[bank_number(mode)];
}
}
--
1.7.9.5
- [Qemu-devel] [PULL 00/13] target-arm queue (feat.ARM KVM support), Peter Maydell, 2013/03/04
- [Qemu-devel] [PATCH 06/13] ARM: KVM: Add support for KVM on ARM architecture, Peter Maydell, 2013/03/04
- [Qemu-devel] [PATCH 12/13] configure: Enable KVM on ARM, Peter Maydell, 2013/03/04
- [Qemu-devel] [PATCH 10/13] target-arm: Use MemoryListener to identify GIC base address for KVM, Peter Maydell, 2013/03/04
- [Qemu-devel] [PATCH 09/13] hw/arm_gic: Convert ARM GIC classes to use init/realize, Peter Maydell, 2013/03/04
- [Qemu-devel] [PATCH 03/13] oslib-posix: Align to permit transparent hugepages on ARM Linux, Peter Maydell, 2013/03/04
- [Qemu-devel] [PATCH 05/13] target-arm: Drop CPUARMState* argument from bank_number(),
Peter Maydell <=
- [Qemu-devel] [PATCH 08/13] hw/arm_gic: Add presave/postload hooks, Peter Maydell, 2013/03/04
- [Qemu-devel] [PATCH 11/13] hw/kvm/arm_gic: Implement support for KVM in-kernel ARM GIC, Peter Maydell, 2013/03/04
- [Qemu-devel] [PATCH 02/13] target-arm: Don't decode RFE or SRS on M profile cores, Peter Maydell, 2013/03/04
- [Qemu-devel] [PATCH 01/13] target-arm: Factor out handling of SRS instruction, Peter Maydell, 2013/03/04
- [Qemu-devel] [PATCH 04/13] linux-headers: resync from mainline to add ARM KVM headers, Peter Maydell, 2013/03/04
- [Qemu-devel] [PATCH 13/13] MAINTAINERS: add entry for ARM KVM guest cores, Peter Maydell, 2013/03/04
- [Qemu-devel] [PATCH 07/13] ARM KVM: save and load VFP registers from kernel, Peter Maydell, 2013/03/04
- Re: [Qemu-devel] [PULL 00/13] target-arm queue (feat.ARM KVM support), Aurelien Jarno, 2013/03/05