diff --git a/arch/nios2/cpu/start.S b/arch/nios2/cpu/start.S
index 5c7074e09c192fc877b47b00795a88886366e3c5..6c7c7770441bc88c7f4704280055263ba81c3682 100644
--- a/arch/nios2/cpu/start.S
+++ b/arch/nios2/cpu/start.S
@@ -120,6 +120,16 @@ _reloc:
 	stw	r0, 4(sp)
 	mov	fp, sp
 
+	/* Allocate and zero GD, update SP */
+	mov	r4, sp
+	movhi	r2, %hi(board_init_f_mem@h)
+	ori	r2, r2, %lo(board_init_f_mem@h)
+	callr	r2
+
+	/* Update stack- and frame-pointers */
+	mov	sp, r2
+	mov	fp, sp
+
 	/*
 	 * Call board_init_f -- never returns
 	 */
diff --git a/arch/nios2/include/asm/config.h b/arch/nios2/include/asm/config.h
index 9c13848ea2b93d4e072304ce24cfc26e4a8b1c2d..cd29734789449b2cd0a0a006a821af9cf897e0d1 100644
--- a/arch/nios2/include/asm/config.h
+++ b/arch/nios2/include/asm/config.h
@@ -7,6 +7,4 @@
 #ifndef _ASM_CONFIG_H_
 #define _ASM_CONFIG_H_
 
-#define CONFIG_SYS_GENERIC_GLOBAL_DATA
-
 #endif