[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-ppc] [PATCH qom-cpu-next] ppce500_spin: Replace open-coded CPU
From: |
Andreas Färber |
Subject: |
Re: [Qemu-ppc] [PATCH qom-cpu-next] ppce500_spin: Replace open-coded CPU loop with qemu_get_cpu() |
Date: |
Fri, 15 Feb 2013 17:58:52 +0100 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130105 Thunderbird/17.0.2 |
Am 15.02.2013 17:54, schrieb Alexander Graf:
>
> On 15.02.2013, at 17:51, Andreas Färber wrote:
>
>> 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.
>>
>> Signed-off-by: Andreas Färber <address@hidden>
>> ---
>> hw/ppce500_spin.c | 15 ++++-----------
>> 1 Datei geändert, 4 Zeilen hinzugefügt(+), 11 Zeilen entfernt(-)
>>
>> diff --git a/hw/ppce500_spin.c b/hw/ppce500_spin.c
>> index 7e90fb9..5bdce52 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),
>
> Why not just cpu?
PowerPCCPU vs. CPUState type.
Having the specific type in ppc code allows direct access to ->env.
If you see a performance issue, we could also use (PowerPCCPU *)cpu.
Andreas
>> .spin = curspin,
>> };
>>
>> - run_on_cpu(CPU(kick.cpu), spin_kick, &kick);
>> + run_on_cpu(cpu, spin_kick, &kick);
>> }
>> }
>>
>> --
>> 1.7.10.4
>>
>
--
SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany
GF: Jeff Hawn, Jennifer Guild, Felix Imendörffer; HRB 16746 AG Nürnberg