aboutsummaryrefslogtreecommitdiff
path: root/hw/ppce500_spin.c
diff options
context:
space:
mode:
authorAndreas Färber <afaerber@suse.de>2013-02-15 15:56:27 +0100
committerAndreas Färber <afaerber@suse.de>2013-02-16 14:51:00 +0100
commit912ebe10eff6cf7e05f908a44283033c1c0270a0 (patch)
tree886ec104be873ad3698aeac048af297695486acc /hw/ppce500_spin.c
parent440c8152bd410b0f928d4de6f187f1e2280e1324 (diff)
ppce500_spin: Replace open-coded CPU loop with qemu_get_cpu()
Potentially env could be NULL whereas cpu would still be valid and correspond to a previous env. Wrapping this in qemu_get_cpu(), env is no longer needed, so simplify code that existed before 55e5c2850293547203874098f7cec148ffd12dfa. Acked-by: Alexander Graf <agraf@suse.de> Signed-off-by: Andreas Färber <afaerber@suse.de>
Diffstat (limited to 'hw/ppce500_spin.c')
-rw-r--r--hw/ppce500_spin.c15
1 files changed, 4 insertions, 11 deletions
diff --git a/hw/ppce500_spin.c b/hw/ppce500_spin.c
index 7e90fb9824..5bdce52e24 100644
--- a/hw/ppce500_spin.c
+++ b/hw/ppce500_spin.c
@@ -123,18 +123,11 @@ static void spin_write(void *opaque, hwaddr addr, uint64_t value,
{
SpinState *s = opaque;
int env_idx = addr / sizeof(SpinInfo);
- CPUPPCState *env;
- CPUState *cpu = NULL;
+ CPUState *cpu;
SpinInfo *curspin = &s->spin[env_idx];
uint8_t *curspin_p = (uint8_t*)curspin;
- for (env = first_cpu; env != NULL; env = env->next_cpu) {
- cpu = CPU(ppc_env_get_cpu(env));
- if (cpu->cpu_index == env_idx) {
- break;
- }
- }
-
+ cpu = qemu_get_cpu(env_idx);
if (cpu == NULL) {
/* Unknown CPU */
return;
@@ -161,11 +154,11 @@ static void spin_write(void *opaque, hwaddr addr, uint64_t value,
if (!(ldq_p(&curspin->addr) & 1)) {
/* run CPU */
SpinKick kick = {
- .cpu = ppc_env_get_cpu(env),
+ .cpu = POWERPC_CPU(cpu),
.spin = curspin,
};
- run_on_cpu(CPU(kick.cpu), spin_kick, &kick);
+ run_on_cpu(cpu, spin_kick, &kick);
}
}