Re: [U-Boot] [PATCH 3/4] powerpc/85xx:Update NOR code base to support debugger

2012-03-12 Thread Prabhakar Kushwaha

Hi Wolfgang,

On Wednesday 07 March 2012 05:35 PM, Wolfgang Denk wrote:

Dear Prabhakar Kushwaha,

In message4f56deb0.6060...@freescale.com  you wrote:

+   _mas0 = MAS0_TLBSEL(1) |
+   MAS0_ESEL(CONFIG_DEBUGGER_TEMP_TLB);

You are using an undocumented CONFIG_ option here.

This CONFIG_ is defined as part of documentation patch sent in this series

CONFIG_ options must be documented in the README.


Sure


+#if defined(CONFIG_E500_V1_V2)   !defined(CONFIG_SYS_RAMBOOT)

What if no such debug support is needed, and code size hurts?

sure it will. I agree with you.
But this piece of code overcome debug restriction of e500 and e500v2
cores and  I think fixing restriction is a good way to go.

What do we do to disable this code if no debug support is needed, and
the code size is considered critical?


i will put this piece of code  under #if defined 
(CONFIG_DEBUGGER_TEMP_TLB).
This piece of code will only be enabled when someone wants debugging 
here. And the requirement is temporary TLB.



+#define CONFIG_DEBUGGER_TEMP_TLB   3

Undocumented!


This CONFIG_ is defined as part of documentation patch sent in this series

This is not sufficient, see above.


i will add the description.

Regards,
Prabhakar




___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


Re: [U-Boot] [PATCH 3/4] powerpc/85xx:Update NOR code base to support debugger

2012-03-07 Thread Wolfgang Denk
Dear Prabhakar Kushwaha,

In message 4f56deb0.6060...@freescale.com you wrote:
 
  +  _mas0 = MAS0_TLBSEL(1) |
  +  MAS0_ESEL(CONFIG_DEBUGGER_TEMP_TLB);
  You are using an undocumented CONFIG_ option here.
 
 This CONFIG_ is defined as part of documentation patch sent in this series

CONFIG_ options must be documented in the README.

  +#if defined(CONFIG_E500_V1_V2)  !defined(CONFIG_SYS_RAMBOOT)
  What if no such debug support is needed, and code size hurts?
 
 sure it will. I agree with you.
 But this piece of code overcome debug restriction of e500 and e500v2 
 cores and  I think fixing restriction is a good way to go.

What do we do to disable this code if no debug support is needed, and
the code size is considered critical?

  +#define CONFIG_DEBUGGER_TEMP_TLB  3
  Undocumented!
 
 This CONFIG_ is defined as part of documentation patch sent in this series

This is not sufficient, see above.

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: w...@denx.de
Virtue is a relative term.
-- Spock, Friday's Child, stardate 3499.1
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


Re: [U-Boot] [PATCH 3/4] powerpc/85xx:Update NOR code base to support debugger

2012-03-06 Thread Wolfgang Denk
Dear Prabhakar Kushwaha,

In message 1329296055-28541-1-git-send-email-prabha...@freescale.com you 
wrote:
 Update the NOR code base to support NOR-boot debugging.
 It ovecome e500 and e500v2's second limitation i.e. IVPR + IVOR15 should be
 valid fetchable OP code address.
 
 While executing in translated space (AS=1), whenever a debug exception is
 generated, the MSR[DS/IS] gets cleared and the processor tries to fetch an
 instruction from the debug exception vector (IVPR|IVOR15); since now we are in
 AS=0, the application needs to ensure the proper configuration to have
 IVOR|IVOR15 accessible from AS=0 also.
 
 Signed-off-by: Radu Lazarescu radu.lazare...@freescale.com
 Signed-off-by: Prabhakar Kushwaha prabha...@freescale.com
...
 + _mas0 = MAS0_TLBSEL(1) |
 + MAS0_ESEL(CONFIG_DEBUGGER_TEMP_TLB);

You are using an undocumented CONFIG_ option here.

 +++ b/arch/powerpc/cpu/mpc85xx/start.S
 @@ -184,6 +184,48 @@ l2_disabled:
   andi.   r1,r3,L1CSR0_DCE@l
   beq 2b
  
 +#if defined(CONFIG_E500_V1_V2)  !defined(CONFIG_SYS_RAMBOOT)

