Commit e3839ed8 authored by Dongdong Deng's avatar Dongdong Deng Committed by Jason Wessel

kgdb,ppc: Fix regression in evr register handling

Commit ff10b88b (kgdb,ppc: Individual
register get/set for ppc) introduced a problem where memcpy was used
incorrectly to read and write the evr registers with a kernel that
has:

CONFIG_FSL_BOOKE=y
CONFIG_SPE=y
CONFIG_KGDB=y

This patch also fixes the following compilation problems:

arch/powerpc/kernel/kgdb.c: In function 'dbg_get_reg':
arch/powerpc/kernel/kgdb.c:341: error: passing argument 2 of 'memcpy' makes pointer from integer without a cast
arch/powerpc/kernel/kgdb.c: In function 'dbg_set_reg':
arch/powerpc/kernel/kgdb.c:366: error: passing argument 1 of 'memcpy' makes pointer from integer without a cast

[jason.wessel@windriver.com: Remove void * casts and fix patch header]
Reported-by: default avatarMilton Miller <miltonm@bga.com>
Signed-off-by: default avatarDongdong Deng <dongdong.deng@windriver.com>
Acked-by: default avatarKumar Gala <galak@kernel.crashing.org>
Signed-off-by: default avatarJason Wessel <jason.wessel@windriver.com>
CC: linuxppc-dev@lists.ozlabs.org
parent 10a6e676
...@@ -337,7 +337,7 @@ char *dbg_get_reg(int regno, void *mem, struct pt_regs *regs) ...@@ -337,7 +337,7 @@ char *dbg_get_reg(int regno, void *mem, struct pt_regs *regs)
/* FP registers 32 -> 63 */ /* FP registers 32 -> 63 */
#if defined(CONFIG_FSL_BOOKE) && defined(CONFIG_SPE) #if defined(CONFIG_FSL_BOOKE) && defined(CONFIG_SPE)
if (current) if (current)
memcpy(mem, current->thread.evr[regno-32], memcpy(mem, &current->thread.evr[regno-32],
dbg_reg_def[regno].size); dbg_reg_def[regno].size);
#else #else
/* fp registers not used by kernel, leave zero */ /* fp registers not used by kernel, leave zero */
...@@ -362,7 +362,7 @@ int dbg_set_reg(int regno, void *mem, struct pt_regs *regs) ...@@ -362,7 +362,7 @@ int dbg_set_reg(int regno, void *mem, struct pt_regs *regs)
if (regno >= 32 && regno < 64) { if (regno >= 32 && regno < 64) {
/* FP registers 32 -> 63 */ /* FP registers 32 -> 63 */
#if defined(CONFIG_FSL_BOOKE) && defined(CONFIG_SPE) #if defined(CONFIG_FSL_BOOKE) && defined(CONFIG_SPE)
memcpy(current->thread.evr[regno-32], mem, memcpy(&current->thread.evr[regno-32], mem,
dbg_reg_def[regno].size); dbg_reg_def[regno].size);
#else #else
/* fp registers not used by kernel, leave zero */ /* fp registers not used by kernel, leave zero */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment