diff --git a/rules.mk b/rules.mk
index 09b4f5447a9d6e56ab5ef3022375e6b49c4c5708..2e66bea4cfeba80e2b01bca636a2b6732c13b9d4 100644
--- a/rules.mk
+++ b/rules.mk
@@ -69,6 +69,9 @@ endif
 ifneq ($(findstring -march=armv5te,$(TARGET_OPTIMIZATION)),)
   ARCH_SUFFIX:=_v5te
 endif
+ifdef CONFIG_HAS_SPE_FPU
+  TARGET_SUFFIX:=$(TARGET_SUFFIX)spe
+endif
 
 DL_DIR:=$(if $(call qstrip,$(CONFIG_DOWNLOAD_FOLDER)),$(call qstrip,$(CONFIG_DOWNLOAD_FOLDER)),$(TOPDIR)/dl)
 BIN_DIR:=$(TOPDIR)/bin/$(BOARD)
diff --git a/scripts/metadata.pl b/scripts/metadata.pl
index 37c0a51ee796ee8989749442e6e4870f3f48e14f..9f06299aadac13a6ef8a2998e29dac1480d68148 100755
--- a/scripts/metadata.pl
+++ b/scripts/metadata.pl
@@ -168,6 +168,7 @@ sub target_config_features(@) {
 		/cpiogz/ and $ret .= "\tselect USES_CPIOGZ\n";
 		/ubifs/ and $ret .= "\tselect USES_UBIFS\n";
 		/fpu/ and $ret .= "\tselect HAS_FPU\n";
+		/spe_fpu/ and $ret .= "\tselect HAS_SPE_FPU\n";
 		/ramdisk/ and $ret .= "\tselect USES_INITRAMFS\n";
 		/powerpc64/ and $ret .= "\tselect powerpc64\n";
 		/nommu/ and $ret .= "\tselect NOMMU\n";
diff --git a/target/Config.in b/target/Config.in
index 226624564a284cccc48506d9fb32db93021c5fa8..9e0263e4c244b517e6771ad5713803959e4ad33f 100644
--- a/target/Config.in
+++ b/target/Config.in
@@ -2,6 +2,11 @@ source "tmp/.config-target.in"
 
 # Kernel/Hardware features
 
+config HAS_SPE_FPU
+	depends powerpc
+	select HAS_FPU
+	bool
+
 config HAS_FPU
 	bool
 
diff --git a/target/linux/mpc85xx/Makefile b/target/linux/mpc85xx/Makefile
index a441acf238de30cac990e604ce893cfe5858aae7..5488adc59156f5b533ec5f3caa6f558700e41228 100644
--- a/target/linux/mpc85xx/Makefile
+++ b/target/linux/mpc85xx/Makefile
@@ -10,7 +10,7 @@ ARCH:=powerpc
 BOARD:=mpc85xx
 BOARDNAME:=Freescale MPC85xx
 CFLAGS:=-Os -pipe -funit-at-a-time -mcpu=8540
-FEATURES:=fpu ramdisk broken
+FEATURES:=spe_fpu ramdisk broken
 MAINTAINER:=Imre Kaloz <kaloz@openwrt.org>
 
 LINUX_VERSION:=2.6.36.2