What if no such debug support is needed, and code size hurts?


 @@ -107,6 +107,7 @@
  #define CONFIG_MAX_CPUS  1
  #define CONFIG_FSL_SDHC_V2_3
  #define CONFIG_SYS_FSL_NUM_LAWS  12
 +#define CONFIG_DEBUGGER_TEMP_TLB 3

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: w...@denx.de
If at first you don't succeed, you are running about average.
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


Re: [U-Boot] [PATCH 3/4] powerpc/85xx:Update NOR code base to support debugger

2012-03-06 Thread Prabhakar Kushwaha

Hi Wolfgang,

On Tuesday 06 March 2012 08:15 PM, Wolfgang Denk wrote:

Dear Prabhakar Kushwaha,

In message1329296055-28541-1-git-send-email-prabha...@freescale.com  you 
wrote:

Update the NOR code base to support NOR-boot debugging.
It ovecome e500 and e500v2's second limitation i.e. IVPR + IVOR15 should be
valid fetchable OP code address.

While executing in translated space (AS=1), whenever a debug exception is
generated, the MSR[DS/IS] gets cleared and the processor tries to fetch an
instruction from the debug exception vector (IVPR|IVOR15); since now we are in
AS=0, the application needs to ensure the proper configuration to have
IVOR|IVOR15 accessible from AS=0 also.

Signed-off-by: Radu Lazarescuradu.lazare...@freescale.com
Signed-off-by: Prabhakar Kushwahaprabha...@freescale.com

...

+   _mas0 = MAS0_TLBSEL(1) |
+   MAS0_ESEL(CONFIG_DEBUGGER_TEMP_TLB);

You are using an undocumented CONFIG_ option here.


This CONFIG_ is defined as part of documentation patch sent in this series



+++ b/arch/powerpc/cpu/mpc85xx/start.S
@@ -184,6 +184,48 @@ l2_disabled:
andi.   r1,r3,L1CSR0_DCE@l
beq 2b

+#if defined(CONFIG_E500_V1_V2)  !defined(CONFIG_SYS_RAMBOOT)

What if no such debug support is needed, and code size hurts?



sure it will. I agree with you.
But this piece of code overcome debug restriction of e500 and e500v2 
cores and  I think fixing restriction is a good way to go.




@@ -107,6 +107,7 @@
  #define CONFIG_MAX_CPUS   1
  #define CONFIG_FSL_SDHC_V2_3
  #define CONFIG_SYS_FSL_NUM_LAWS   12
+#define CONFIG_DEBUGGER_TEMP_TLB   3

Undocumented!


This CONFIG_ is defined as part of documentation patch sent in this series

--Prabhakar


___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [PATCH 3/4] powerpc/85xx:Update NOR code base to support debugger

2012-02-15 Thread Prabhakar Kushwaha
Update the NOR code base to support NOR-boot debugging.
It ovecome e500 and e500v2's second limitation i.e. IVPR + IVOR15 should be
valid fetchable OP code address.

While executing in translated space (AS=1), whenever a debug exception is
generated, the MSR[DS/IS] gets cleared and the processor tries to fetch an
instruction from the debug exception vector (IVPR|IVOR15); since now we are in
AS=0, the application needs to ensure the proper configuration to have
IVOR|IVOR15 accessible from AS=0 also.

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

 arch/powerpc/cpu/mpc85xx/cpu_init_early.c |   32 +-
 arch/powerpc/cpu/mpc85xx/start.S  |   42 +
 arch/powerpc/include/asm/config_mpc85xx.h |3 +-
 3 files changed, 75 insertions(+), 2 deletions(-)

diff --git a/arch/powerpc/cpu/mpc85xx/cpu_init_early.c 
b/arch/powerpc/cpu/mpc85xx/cpu_init_early.c
index 091af7c..753f739 100644
--- a/arch/powerpc/cpu/mpc85xx/cpu_init_early.c
+++ b/arch/powerpc/cpu/mpc85xx/cpu_init_early.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2009-2011 Freescale Semiconductor, Inc
+ * Copyright 2009-2012 Freescale Semiconductor, Inc
  *
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU General Public License as
@@ -53,6 +53,36 @@ void setup_ifc(void)
 
asm volatile(isync;msync;tlbwe;isync);
 
