
From: Anton Blanchard <anton@samba.org>

Here are the ppc64 specific gcc 3.5 fixes.

Signed-off-by: Anton Blanchard <anton@samba.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
---

 25-akpm/arch/ppc64/kernel/open_pic_defs.h |    2 --
 25-akpm/arch/ppc64/kernel/signal32.c      |   25 +++++++++++++++++--------
 2 files changed, 17 insertions(+), 10 deletions(-)

diff -puN arch/ppc64/kernel/open_pic_defs.h~ppc64-gcc-35-fixes-2 arch/ppc64/kernel/open_pic_defs.h
--- 25/arch/ppc64/kernel/open_pic_defs.h~ppc64-gcc-35-fixes-2	2004-07-04 00:19:17.620362888 -0700
+++ 25-akpm/arch/ppc64/kernel/open_pic_defs.h	2004-07-04 00:19:17.626361976 -0700
@@ -172,8 +172,6 @@ struct OpenPIC {
 	OpenPIC_Processor Processor[OPENPIC_MAX_PROCESSORS];
 };
 
-extern volatile struct OpenPIC *OpenPIC;
-
 
 /*
  *  Current Task Priority Register
diff -puN arch/ppc64/kernel/signal32.c~ppc64-gcc-35-fixes-2 arch/ppc64/kernel/signal32.c
--- 25/arch/ppc64/kernel/signal32.c~ppc64-gcc-35-fixes-2	2004-07-04 00:19:17.622362584 -0700
+++ 25-akpm/arch/ppc64/kernel/signal32.c	2004-07-04 00:19:17.627361824 -0700
@@ -298,12 +298,15 @@ long sys32_sigaction(int sig, struct old
 
 	if (act) {
 		compat_old_sigset_t mask;
+		compat_uptr_t handler, restorer;
 
-		if (get_user((long)new_ka.sa.sa_handler, &act->sa_handler) ||
-		    __get_user((long)new_ka.sa.sa_restorer, &act->sa_restorer) ||
+		if (get_user(handler, &act->sa_handler) ||
+		    __get_user(restorer, &act->sa_restorer) ||
 		    __get_user(new_ka.sa.sa_flags, &act->sa_flags) ||
 		    __get_user(mask, &act->sa_mask))
 			return -EFAULT;
+		new_ka.sa.sa_handler = compat_ptr(handler);
+		new_ka.sa.sa_restorer = compat_ptr(restorer);
 		siginitset(&new_ka.sa.sa_mask, mask);
 	}
 
@@ -354,7 +357,10 @@ long sys32_rt_sigaction(int sig, const s
 		return -EINVAL;
 
 	if (act) {
-		ret = get_user((long)new_ka.sa.sa_handler, &act->sa_handler);
+		compat_uptr_t handler;
+
+		ret = get_user(handler, &act->sa_handler);
+		new_ka.sa.sa_handler = compat_ptr(handler);
 		ret |= __copy_from_user(&set32, &act->sa_mask,
 					sizeof(compat_sigset_t));
 		sigset_from_compat(&new_ka.sa.sa_mask, &set32);
@@ -596,6 +602,7 @@ int sys32_sigaltstack(u32 __new, u32 __o
 	int ret;
 	mm_segment_t old_fs;
 	unsigned long sp;
+	compat_uptr_t ss_sp;
 
 	/*
 	 * set sp to the user stack on entry to the system call
@@ -604,11 +611,13 @@ int sys32_sigaltstack(u32 __new, u32 __o
 	sp = regs->gpr[1];
 
 	/* Put new stack info in local 64 bit stack struct */
-	if (newstack &&
-		(get_user((long)uss.ss_sp, &newstack->ss_sp) ||
-		 __get_user(uss.ss_flags, &newstack->ss_flags) ||
-		 __get_user(uss.ss_size, &newstack->ss_size)))
-		return -EFAULT; 
+	if (newstack) {
+		if (get_user(ss_sp, &newstack->ss_sp) ||
+		    __get_user(uss.ss_flags, &newstack->ss_flags) ||
+		    __get_user(uss.ss_size, &newstack->ss_size))
+			return -EFAULT;
+		uss.ss_sp = compat_ptr(ss_sp);
+	}
 
 	old_fs = get_fs();
 	set_fs(KERNEL_DS);
_
