diff options
| author | Dongdong Deng <dongdong.deng@windriver.com> | 2010-11-16 17:02:00 -0500 |
|---|---|---|
| committer | Jason Wessel <jason.wessel@windriver.com> | 2010-11-17 14:54:58 -0500 |
| commit | e3839ed8e89e79202c0402ac46965c0686897890 (patch) | |
| tree | 778ff1c52fa26fe515006b2bafcaba24480ba696 | |
| parent | 10a6e67648d4b47769953bd24759ba9609bf00df (diff) | |
kgdb,ppc: Fix regression in evr register handling
Commit ff10b88b5a05c8f1646dd15fb9f6093c1384ff6d (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: Milton Miller <miltonm@bga.com>
Signed-off-by: Dongdong Deng <dongdong.deng@windriver.com>
Acked-by: Kumar Gala <galak@kernel.crashing.org>
Signed-off-by: Jason Wessel <jason.wessel@windriver.com>
CC: linuxppc-dev@lists.ozlabs.org
| -rw-r--r-- | arch/powerpc/kernel/kgdb.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/arch/powerpc/kernel/kgdb.c b/arch/powerpc/kernel/kgdb.c index 7a9db64f3f04..42850ee00ada 100644 --- a/arch/powerpc/kernel/kgdb.c +++ b/arch/powerpc/kernel/kgdb.c | |||
| @@ -337,7 +337,7 @@ char *dbg_get_reg(int regno, void *mem, struct pt_regs *regs) | |||
| 337 | /* FP registers 32 -> 63 */ | 337 | /* FP registers 32 -> 63 */ |
| 338 | #if defined(CONFIG_FSL_BOOKE) && defined(CONFIG_SPE) | 338 | #if defined(CONFIG_FSL_BOOKE) && defined(CONFIG_SPE) |
| 339 | if (current) | 339 | if (current) |
| 340 | memcpy(mem, current->thread.evr[regno-32], | 340 | memcpy(mem, ¤t->thread.evr[regno-32], |
| 341 | dbg_reg_def[regno].size); | 341 | dbg_reg_def[regno].size); |
| 342 | #else | 342 | #else |
| 343 | /* fp registers not used by kernel, leave zero */ | 343 | /* 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 | if (regno >= 32 && regno < 64) { | 362 | if (regno >= 32 && regno < 64) { |
| 363 | /* FP registers 32 -> 63 */ | 363 | /* FP registers 32 -> 63 */ |
| 364 | #if defined(CONFIG_FSL_BOOKE) && defined(CONFIG_SPE) | 364 | #if defined(CONFIG_FSL_BOOKE) && defined(CONFIG_SPE) |
| 365 | memcpy(current->thread.evr[regno-32], mem, | 365 | memcpy(¤t->thread.evr[regno-32], mem, |
| 366 | dbg_reg_def[regno].size); | 366 | dbg_reg_def[regno].size); |
| 367 | #else | 367 | #else |
| 368 | /* fp registers not used by kernel, leave zero */ | 368 | /* fp registers not used by kernel, leave zero */ |
