On Oct 28, 2010, at 3:50 AM, Roy Zang wrote: > 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 */
Can we use msr...@l instead of 0x200 > +#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 */ why do we need this code? It seems pretty fragile if its assuming something about TLB entry #8 > + 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