[PATCH] Fix code that saves NVGPRS in 32-bit signal frame
authorDavid Woodhouse <dwmw2@infradead.org>
Thu, 24 Nov 2005 17:36:20 +0000 (17:36 +0000)
committerPaul Mackerras <paulus@samba.org>
Mon, 9 Jan 2006 03:50:48 +0000 (14:50 +1100)
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>
arch/powerpc/kernel/entry_32.S

index 8fed9538f188c1fff4222bf40d965d61ab979103..036b71d2adfc191c0dd5e33be04264aae16894e0 100644 (file)
@@ -368,7 +368,7 @@ save_user_nvgprs_cont:
        b       6b
 
 save_user_nvgprs:
-       l     r8,TI_SIGFRAME(r12)
+       lwz     r8,TI_SIGFRAME(r12)
 
 .macro savewords start, end
   1:   stw \start,4*(\start)(r8)
@@ -386,11 +386,11 @@ save_user_nvgprs:
        
 save_user_nvgprs_fault:
        li      r3,11           /* SIGSEGV */
-       l     r4,TI_TASK(r12)
+       lwz     r4,TI_TASK(r12)
        bl      force_sigsegv
 
        rlwinm  r12,r1,0,0,(31-THREAD_SHIFT)    /* current_thread_info() */
-       l     r9,TI_FLAGS(r12)
+       lwz     r9,TI_FLAGS(r12)
        b       save_user_nvgprs_cont
        
 #ifdef SHOW_SYSCALLS