diff --git a/Makefile b/Makefile
index 346ea27664de9268efed1621a1cc695579f1f4f1..0d160c9fda087adf2018d75217bab68bcdd57e53 100644
--- a/Makefile
+++ b/Makefile
@@ -1163,7 +1163,7 @@ prepare2: prepare3 outputmakefile
 
 prepare1: prepare2 $(version_h) $(timestamp_h) \
                    include/config/auto.conf
-ifeq ($(__HAVE_ARCH_GENERIC_BOARD),)
+ifeq ($(CONFIG_HAVE_GENERIC_BOARD),)
 ifeq ($(CONFIG_SYS_GENERIC_BOARD),y)
 	@echo >&2 "  Your architecture does not support generic board."
 	@echo >&2 "  Please undefine CONFIG_SYS_GENERIC_BOARD in your board config file."
diff --git a/README b/README
index b0124d6022e17b739fbb5778e748246b3e5b0ec5..5d57eb924ffc5c31af1b0a45383ffe330bb614c5 100644
--- a/README
+++ b/README
@@ -4190,9 +4190,9 @@ Configuration Settings:
 	to this new framework over time. Defining this will disable the
 	arch/foo/lib/board.c file and use common/board_f.c and
 	common/board_r.c instead. To use this option your architecture
-	must support it (i.e. must define __HAVE_ARCH_GENERIC_BOARD in
-	its config.mk file). If you find problems enabling this option on
-	your board please report the problem and send patches!
+	must support it (i.e. must select HAVE_GENERIC_BOARD in arch/Kconfig).
+	If you find problems enabling this option on your board please report
+	the problem and send patches!
 
 - CONFIG_OMAP_PLATFORM_RESET_TIME_MAX_USEC (OMAP only)
 	This is set by OMAP boards for the max time that reset should
diff --git a/arch/Kconfig b/arch/Kconfig
index 3d419bca3e3392a857700b25c8ad57d95c567f50..cdd166218fb1e364c5d0ff462d4a3ad8301809fd 100644
--- a/arch/Kconfig
+++ b/arch/Kconfig
@@ -1,3 +1,6 @@
+config HAVE_GENERIC_BOARD
+	bool
+
 choice
 	prompt "Architecture select"
 	default SANDBOX
@@ -5,34 +8,42 @@ choice
 config ARC
 	bool "ARC architecture"
 	select HAVE_PRIVATE_LIBGCC
+	select HAVE_GENERIC_BOARD
 
 config ARM
 	bool "ARM architecture"
 	select HAVE_PRIVATE_LIBGCC
+	select HAVE_GENERIC_BOARD
 	select SUPPORT_OF_CONTROL
 
 config AVR32
 	bool "AVR32 architecture"
+	select HAVE_GENERIC_BOARD
 
 config BLACKFIN
 	bool "Blackfin architecture"
+	select HAVE_GENERIC_BOARD
 
 config M68K
 	bool "M68000 architecture"
+	select HAVE_GENERIC_BOARD
 
 config MICROBLAZE
 	bool "MicroBlaze architecture"
+	select HAVE_GENERIC_BOARD
 	select SUPPORT_OF_CONTROL
 
 config MIPS
 	bool "MIPS architecture"
 	select HAVE_PRIVATE_LIBGCC
+	select HAVE_GENERIC_BOARD
 
 config NDS32
 	bool "NDS32 architecture"
 
 config NIOS2
 	bool "Nios II architecture"
+	select HAVE_GENERIC_BOARD
 
 config OPENRISC
 	bool "OpenRISC architecture"
@@ -40,10 +51,12 @@ config OPENRISC
 config PPC
 	bool "PowerPC architecture"
 	select HAVE_PRIVATE_LIBGCC
+	select HAVE_GENERIC_BOARD
 	select SUPPORT_OF_CONTROL
 
 config SANDBOX
 	bool "Sandbox"
+	select HAVE_GENERIC_BOARD
 	select SUPPORT_OF_CONTROL
 
 config SH
@@ -56,6 +69,7 @@ config SPARC
 config X86
 	bool "x86 architecture"
 	select HAVE_PRIVATE_LIBGCC
+	select HAVE_GENERIC_BOARD
 	select SUPPORT_OF_CONTROL
 
 endchoice
