CodeWarrior is popular embedded tools to support debugging Powerpc.
This patch adds Freescale CodeWarrior debug support for Linux kernel on
85xx/QorIQ platform.

Signed-off-by: Bogdan Adrin <drian.bog...@freescale.com>
Signed-off-by: Roy Zang <tie-fei.z...@freescale.com>
---
 arch/powerpc/Kconfig.debug                    |    8 ++++++++
 arch/powerpc/Makefile                         |    5 +++++
 arch/powerpc/include/asm/reg_booke.h          |    4 ++++
 arch/powerpc/kernel/fsl_booke_entry_mapping.S |    3 +++
 arch/powerpc/kernel/head_fsl_booke.S          |   11 +++++++++--
 arch/powerpc/kernel/idle.c                    |    5 ++++-
 6 files changed, 33 insertions(+), 3 deletions(-)

diff --git a/arch/powerpc/Kconfig.debug b/arch/powerpc/Kconfig.debug
index 2d38a50..eedd2ac 100644
--- a/arch/powerpc/Kconfig.debug
+++ b/arch/powerpc/Kconfig.debug
@@ -153,6 +153,14 @@ config BDI_SWITCH
          Unless you are intending to debug the kernel with one of these
          machines, say N here.
 
+config DEBUG_CODEWARRIOR
+       bool "Include CodeWarrior kernel debugging"
+       depends on DEBUG_KERNEL && PPC32
+       help
+         Say Y here to include CodeWarrior kernel debugging option
+         Unless you are intending to debug the kernel with one of these
+         machines, say N here.
+
 config BOOTX_TEXT
        bool "Support for early boot text console (BootX or OpenFirmware only)"
        depends on PPC_OF && PPC_BOOK3S
diff --git a/arch/powerpc/Makefile b/arch/powerpc/Makefile
index b7212b6..d3050e6 100644
--- a/arch/powerpc/Makefile
+++ b/arch/powerpc/Makefile
@@ -121,6 +121,11 @@ KBUILD_CFLAGS      += $(call cc-option,-fno-dwarf2-cfi-asm)
 # often slow when they are implemented at all
 KBUILD_CFLAGS          += -mno-string
 
+ifeq ($(CONFIG_DEBUG_CODEWARRIOR),y)
+CFLAGS += -g2 -gdwarf-2
+AFLAGS_KERNEL += -Wa,-gdwarf2
+endif
+
 ifeq ($(CONFIG_6xx),y)
 KBUILD_CFLAGS          += -mcpu=powerpc
 endif
diff --git a/arch/powerpc/include/asm/reg_booke.h 
b/arch/powerpc/include/asm/reg_booke.h
index 667a498..ac65fcd 100644
--- a/arch/powerpc/include/asm/reg_booke.h
+++ b/arch/powerpc/include/asm/reg_booke.h
@@ -35,7 +35,11 @@
 #define MSR_KERNEL     (MSR_ME|MSR_RI|MSR_IR|MSR_DR|MSR_CE)
 #define MSR_USER       (MSR_KERNEL|MSR_PR|MSR_EE)
 #else
+#if defined(CONFIG_DEBUG_CODEWARRIOR)
+#define MSR_KERNEL     (MSR_ME|MSR_RI|MSR_CE|MSR_DE)
+#else
 #define MSR_KERNEL     (MSR_ME|MSR_RI|MSR_CE)
+#endif
 #define MSR_USER       (MSR_KERNEL|MSR_PR|MSR_EE)
 #endif
 
diff --git a/arch/powerpc/kernel/fsl_booke_entry_mapping.S 
b/arch/powerpc/kernel/fsl_booke_entry_mapping.S
index a92c79b..9102aa7 100644
--- a/arch/powerpc/kernel/fsl_booke_entry_mapping.S
+++ b/arch/powerpc/kernel/fsl_booke_entry_mapping.S
@@ -116,6 +116,9 @@ skpinv:     addi    r6,r6,1                         /* 
Increment */
 
        xori    r6,r4,1
        slwi    r6,r6,5         /* setup new context with other address space */
+#if defined(CONFIG_DEBUG_CODEWARRIOR)
+       ori     r6, r6, 0x200   /* enable DE bit for MSR */
+#endif
        bl      1f              /* Find our address */
 1:     mflr    r9
        rlwimi  r7,r9,0,20,31
diff --git a/arch/powerpc/kernel/head_fsl_booke.S 
b/arch/powerpc/kernel/head_fsl_booke.S
index 529b817..9962d09 100644
--- a/arch/powerpc/kernel/head_fsl_booke.S
+++ b/arch/powerpc/kernel/head_fsl_booke.S
@@ -21,7 +21,7 @@
  *             debbie_...@mvista.com
  *    Copyright 2002-2004 MontaVista Software, Inc.
  *     PowerPC 44x support, Matt Porter <mpor...@kernel.crashing.org>
- *    Copyright 2004 Freescale Semiconductor, Inc
+ *    Copyright 2004,2010 Freescale Semiconductor, Inc
  *     PowerPC e500 modifications, Kumar Gala <ga...@kernel.crashing.org>
  *
  * This program is free software; you can redistribute  it and/or modify it
@@ -135,7 +135,7 @@ _ENTRY(__early_start)
        mtspr   SPRN_HID0, r2
 #endif
 
-#if !defined(CONFIG_BDI_SWITCH)
+#if !defined(CONFIG_BDI_SWITCH) && !defined(CONFIG_DEBUG_CODEWARRIOR)
        /*
         * The Abatron BDI JTAG debugger does not tolerate others
         * mucking with the debug registers.
@@ -197,6 +197,13 @@ _ENTRY(__early_start)
 /*
  * Decide what sort of machine this is and initialize the MMU.
  */
+#if defined(CONFIG_DEBUG_CODEWARRIOR)
+       lis     r10, 0x1008 /* clear the V bit from the L2MMU_CAM8 register */
+       mtspr   SPRN_MAS0, r10
+       lis     r10, 0x0
+       mtspr   SPRN_MAS1, r10
+       tlbwe
+#endif
        mr      r3,r31
        mr      r4,r30
        mr      r5,r29
diff --git a/arch/powerpc/kernel/idle.c b/arch/powerpc/kernel/idle.c
index 39a2baa..83fb019 100644
--- a/arch/powerpc/kernel/idle.c
+++ b/arch/powerpc/kernel/idle.c
@@ -73,8 +73,11 @@ void cpu_idle(void)
                                stop_critical_timings();
 
                                /* check again after disabling irqs */
-                               if (!need_resched() && !cpu_should_die())
+                               if (!need_resched() && !cpu_should_die()) {
+#if !defined(CONFIG_DEBUG_CODEWARRIOR)
                                        ppc_md.power_save();
+#endif
+                               }
 
                                start_critical_timings();
 
-- 
1.5.6.5


_______________________________________________
Linuxppc-dev mailing list
Linuxppc-dev@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/linuxppc-dev

Reply via email to