diff options
author | David Woodhouse <dwmw2@infradead.org> | 2005-11-24 12:36:20 -0500 |
---|---|---|
committer | Paul Mackerras <paulus@samba.org> | 2006-01-08 22:50:48 -0500 |
commit | 623703f620453c798b6fa3eb79ad8ea27bfd302a (patch) | |
tree | e2f938f28a42458eb9b23d63721f7415d8239a37 /arch/powerpc/kernel | |
parent | 9687c587596b54a77f08620595f5686ea35eed97 (diff) |
[PATCH] Fix code that saves NVGPRS in 32-bit signal frame
On Thu, 2005-11-24 at 12:51 +0000, David Woodhouse wrote:
> Somehow this one slipped through the cracks; when we ended up in
> do_signal() on a 32-bit kernel but without having the caller-saved
> registers into the regs, we didn't set the TIF_SAVE_NVGPRS flag to
> ensure they got saved later.
Oh, and if we actually set the flag, then we fairly quickly find out
that I was a bit overzealous in copying code from entry_64.S ... :)
Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: Paul Mackerras <paulus@samba.org>
Diffstat (limited to 'arch/powerpc/kernel')
-rw-r--r-- | arch/powerpc/kernel/entry_32.S | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/arch/powerpc/kernel/entry_32.S b/arch/powerpc/kernel/entry_32.S index 8fed9538f188..036b71d2adfc 100644 --- a/arch/powerpc/kernel/entry_32.S +++ b/arch/powerpc/kernel/entry_32.S | |||
@@ -368,7 +368,7 @@ save_user_nvgprs_cont: | |||
368 | b 6b | 368 | b 6b |
369 | 369 | ||
370 | save_user_nvgprs: | 370 | save_user_nvgprs: |
371 | ld r8,TI_SIGFRAME(r12) | 371 | lwz r8,TI_SIGFRAME(r12) |
372 | 372 | ||
373 | .macro savewords start, end | 373 | .macro savewords start, end |
374 | 1: stw \start,4*(\start)(r8) | 374 | 1: stw \start,4*(\start)(r8) |
@@ -386,11 +386,11 @@ save_user_nvgprs: | |||
386 | 386 | ||
387 | save_user_nvgprs_fault: | 387 | save_user_nvgprs_fault: |
388 | li r3,11 /* SIGSEGV */ | 388 | li r3,11 /* SIGSEGV */ |
389 | ld r4,TI_TASK(r12) | 389 | lwz r4,TI_TASK(r12) |
390 | bl force_sigsegv | 390 | bl force_sigsegv |
391 | 391 | ||
392 | rlwinm r12,r1,0,0,(31-THREAD_SHIFT) /* current_thread_info() */ | 392 | rlwinm r12,r1,0,0,(31-THREAD_SHIFT) /* current_thread_info() */ |
393 | ld r9,TI_FLAGS(r12) | 393 | lwz r9,TI_FLAGS(r12) |
394 | b save_user_nvgprs_cont | 394 | b save_user_nvgprs_cont |
395 | 395 | ||
396 | #ifdef SHOW_SYSCALLS | 396 | #ifdef SHOW_SYSCALLS |