qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [Qemu-ppc] [PATCH] PPC: init_excp_7x0: fix hreset entry


From: Alexander Graf
Subject: Re: [Qemu-devel] [Qemu-ppc] [PATCH] PPC: init_excp_7x0: fix hreset entry point.
Date: Wed, 27 Mar 2013 15:00:37 +0100

On 27.03.2013, at 14:54, Alexander Graf wrote:

> 
> On 27.03.2013, at 14:50, Fabien Chouteau wrote:
> 
>> According to the PowePC 750 user's manual, the vector offset for system
> 
> PowerPC?
> 
>> reset (both /HRESET and /SRESET) is 0x00100.
>> 
>> Signed-off-by: Fabien Chouteau <address@hidden>
>> ---
>> target-ppc/translate_init.c |    8 ++++----
>> 1 file changed, 4 insertions(+), 4 deletions(-)
>> 
>> diff --git a/target-ppc/translate_init.c b/target-ppc/translate_init.c
>> index 781170f..a5bae1e 100644
>> --- a/target-ppc/translate_init.c
>> +++ b/target-ppc/translate_init.c
>> @@ -2885,7 +2885,7 @@ static void init_excp_7x0 (CPUPPCState *env)
>>    env->excp_vectors[POWERPC_EXCP_THERM]    = 0x00001700;
>>    env->hreset_excp_prefix = 0x00000000UL;
>>    /* Hardware reset vector */
>> -    env->hreset_vector = 0xFFFFFFFCUL;
>> +    env->hreset_vector = 0xFFF00100UL;
> 
> As you properly explained above, the reset vector is 0x100 according to the 
> spec. However, hreset_excp_prefix is 0x0. How do we end up getting to 
> 0xfff00100 here?

According to 7xx_um.pdf (740 / 750 User manual), the IP bit in MSR (bit 25 in 
ppc notion) controls whether excp_prefix is 0xfff00000 or 0x00000000. The spec 
also says:

When either HRESET is negated or SRESET transitions to asserted, the processor 
attempts to fetch code from the system reset exception vector. The vector is 
located at offset 0x00100 from the exception prefix (all zeros or ones, 
depending on the setting of the exception prefix bit in the machine state 
register (MSR[IP]). The MSR[IP] bit is set for HRESET.

So on reset, MSR[IP] = 1. That means that hreset_excp_prefix is also wrong here.

Please add the respective logic that sets hreset_excp_prefix according to 
MSR[IP] on 740 / 750, otherwise whatever you're trying to execute will break as 
soon as it gets its first real exception :).


Alex




reply via email to

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