+#if defined(CONFIG_E500_V1_V2)
+/*
+ * TLB for debuggging in AS1
+ * Create temporary TLB in AS0 to handle debug exception
+ * As on debug exception MSR is cleared i.e. Address space is changed
+ * to 0. A TLB (in AS0) is required to handle debug exception generated
+ * in AS1.
+ *
+ * TLB is created for IVPR + IVOR15 to map on valid OP code address
+ * bacause flash's physical address is going to change as
+ * CONFIG_SYS_FLASH_BASE_PHYS.
+ */
+   _mas0 = MAS0_TLBSEL(1) |
+   MAS0_ESEL(CONFIG_DEBUGGER_TEMP_TLB);
+   _mas1 = MAS1_VALID | MAS1_TID(0) | MAS1_IPROT |
+   MAS1_TSIZE(BOOKE_PAGESZ_4M);
+   _mas2 = FSL_BOOKE_MAS2(CONFIG_SYS_TEXT_BASE, MAS2_I|MAS2_G);
+   _mas3 = FSL_BOOKE_MAS3(flash_phys, 0, MAS3_SW|MAS3_SR|MAS3_SX);
+   _mas7 = FSL_BOOKE_MAS7(flash_phys);
+
+   mtspr(MAS0, _mas0);
+   mtspr(MAS1, _mas1);
+   mtspr(MAS2, _mas2);
+   mtspr(MAS3, _mas3);
+   mtspr(MAS7, _mas7);
+
+   asm volatile(isync;msync;tlbwe;isync);
+#endif
+
+   /* Change flash's physical address */
out_be32((ifc_regs-cspr_cs[0].cspr), CONFIG_SYS_CSPR0);
out_be32((ifc_regs-csor_cs[0].csor), CONFIG_SYS_CSOR0);
out_be32((ifc_regs-amask_cs[0].amask), CONFIG_SYS_AMASK0);
diff --git a/arch/powerpc/cpu/mpc85xx/start.S b/arch/powerpc/cpu/mpc85xx/start.S
index 09111e6..26c32df 100644
--- a/arch/powerpc/cpu/mpc85xx/start.S
+++ b/arch/powerpc/cpu/mpc85xx/start.S
@@ -184,6 +184,48 @@ l2_disabled:
andi.   r1,r3,L1CSR0_DCE@l
beq 2b
 
+#if defined(CONFIG_E500_V1_V2)  !defined(CONFIG_SYS_RAMBOOT)
+/*
+ * TLB for debuggging in AS1
+ * Create temporary TLB in AS0 to handle debug exception
+ * As on debug exception MSR is cleared i.e. Address space is changed
+ * to 0. A TLB (in AS0) is required to handle debug exception generated
+ * in AS1.
+ *
+ * TLB is created for IVPR + IVOR15 to map on valid OP code address
+ * bacause flash's virtual address maps to 0xff80 - 0x.
+ * and this window is outside of 4K boot window.
+ */
+
+   lis r6,FSL_BOOKE_MAS0(1,
+   CONFIG_DEBUGGER_TEMP_TLB, 0)@h
+   ori r6,r6,FSL_BOOKE_MAS0(1,
+   CONFIG_DEBUGGER_TEMP_TLB, 0)@l
+   lis r7,FSL_BOOKE_MAS1(1, 1, 0, 0, BOOKE_PAGESZ_4M)@h
+   ori r7,r7,FSL_BOOKE_MAS1(1, 1, 0, 0, BOOKE_PAGESZ_4M)@l
+
+   lis r8,FSL_BOOKE_MAS2(CONFIG_SYS_MONITOR_BASE  0xffc0,
+   (MAS2_I|MAS2_G))@h
+   ori r8,r8,FSL_BOOKE_MAS2(CONFIG_SYS_MONITOR_BASE  0xffc0,
+   (MAS2_I|MAS2_G))@l
+
+   /* The 85xx has the default boot window 0xff80 - 0x */
+   lis r9,FSL_BOOKE_MAS3(0xffc0, 0, (MAS3_SX|MAS3_SW|MAS3_SR))@h
+   ori r9,r9,FSL_BOOKE_MAS3(0xffc0, 0, (MAS3_SX|MAS3_SW|MAS3_SR))@l
+
+   lis r10,0xffc0@h
+   ori r10,r10,0xffc0@l
+
+   mtspr   MAS0,r6
+   mtspr   MAS1,r7
+   mtspr   MAS2,r8
+   mtspr   MAS3,r9
+   mtspr   MAS7,r10
+   isync
+   msync
+   tlbwe
+#endif
+
 /*
  * Ne need to setup interrupt vector for NAND SPL
  * because NAND SPL never compiles it.
diff --git a/arch/powerpc/include/asm/config_mpc85xx.h 
b/arch/powerpc/include/asm/config_mpc85xx.h
index 8654625..cf97844 100644
--- a/arch/powerpc/include/asm/config_mpc85xx.h
+++