Index: arch/mips32/include/mm/tlb.h
===================================================================
--- arch/mips32/include/mm/tlb.h	(revision ecbdc7245534ef719f1c33d657c2cee6ab034ab6)
+++ arch/mips32/include/mm/tlb.h	(revision ede493eb5d01ca9729939a58af2ac8b3c4bae002)
@@ -54,4 +54,12 @@
 union entry_lo {
 	struct {
+#ifdef BIG_ENDIAN
+		unsigned : 2;		/* zero */
+		unsigned pfn : 24;	/* frame number */
+		unsigned c : 3; 	/* cache coherency attribute */
+		unsigned d : 1; 	/* dirty/write-protect bit */
+		unsigned v : 1; 	/* valid bit */
+		unsigned g : 1; 	/* global bit */
+#else
 		unsigned g : 1; 	/* global bit */
 		unsigned v : 1; 	/* valid bit */
@@ -60,4 +68,5 @@
 		unsigned pfn : 24;	/* frame number */
 		unsigned : 2;		/* zero */
+#endif
 	} __attribute__ ((packed));
 	__u32 value;
@@ -66,4 +75,15 @@
 /** Page Table Entry. */
 struct pte {
+#ifdef BIG_ENDIAN
+	unsigned a : 1;			/**< Accessed bit. */
+	unsigned w : 1;			/**< Page writable bit. */
+	unsigned pfn : 24;		/**< Physical frame number. */
+	unsigned soft_valid : 1;	/**< Valid content even if not present. */
+	unsigned : 1;			/**< Unused. */
+	unsigned cacheable : 1;		/**< Cacheable bit. */
+	unsigned d : 1;			/**< Dirty bit. */
+	unsigned p : 1;			/**< Present bit. */
+	unsigned g : 1;			/**< Global bit. */
+#else
 	unsigned g : 1;			/**< Global bit. */
 	unsigned p : 1;			/**< Present bit. */
@@ -75,11 +95,18 @@
 	unsigned w : 1;			/**< Page writable bit. */
 	unsigned a : 1;			/**< Accessed bit. */
+#endif
 };
 
 union entry_hi {
 	struct {
+#ifdef BIG_ENDIAN
+		unsigned vpn2 : 19;
+		unsigned : 5;
+		unsigned asid : 8;
+#else
 		unsigned asid : 8;
 		unsigned : 5;
 		unsigned vpn2 : 19;
+#endif
 	} __attribute__ ((packed));
 	__u32 value;
@@ -88,7 +115,13 @@
 union page_mask {
 	struct {
+#ifdef BIG_ENDIAN
+		unsigned : 7;
+		unsigned mask : 12;
+		unsigned : 13;
+#else
 		unsigned : 13;
 		unsigned mask : 12;
 		unsigned : 7;
+#endif
 	} __attribute__ ((packed));
 	__u32 value;
@@ -97,7 +130,13 @@
 union index {
 	struct {
+#ifdef BIG_ENDIAN
+		unsigned p : 1;
+		unsigned : 27;
+		unsigned index : 4;
+#else
 		unsigned index : 4;
 		unsigned : 27;
 		unsigned p : 1;
+#endif
 	} __attribute__ ((packed));
 	__u32 value;
