[U-Boot] [PATCH 2/4] powerpc/85xx:Fix MSR[DE] bit in MSR to support debugger
Prabhakar Kushwaha
prabhakar at freescale.com
Wed Mar 7 05:00:25 CET 2012
Hi Wolfgang,
On Tuesday 06 March 2012 08:10 PM, Wolfgang Denk wrote:
> Dear Prabhakar Kushwaha,
>
> In message<1329296042-28506-1-git-send-email-prabhakar at freescale.com> you wrote:
>> Debugger's ability to debug an application is constrained by the
>> architecture's debug IP / run-control solution that may impose certain
>> requirements for the application itself.
>> Similarly, when referring to the e500 and e500v2 architecture, there are two
>> basic rules any application has to respect in order to allow full debugging
>> support:
>> 1. Keep MSR[DE] bit set
>> 2. Have a valid opcode that can be fetched from the debug exception
>> vector [IVPR|IVOR15].
>> Here MSR = Machine State register
>>
>> This patch makes sure of point "1" and make MSR[DE] bit is set uniformaly
>> across the different execution in address space.
> Does it make sense to repeast the whole README here?
I agree. it should not be.
But as i sent a series of patch, this change require some explanation.
I will change the description.
>> diff --git a/arch/powerpc/cpu/mpc85xx/start.S b/arch/powerpc/cpu/mpc85xx/start.S
>> index 7bfa2d5..09111e6 100644
>> --- a/arch/powerpc/cpu/mpc85xx/start.S
>> +++ b/arch/powerpc/cpu/mpc85xx/start.S
>> @@ -82,6 +82,11 @@
>> .globl _start_e500
>>
>> _start_e500:
>> +#if defined(CONFIG_E500_V1_V2)
>> +/* Enable debug exception */
>> + li r1,MSR_DE
>> + mtmsr r1
>> +#endif
> Why is this #ifdef needed here?
This #ifdef is to make sure MSR_DE bit is set before u-boot's actual
code start executing.
it is for overcoming one of the requirement of debugging i.e. Keep
MSR_DE bit set.
>> #if defined(CONFIG_SECURE_BOOT)&& defined(CONFIG_E500MC)
>> /* ISBC uses L2 as stack.
>> @@ -729,8 +734,8 @@ create_init_ram_area:
>> msync
>> tlbwe
>>
>> - lis r6,MSR_IS|MSR_DS at h
>> - ori r6,r6,MSR_IS|MSR_DS at l
>> + lis r6,MSR_IS|MSR_DS|MSR_DE at h
>> + ori r6,r6,MSR_IS|MSR_DS|MSR_DE at l
> And why don;t we need such an #ifdef here?
I found similar piece of code in start.S without any #define at label
_start_cont. That's why i made it like this.
if required i will put it under #define.
> Also, CONFIG_E500_V1_V2 is undocumented.
Definition of this #define is part of documentation. I will add comment
before using it.
--Prabhakar
More information about the U-Boot
mailing list