diff --git a/arch/mips/cpu/u-boot.lds b/arch/mips/cpu/u-boot.lds
index 58a49b2137bf4a1bc912b41340ca388017d38d14..6980b86b9f2329d8354309813b6e2a6811fd5b1b 100644
--- a/arch/mips/cpu/u-boot.lds
+++ b/arch/mips/cpu/u-boot.lds
@@ -70,13 +70,14 @@ SECTIONS
 	uboot_end_data = .;
 
 	. = ALIGN(4);
-	.sbss : {
-		*(.sbss*)
-	}
-
 	.bss : {
-		*(.bss*)
+		__bss_start = .;
+		*(.sbss.*)
+		*(.bss.*)
+		*(COMMON)
 		. = ALIGN(4);
+		__bss_end = .;
 	}
+
 	uboot_end = .;
 }
diff --git a/arch/mips/include/asm/u-boot-mips.h b/arch/mips/include/asm/u-boot-mips.h
index 6f26dfac56cd90be16687edbf0f64205e35aaa23..eda04987342ad8bf2a73f3e8e3f8cf69603f3638 100644
--- a/arch/mips/include/asm/u-boot-mips.h
+++ b/arch/mips/include/asm/u-boot-mips.h
@@ -8,4 +8,16 @@
 extern ulong uboot_end_data;
 extern ulong uboot_end;
 
+static inline unsigned long bss_start(void)
+{
+	extern ulong __bss_start;
+	return (unsigned long) &__bss_start;
+}
+
+static inline unsigned long bss_end(void)
+{
+	extern ulong __bss_end;
+	return (unsigned long) &__bss_end;
+}
+
 extern int incaip_set_cpuclk(void);