From: Kumar Gala Some debug registers needed to be initialized early on to allow proper support for KGDB. Additionally, we need to setup the ppc.md_early_serial_map function pointer on boards that have serial support for KGDB. Signed-off-by: Kumar Gala Signed-off-by: Andrew Morton --- arch/ppc/kernel/head_fsl_booke.S | 15 ++++++++++++++- arch/ppc/platforms/85xx/mpc8540_ads.c | 3 +++ arch/ppc/platforms/85xx/mpc85xx_cds_common.c | 3 +++ arch/ppc/platforms/85xx/sbc8560.c | 3 +++ 4 files changed, 23 insertions(+), 1 deletion(-) diff -puN arch/ppc/kernel/head_fsl_booke.S~ppc32-fix-some-minor-issues-related-to-fsl-book-e-kgdb arch/ppc/kernel/head_fsl_booke.S --- 25/arch/ppc/kernel/head_fsl_booke.S~ppc32-fix-some-minor-issues-related-to-fsl-book-e-kgdb Tue May 17 17:00:07 2005 +++ 25-akpm/arch/ppc/kernel/head_fsl_booke.S Tue May 17 17:00:07 2005 @@ -232,7 +232,8 @@ skpinv: addi r6,r6,1 /* Increment */ tlbwe /* 7. Jump to KERNELBASE mapping */ - li r7,0 + lis r7,MSR_KERNEL@h + ori r7,r7,MSR_KERNEL@l bl 1f /* Find our address */ 1: mflr r9 rlwimi r6,r9,0,20,31 @@ -293,6 +294,18 @@ skpinv: addi r6,r6,1 /* Increment */ mtspr SPRN_HID0, r2 #endif +#if !defined(CONFIG_BDI_SWITCH) + /* + * The Abatron BDI JTAG debugger does not tolerate others + * mucking with the debug registers. + */ + lis r2,DBCR0_IDM@h + mtspr SPRN_DBCR0,r2 + /* clear any residual debug events */ + li r2,-1 + mtspr SPRN_DBSR,r2 +#endif + /* * This is where the main kernel code starts. */ diff -puN arch/ppc/platforms/85xx/mpc8540_ads.c~ppc32-fix-some-minor-issues-related-to-fsl-book-e-kgdb arch/ppc/platforms/85xx/mpc8540_ads.c --- 25/arch/ppc/platforms/85xx/mpc8540_ads.c~ppc32-fix-some-minor-issues-related-to-fsl-book-e-kgdb Tue May 17 17:00:07 2005 +++ 25-akpm/arch/ppc/platforms/85xx/mpc8540_ads.c Tue May 17 17:00:07 2005 @@ -210,6 +210,9 @@ platform_init(unsigned long r3, unsigned #if defined(CONFIG_SERIAL_8250) && defined(CONFIG_SERIAL_TEXT_DEBUG) ppc_md.progress = gen550_progress; #endif /* CONFIG_SERIAL_8250 && CONFIG_SERIAL_TEXT_DEBUG */ +#if defined(CONFIG_SERIAL_8250) && defined(CONFIG_KGDB) + ppc_md.early_serial_map = mpc85xx_early_serial_map; +#endif /* CONFIG_SERIAL_8250 && CONFIG_KGDB */ if (ppc_md.progress) ppc_md.progress("mpc8540ads_init(): exit", 0); diff -puN arch/ppc/platforms/85xx/mpc85xx_cds_common.c~ppc32-fix-some-minor-issues-related-to-fsl-book-e-kgdb arch/ppc/platforms/85xx/mpc85xx_cds_common.c --- 25/arch/ppc/platforms/85xx/mpc85xx_cds_common.c~ppc32-fix-some-minor-issues-related-to-fsl-book-e-kgdb Tue May 17 17:00:07 2005 +++ 25-akpm/arch/ppc/platforms/85xx/mpc85xx_cds_common.c Tue May 17 17:00:07 2005 @@ -459,6 +459,9 @@ platform_init(unsigned long r3, unsigned #if defined(CONFIG_SERIAL_8250) && defined(CONFIG_SERIAL_TEXT_DEBUG) ppc_md.progress = gen550_progress; #endif /* CONFIG_SERIAL_8250 && CONFIG_SERIAL_TEXT_DEBUG */ +#if defined(CONFIG_SERIAL_8250) && defined(CONFIG_KGDB) + ppc_md.early_serial_map = mpc85xx_early_serial_map; +#endif /* CONFIG_SERIAL_8250 && CONFIG_KGDB */ if (ppc_md.progress) ppc_md.progress("mpc85xx_cds_init(): exit", 0); diff -puN arch/ppc/platforms/85xx/sbc8560.c~ppc32-fix-some-minor-issues-related-to-fsl-book-e-kgdb arch/ppc/platforms/85xx/sbc8560.c --- 25/arch/ppc/platforms/85xx/sbc8560.c~ppc32-fix-some-minor-issues-related-to-fsl-book-e-kgdb Tue May 17 17:00:07 2005 +++ 25-akpm/arch/ppc/platforms/85xx/sbc8560.c Tue May 17 17:00:07 2005 @@ -221,6 +221,9 @@ platform_init(unsigned long r3, unsigned #if defined(CONFIG_SERIAL_8250) && defined(CONFIG_SERIAL_TEXT_DEBUG) ppc_md.progress = gen550_progress; #endif /* CONFIG_SERIAL_8250 && CONFIG_SERIAL_TEXT_DEBUG */ +#if defined(CONFIG_SERIAL_8250) && defined(CONFIG_KGDB) + ppc_md.early_serial_map = sbc8560_early_serial_map; +#endif /* CONFIG_SERIAL_8250 && CONFIG_KGDB */ if (ppc_md.progress) ppc_md.progress("sbc8560_init(): exit", 0); _