diff --git a/arch/arc/config.mk b/arch/arc/config.mk
index 4fcd4076c460de18b39fce0dd233d16bfcba1fb0..04c034b637e51b24de3e25d053612e7f2b3c5ae3 100644
--- a/arch/arc/config.mk
+++ b/arch/arc/config.mk
@@ -57,6 +57,3 @@ LDFLAGS_FINAL += -pie
 
 # Load address for standalone apps
 CONFIG_STANDALONE_LOAD_ADDR ?= 0x82000000
-
-# Support generic board on ARC
-__HAVE_ARCH_GENERIC_BOARD := y
diff --git a/arch/arm/config.mk b/arch/arm/config.mk
index 0667984b697d62845cb013ba3376cfc5ca01bbf3..c005ce490512492629670162ac4027367e9358fb 100644
--- a/arch/arm/config.mk
+++ b/arch/arm/config.mk
@@ -19,9 +19,6 @@ PLATFORM_RELFLAGS += -ffunction-sections -fdata-sections \
 PLATFORM_RELFLAGS += $(call cc-option, -msoft-float) \
       $(call cc-option,-mshort-load-bytes,$(call cc-option,-malignment-traps,))
 
-# Support generic board on ARM
-__HAVE_ARCH_GENERIC_BOARD := y
-
 PLATFORM_CPPFLAGS += -D__ARM__
 
 # Choose between ARM/Thumb instruction sets
diff --git a/arch/avr32/config.mk b/arch/avr32/config.mk
index 8252f598c3bdd9de371293d021e64f95c7485914..469185e8b44bcef8cc23e77e5a620f8feae8cbfb 100644
--- a/arch/avr32/config.mk
+++ b/arch/avr32/config.mk
@@ -9,9 +9,6 @@ ifeq ($(CROSS_COMPILE),)
 CROSS_COMPILE := avr32-linux-
 endif
 
-# avr32 has generic board support
-__HAVE_ARCH_GENERIC_BOARD := y
-
 CONFIG_STANDALONE_LOAD_ADDR ?= 0x00000000
 
 PLATFORM_RELFLAGS	+= -ffixed-r5 -fPIC -mno-init-got -mrelax
diff --git a/arch/blackfin/config.mk b/arch/blackfin/config.mk
index 584b38b17aa55068b46e538f0ec68b0c59e0856a..7b17b757438fa14cc04f44e5d1ecf450bb8eeddd 100644
--- a/arch/blackfin/config.mk
+++ b/arch/blackfin/config.mk
@@ -20,9 +20,6 @@ CONFIG_BFIN_CPU := $(strip $(CONFIG_BFIN_CPU:"%"=%))
 endif
 CONFIG_BFIN_BOOT_MODE := $(strip $(CONFIG_BFIN_BOOT_MODE:"%"=%))
 
-# Support generic board on Blackfin
-__HAVE_ARCH_GENERIC_BOARD := y
-
 PLATFORM_RELFLAGS += -ffixed-P3 -fomit-frame-pointer -mno-fdpic
 
 LDFLAGS_FINAL += --gc-sections
diff --git a/arch/m68k/config.mk b/arch/m68k/config.mk
index a629b68d6190a1227afc57d85d15b5102710b4a0..3b3a7e88ab6077eb9de13dcbc4e0073b1787194b 100644
--- a/arch/m68k/config.mk
+++ b/arch/m68k/config.mk
@@ -11,9 +11,6 @@ endif
 
 CONFIG_STANDALONE_LOAD_ADDR ?= 0x20000
 
-# Support generic board on m68k
-__HAVE_ARCH_GENERIC_BOARD := y
-
 PLATFORM_CPPFLAGS += -D__M68K__
 PLATFORM_LDFLAGS  += -n
 PLATFORM_RELFLAGS += -ffunction-sections -fdata-sections
diff --git a/arch/microblaze/config.mk b/arch/microblaze/config.mk
index 2b817be61a5dc254915886d603169ce89c046932..e7a347738a759ce4d5687ee14245cc0d4b51c123 100644
--- a/arch/microblaze/config.mk
+++ b/arch/microblaze/config.mk
@@ -19,4 +19,3 @@ PLATFORM_CPPFLAGS += -ffixed-r31 -D__microblaze__
 ifeq ($(CONFIG_SPL_BUILD),)
 PLATFORM_CPPFLAGS += -fPIC
 endif
