public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
* [U-Boot] [PATCH 2/4] powerpc/85xx:Fix MSR[DE] bit in MSR to support debugger
@ 2012-02-15  8:54 Prabhakar Kushwaha
  2012-03-06 14:40 ` Wolfgang Denk
  0 siblings, 1 reply; 6+ messages in thread
From: Prabhakar Kushwaha @ 2012-02-15  8:54 UTC (permalink / raw)
  To: u-boot

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.

Signed-off-by: Radu Lazarescu <radu.lazarescu@freescale.com>
Signed-off-by: Prabhakar Kushwaha <prabhakar@freescale.com>
---
 Applies on http://git.denx.de/u-boot.git branch master

 arch/powerpc/cpu/mpc85xx/start.S |    9 +++++++--
 1 files changed, 7 insertions(+), 2 deletions(-)

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
 
 #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
 	lis	r7,switch_as at h
 	ori	r7,r7,switch_as at l
 
-- 
1.7.5.4

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [U-Boot] [PATCH 2/4] powerpc/85xx:Fix MSR[DE] bit in MSR to support debugger
  2012-02-15  8:54 [U-Boot] [PATCH 2/4] powerpc/85xx:Fix MSR[DE] bit in MSR to support debugger Prabhakar Kushwaha
@ 2012-03-06 14:40 ` Wolfgang Denk
  2012-03-07  4:00   ` Prabhakar Kushwaha
  2012-03-07  4:13   ` Prabhakar Kushwaha
  0 siblings, 2 replies; 6+ messages in thread
From: Wolfgang Denk @ 2012-03-06 14:40 UTC (permalink / raw)
  To: u-boot

Dear Prabhakar Kushwaha,

In message <1329296042-28506-1-git-send-email-prabhakar@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?

> 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?

>  #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?

Also, CONFIG_E500_V1_V2 is undocumented. 

Best regards,

Wolfgang Denk

-- 
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
"(The  Chief  Programmer)  personally  defines  the  functional   and
performance  specifications, designs the program, codes it, tests it,
and writes its documentation... He  needs  great  talent,  ten  years
experience  and  considerable  systems  and  applications  knowledge,
whether in applied mathematics, business data handling, or whatever."
- Fred P. Brooks, _The Mythical Man Month_

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [U-Boot] [PATCH 2/4] powerpc/85xx:Fix MSR[DE] bit in MSR to support debugger
  2012-03-06 14:40 ` Wolfgang Denk
@ 2012-03-07  4:00   ` Prabhakar Kushwaha
  2012-03-07 12:03     ` Wolfgang Denk
  2012-03-07  4:13   ` Prabhakar Kushwaha
  1 sibling, 1 reply; 6+ messages in thread
From: Prabhakar Kushwaha @ 2012-03-07  4:00 UTC (permalink / raw)
  To: u-boot

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@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

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [U-Boot] [PATCH 2/4] powerpc/85xx:Fix MSR[DE] bit in MSR to support debugger
  2012-03-06 14:40 ` Wolfgang Denk
  2012-03-07  4:00   ` Prabhakar Kushwaha
@ 2012-03-07  4:13   ` Prabhakar Kushwaha
  1 sibling, 0 replies; 6+ messages in thread
From: Prabhakar Kushwaha @ 2012-03-07  4:13 UTC (permalink / raw)
  To: u-boot

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@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

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [U-Boot] [PATCH 2/4] powerpc/85xx:Fix MSR[DE] bit in MSR to support debugger
  2012-03-07  4:00   ` Prabhakar Kushwaha
@ 2012-03-07 12:03     ` Wolfgang Denk
  2012-03-13  5:24       ` Prabhakar Kushwaha
  0 siblings, 1 reply; 6+ messages in thread
From: Wolfgang Denk @ 2012-03-07 12:03 UTC (permalink / raw)
  To: u-boot

Dear Prabhakar Kushwaha,

In message <4F56DD59.1080304@freescale.com> you wrote:
> 
> >> --- 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.

Sorry, this makes no sense to me.  The #ifdef does not change the
order of execution, it just enables or disables the code.  Are there
any situations where omitting this code is required, or where it makes
sense?

> >> @@ -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.

Please handle in a consistent way. See above.

> > Also, CONFIG_E500_V1_V2 is undocumented.
> 
> Definition of this #define is part of documentation. I will add comment 
> before using it.

CONFIG_ options must be explained in the README.

Best regards,

Wolfgang Denk

-- 
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
"I like your game but we have to change the rules."

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [U-Boot] [PATCH 2/4] powerpc/85xx:Fix MSR[DE] bit in MSR to support debugger
  2012-03-07 12:03     ` Wolfgang Denk
@ 2012-03-13  5:24       ` Prabhakar Kushwaha
  0 siblings, 0 replies; 6+ messages in thread
From: Prabhakar Kushwaha @ 2012-03-13  5:24 UTC (permalink / raw)
  To: u-boot

Hi Wolfgang,

Sorry for delayed response.

On Wednesday 07 March 2012 05:33 PM, Wolfgang Denk wrote:
> Dear Prabhakar Kushwaha,
>
> In message<4F56DD59.1080304@freescale.com>  you wrote:
>>>> --- 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.
> Sorry, this makes no sense to me.  The #ifdef does not change the
> order of execution, it just enables or disables the code.  Are there
> any situations where omitting this code is required, or where it makes
> sense?

OK.
after having internal discussion about different processor support. we 
can make this code permanently enabled.

>>>> @@ -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.
> Please handle in a consistent way. See above.

Sure,
I believe we should not have any #define for this piece of code to make 
it consistent across the file.

>>> Also, CONFIG_E500_V1_V2 is undocumented.
>> Definition of this #define is part of documentation. I will add comment
>> before using it.
> CONFIG_ options must be explained in the README.

I will take care of this

--Prabhakar

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2012-03-13  5:24 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-02-15  8:54 [U-Boot] [PATCH 2/4] powerpc/85xx:Fix MSR[DE] bit in MSR to support debugger Prabhakar Kushwaha
2012-03-06 14:40 ` Wolfgang Denk
2012-03-07  4:00   ` Prabhakar Kushwaha
2012-03-07 12:03     ` Wolfgang Denk
2012-03-13  5:24       ` Prabhakar Kushwaha
2012-03-07  4:13   ` Prabhakar Kushwaha

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox