machine-$(CONFIG_PLAT_VERSATILE)       += versatile
 machine-$(CONFIG_PLAT_SPEAR)           += spear
 
-# Platform directory name.  This list is sorted alphanumerically
-# by CONFIG_* macro name.
-plat-$(CONFIG_PLAT_ORION)      += orion
+# legacy platforms provide their own mach/*.h headers globally,
+# these three are mutually exclusive
+machdirs-$(CONFIG_ARCH_FOOTBRIDGE)     += arch/arm/mach-footbridge
+machdirs-$(CONFIG_ARCH_RPC)            += arch/arm/mach-rpc
+machdirs-$(CONFIG_ARCH_SA1100)         += arch/arm/mach-sa1100
+KBUILD_CPPFLAGS += $(patsubst %,-I$(srctree)/%/include,$(machdirs-y))
 
 # The byte offset of the kernel image in RAM from the start of RAM.
 TEXT_OFFSET := $(textofs-y)
 
-# The first directory contains additional information for the boot setup code
-ifneq ($(machine-y),)
-MACHINE  := arch/arm/mach-$(word 1,$(machine-y))/
-else
-MACHINE  :=
-endif
-ifeq ($(CONFIG_ARCH_MULTIPLATFORM),y)
-MACHINE  :=
-endif
-
-machdirs := $(patsubst %,arch/arm/mach-%/,$(machine-y))
-platdirs := $(patsubst %,arch/arm/plat-%/,$(sort $(plat-y)))
-
-ifneq ($(CONFIG_ARCH_MULTIPLATFORM),y)
-ifneq ($(CONFIG_ARM_SINGLE_ARMV7M),y)
-KBUILD_CPPFLAGS += $(patsubst %,-I$(srctree)/%include,$(machdirs) $(platdirs))
-endif
-endif
-
 export TEXT_OFFSET GZFLAGS MMUEXT
 
 # If we have a machine-specific directory, then include it in the build.
-core-y                         += $(machdirs) $(platdirs)
-
+core-y                         += $(patsubst %,arch/arm/mach-%/,$(machine-y))
 # For cleaning
-core-                          += $(patsubst %,arch/arm/mach-%/, $(machine-))
-core-                          += $(patsubst %,arch/arm/plat-%/, $(plat-))
+core-                          += $(patsubst %,arch/arm/mach-%/,$(machine-))
+
+core-$(CONFIG_PLAT_ORION)      += arch/arm/plat-orion/
 
 libs-y                         := arch/arm/lib/ $(libs-y)