-__HAVE_ARCH_GENERIC_BOARD := y
diff --git a/arch/mips/config.mk b/arch/mips/config.mk
index 4dc88f4d51f1903cab3658f5a16386be137df6ca..52e28f2ca5cc7e4fc16dd06e21bb251b0f824eb7 100644
--- a/arch/mips/config.mk
+++ b/arch/mips/config.mk
@@ -43,8 +43,6 @@ PLATFORM_CPPFLAGS += $(cpuflags-y)
 
 PLATFORM_CPPFLAGS += -D__MIPS__
 
-__HAVE_ARCH_GENERIC_BOARD := y
-
 #
 # From Linux arch/mips/Makefile
 #
diff --git a/arch/nios2/config.mk b/arch/nios2/config.mk
index 9b7c56dc8564f76972a85d2726d66461ad0c0641..82bd887961b65b5848b7e30e66cb11221eb38632 100644
--- a/arch/nios2/config.mk
+++ b/arch/nios2/config.mk
@@ -17,5 +17,3 @@ PLATFORM_CPPFLAGS += -G0
 
 LDFLAGS_FINAL += --gc-sections
 PLATFORM_RELFLAGS += -ffunction-sections -fdata-sections
-
-__HAVE_ARCH_GENERIC_BOARD := y
diff --git a/arch/powerpc/config.mk b/arch/powerpc/config.mk
index 411039649a07a0a4b2674e72b7d006d52df48020..83b49b58c54da331daceec004c4948e52201ba70 100644
--- a/arch/powerpc/config.mk
+++ b/arch/powerpc/config.mk
@@ -18,9 +18,6 @@ PLATFORM_RELFLAGS += -fpic -mrelocatable -ffunction-sections \
 PLATFORM_CPPFLAGS += -D__powerpc__ -ffixed-r2 -m32
 PLATFORM_LDFLAGS  += -m32 -melf32ppclinux
 
-# Support generic board on PPC
-__HAVE_ARCH_GENERIC_BOARD := y
-
 #
 # When cross-compiling on NetBSD, we have to define __PPC__ or else we
 # will pick up a va_list declaration that is incompatible with the
diff --git a/arch/sandbox/config.mk b/arch/sandbox/config.mk
index 7b84f02a0a29b55cec30c955a71aa83ac92e8921..e477a8400cd5b3275af9912be104b0ab05d3a54e 100644
--- a/arch/sandbox/config.mk
+++ b/arch/sandbox/config.mk
@@ -16,9 +16,6 @@ PLATFORM_CPPFLAGS += $(shell sdl-config --cflags)
 endif
 endif
 
-# Support generic board on sandbox
-__HAVE_ARCH_GENERIC_BOARD := y
-
 cmd_u-boot__ = $(CC) -o $@ -T u-boot.lds \
 	-Wl,--start-group $(u-boot-main) -Wl,--end-group \
 	$(PLATFORM_LIBS) -Wl,-Map -Wl,u-boot.map
diff --git a/arch/x86/config.mk b/arch/x86/config.mk
index bb2da4637e59afa7504f86a65ef5e7c28f0b0cee..999143e9df1f635d6a407dbdda775d9c94178d1a 100644
--- a/arch/x86/config.mk
+++ b/arch/x86/config.mk
@@ -17,9 +17,6 @@ PLATFORM_CPPFLAGS += $(PF_CPPFLAGS_X86)
 PLATFORM_CPPFLAGS += -fno-dwarf2-cfi-asm
 PLATFORM_CPPFLAGS += -march=i386 -m32
 
-# Support generic board on x86
-__HAVE_ARCH_GENERIC_BOARD := y
-
 PLATFORM_RELFLAGS += -ffunction-sections -fvisibility=hidden
 
 PLATFORM_LDFLAGS += --emit-relocs -Bsymbolic -Bsymbolic-functions -m elf_i386
diff --git a/doc/README.generic-board b/doc/README.generic-board
index 37c1b03ced9d4af2b92528ce589793abeb98525d..bd8eae1992c71f60a2a52fcc5cb7d4388a6ac7a5 100644
--- a/doc/README.generic-board
+++ b/doc/README.generic-board
@@ -44,16 +44,18 @@ The following architectures are supported now:
 
    arc
    arm
+   avr32
+   blackfin
+   m68k
+   microblaze
    mips
+   nios2
    powerpc
    sandbox
    x86
 
-If your architecture is not supported, you need to adjust your
-arch/<arch>/config.mk file to include:
-
-   __HAVE_ARCH_GENERIC_BOARD := y
-
+If your architecture is not supported, you need to select
+HAVE_GENERIC_BOARD in arch/Kconfig
 and test it with a suitable board, as follows.