Index: arch/mips32/include/mm/tlb.h
===================================================================
--- arch/mips32/include/mm/tlb.h	(revision c1e43e44606c21c846afd41392f15d5b46968466)
+++ arch/mips32/include/mm/tlb.h	(revision f15fe510b6680dc559288bb3737f86ce2116b403)
@@ -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;
