qemu-ppc
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH 5/9] target/ppc: Use ppc_interrupts_little_endian in powerpc_


From: Fabiano Rosas
Subject: Re: [PATCH 5/9] target/ppc: Use ppc_interrupts_little_endian in powerpc_excp
Date: Tue, 04 Jan 2022 11:11:17 -0300

Cédric Le Goater <clg@kaod.org> writes:

> On 1/3/22 23:07, Fabiano Rosas wrote:
>> The ppc_interrupts_little_endian function is suitable for determining
>> the endianness of interrupts for all Book3S CPUs.
>> 
>> (I'm keeping the MSR check for the rest of the CPUs, but it will go
>> away in the next patch.)
>> 
>> Signed-off-by: Fabiano Rosas <farosas@linux.ibm.com>
>> ---
>>   target/ppc/excp_helper.c | 21 ++-------------------
>>   1 file changed, 2 insertions(+), 19 deletions(-)
>> 
>> diff --git a/target/ppc/excp_helper.c b/target/ppc/excp_helper.c
>> index 0dbadc5d07..5d31940426 100644
>> --- a/target/ppc/excp_helper.c
>> +++ b/target/ppc/excp_helper.c
>> @@ -760,25 +760,8 @@ static inline void powerpc_excp(PowerPCCPU *cpu, int 
>> excp)
>>        * CPU, the HV mode, etc...
>>        */
>>   #ifdef TARGET_PPC64
>> -    if (excp_model == POWERPC_EXCP_POWER7) {
>> -        if (!(new_msr & MSR_HVB) && (env->spr[SPR_LPCR] & LPCR_ILE)) {
>> -            new_msr |= (target_ulong)1 << MSR_LE;
>> -        }
>> -    } else if (excp_model == POWERPC_EXCP_POWER8) {
>> -        if (new_msr & MSR_HVB) {
>> -            if (env->spr[SPR_HID0] & HID0_HILE) {
>> -                new_msr |= (target_ulong)1 << MSR_LE;
>> -            }
>> -        } else if (env->spr[SPR_LPCR] & LPCR_ILE) {
>> -            new_msr |= (target_ulong)1 << MSR_LE;
>> -        }
>> -    } else if (excp_model == POWERPC_EXCP_POWER9 ||
>> -               excp_model == POWERPC_EXCP_POWER10) {
>> -        if (new_msr & MSR_HVB) {
>> -            if (env->spr[SPR_HID0] & HID0_POWER9_HILE) {
>> -                new_msr |= (target_ulong)1 << MSR_LE;
>> -            }
>> -        } else if (env->spr[SPR_LPCR] & LPCR_ILE) {
>> +    if (excp_model >= POWERPC_EXCP_970) {
>
> why include POWERPC_EXCP_970 ? These CPUs do not support Little Endian.
>

Because the 970 exception model covers POWER5P as well which has ILE.

And looking at cpu_init.c, POWER5 uses a bunch of 970 functions. And
POWER7 uses the POWER5 ones. So we kind of have a dependency chain
there. That is why I'm always handling ">= 970" as "books".



reply via email to

[Prev in Thread] Current Thread [Next in Thread]