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