diff -urpN -X /home/fletch/.diff.exclude 502-ppc64-aio-32bit-emulation/arch/ppc64/kernel/sys_ppc32.c 503-ppc64-scruffiness/arch/ppc64/kernel/sys_ppc32.c
--- 502-ppc64-aio-32bit-emulation/arch/ppc64/kernel/sys_ppc32.c	Sun Apr 20 22:21:39 2003
+++ 503-ppc64-scruffiness/arch/ppc64/kernel/sys_ppc32.c	Sun Apr 20 22:21:40 2003
@@ -32,6 +32,7 @@
 #include <linux/shm.h>
 #include <linux/slab.h>
 #include <linux/uio.h>
+#include <linux/aio.h>
 #include <linux/nfs_fs.h>
 #include <linux/smb_fs.h>
 #include <linux/smb_mount.h>
@@ -2718,7 +2719,7 @@ long sys32_io_submit(aio_context_t ctx_i
 		struct iocb tmp;
 		u32 *user_iocb;
 
-		if (unlikely(__get_user(user_iocb, iocbpp + i))) {
+		if (unlikely(__get_user((u32)(long)user_iocb, iocbpp + i))) {
 			ret = -EFAULT;
 			break;
 		}
@@ -2728,7 +2729,7 @@ long sys32_io_submit(aio_context_t ctx_i
 			break;
 		}
 
-		ret = io_submit_one(ctx, user_iocb, &tmp);
+		ret = io_submit_one(ctx, (struct iocb *)user_iocb, &tmp);
 		if (ret)
 			break;
 	}
diff -urpN -X /home/fletch/.diff.exclude 502-ppc64-aio-32bit-emulation/include/linux/aio.h 503-ppc64-scruffiness/include/linux/aio.h
--- 502-ppc64-aio-32bit-emulation/include/linux/aio.h	Tue Apr  8 14:38:21 2003
+++ 503-ppc64-scruffiness/include/linux/aio.h	Sun Apr 20 22:21:40 2003
@@ -147,6 +147,9 @@ extern int FASTCALL(aio_complete(struct 
 extern void FASTCALL(__put_ioctx(struct kioctx *ctx));
 struct mm_struct;
 extern void FASTCALL(exit_aio(struct mm_struct *mm));
+extern struct kioctx *lookup_ioctx(unsigned long ctx_id);
+extern int FASTCALL(io_submit_one(struct kioctx *ctx,
+			struct iocb *user_iocb, struct iocb *iocb));
 
 /* semi private, but used by the 32bit emulations: */
 struct kioctx *lookup_ioctx(unsigned long ctx_id);