diff --git a/arch/sparc/include/asm/Kbuild b/arch/sparc/include/asm/Kbuild
index 58f9b3a..aeaec45 100644
--- a/arch/sparc/include/asm/Kbuild
+++ b/arch/sparc/include/asm/Kbuild
@@ -1,9 +1,6 @@
 # User exported sparc header files
 include include/asm-generic/Kbuild.asm
 
-header-y += ipcbuf_32.h
-header-y += ipcbuf_64.h
-
 header-y += apc.h
 header-y += asi.h
 header-y += display7seg.h
diff --git a/arch/sparc/include/asm/ipcbuf_64.h b/arch/sparc/include/asm/ipcbuf.h
similarity index 56%
rename from arch/sparc/include/asm/ipcbuf_64.h
rename to arch/sparc/include/asm/ipcbuf.h
index a44b855..66013b4 100644
--- a/arch/sparc/include/asm/ipcbuf_64.h
+++ b/arch/sparc/include/asm/ipcbuf.h
@@ -1,13 +1,14 @@
-#ifndef _SPARC64_IPCBUF_H
-#define _SPARC64_IPCBUF_H
+#ifndef __SPARC_IPCBUF_H
+#define __SPARC_IPCBUF_H
 
 /*
- * The ipc64_perm structure for sparc64 architecture.
+ * The ipc64_perm structure for sparc/sparc64 architecture.
  * Note extra padding because this structure is passed back and forth
  * between kernel and user space.
  *
  * Pad space is left for:
  * - 32-bit seq
+ * - on sparc for 32 bit mode (it is 32 bit on sparc64)
  * - 2 miscellaneous 64-bit values
  */
 
@@ -18,11 +19,14 @@ struct ipc64_perm
 	__kernel_gid_t	gid;
 	__kernel_uid_t	cuid;
 	__kernel_gid_t	cgid;
+#ifndef __arch64__
+	unsigned short	__pad0;
+#endif
 	__kernel_mode_t	mode;
 	unsigned short	__pad1;
 	unsigned short	seq;
-	unsigned long	__unused1;
-	unsigned long	__unused2;
+	unsigned long long __unused1;
+	unsigned long long __unused2;
 };
 
-#endif /* _SPARC64_IPCBUF_H */
+#endif /* __SPARC_IPCBUF_H */
diff --git a/arch/sparc/include/asm/ipcbuf_32.h b/arch/sparc/include/asm/ipcbuf_32.h
deleted file mode 100644
index 6387209..0000000
--- a/arch/sparc/include/asm/ipcbuf_32.h
+++ /dev/null
@@ -1,31 +0,0 @@
-#ifndef _SPARC_IPCBUF_H
-#define _SPARC_IPCBUF_H
-
-/*
- * The ipc64_perm structure for sparc architecture.
- * Note extra padding because this structure is passed back and forth
- * between kernel and user space.
- *
- * Pad space is left for:
- * - 32-bit mode
- * - 32-bit seq
- * - 2 miscellaneous 64-bit values (so that this structure matches
- *				    sparc64 ipc64_perm)
- */
-
-struct ipc64_perm
-{
-	__kernel_key_t		key;
-	__kernel_uid32_t	uid;
-	__kernel_gid32_t	gid;
-	__kernel_uid32_t	cuid;
-	__kernel_gid32_t	cgid;
-	unsigned short		__pad1;
-	__kernel_mode_t		mode;
-	unsigned short		__pad2;
-	unsigned short		seq;
-	unsigned long long	__unused1;
-	unsigned long long	__unused2;
-};
-
-#endif /* _SPARC_IPCBUF_H */
