diff --git a/br-ext/configs/toolchain-aarch32-legacy b/br-ext/configs/toolchain-aarch32-legacy
new file mode 100644
index 0000000000000000000000000000000000000000..fdc1496568f3e907e287f6b504ed0dbc5933e2ae
--- /dev/null
+++ b/br-ext/configs/toolchain-aarch32-legacy
@@ -0,0 +1,9 @@
+BR2_TOOLCHAIN_EXTERNAL=y
+BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y
+BR2_TOOLCHAIN_EXTERNAL_PATH="%TOP_DIR%/toolchains/aarch32-legacy"
+BR2_TOOLCHAIN_EXTERNAL_CUSTOM_PREFIX="arm-linux-gnueabihf"
+BR2_TOOLCHAIN_EXTERNAL_GCC_4_9=y
+BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_17=y
+BR2_TOOLCHAIN_EXTERNAL_CUSTOM_GLIBC=y
+BR2_TOOLCHAIN_EXTERNAL_CXX=y
+
diff --git a/common.mk b/common.mk
index 812bbe7389ed901816ea07fb37a0fc2222845525..3e5dc54b9f3e97e33a81ec52b26d0756183521f5 100644
--- a/common.mk
+++ b/common.mk
@@ -109,10 +109,19 @@ endif
 ################################################################################
 # set the compiler when COMPILE_xxx are defined
 ################################################################################
+
+
+ifeq ($(COMPILE_LEGACY),)
 CROSS_COMPILE_NS_USER   ?= "$(CCACHE)$(AARCH$(COMPILE_NS_USER)_CROSS_COMPILE)"
 CROSS_COMPILE_NS_KERNEL ?= "$(CCACHE)$(AARCH$(COMPILE_NS_KERNEL)_CROSS_COMPILE)"
 CROSS_COMPILE_S_USER    ?= "$(CCACHE)$(AARCH$(COMPILE_S_USER)_CROSS_COMPILE)"
 CROSS_COMPILE_S_KERNEL  ?= "$(CCACHE)$(AARCH$(COMPILE_S_KERNEL)_CROSS_COMPILE)"
+else
+CROSS_COMPILE_NS_USER   ?= "$(CCACHE)$(LEGACY_AARCH$(COMPILE_NS_USER)_CROSS_COMPILE)"
+CROSS_COMPILE_NS_KERNEL ?= "$(CCACHE)$(LEGACY_AARCH$(COMPILE_NS_KERNEL)_CROSS_COMPILE)"
+CROSS_COMPILE_S_USER    ?= "$(CCACHE)$(LEGACY_AARCH$(COMPILE_S_USER)_CROSS_COMPILE)"
+CROSS_COMPILE_S_KERNEL  ?= "$(CCACHE)$(LEGACY_AARCH$(COMPILE_S_KERNEL)_CROSS_COMPILE)"
+endif
 
 ifeq ($(COMPILE_S_USER),32)
 OPTEE_OS_TA_DEV_KIT_DIR	?= $(OPTEE_OS_PATH)/out/arm/export-ta_arm32
@@ -176,6 +185,11 @@ busybox-cleaner-common:
 # Build root
 ################################################################################
 BUILDROOT_ARCH=aarch$(COMPILE_NS_USER)
+ifeq ($(COMPILE_LEGACY),)
+BUILDROOT_TOOLCHAIN=toolchain-aarch$(COMPILE_NS_USER)
+else
+BUILDROOT_TOOLCHAIN=toolchain-aarch$(COMPILE_NS_USER)-legacy
+endif
 BUILDROOT_GETTY_PORT ?= \
 	$(if $(CFG_NW_CONSOLE_UART),ttyAMA$(CFG_NW_CONSOLE_UART),ttyAMA0)
 .PHONY: buildroot
@@ -213,7 +227,7 @@ endif
 		--top-dir "$(ROOT)" \
 		--br-defconfig build/br-ext/configs/optee_$(BUILDROOT_ARCH) \
 		--br-defconfig build/br-ext/configs/optee_generic \
-		--br-defconfig build/br-ext/configs/toolchain-$(BUILDROOT_ARCH)\
+		--br-defconfig build/br-ext/configs/$(BUILDROOT_TOOLCHAIN) \
 		--br-defconfig out-br/extra.conf \
 		--make-cmd $(MAKE))
 	@$(MAKE) -C ../out-br all
diff --git a/toolchain.mk b/toolchain.mk
index 331b8b210cf03668cb76865d64c96ef25c9671d2..bd7abcf7496d9f058bfad3307b02675c2a0d93aa 100644
--- a/toolchain.mk
+++ b/toolchain.mk
@@ -21,6 +21,12 @@ LEGACY_AARCH64_CROSS_COMPILE    ?= $(LEGACY_AARCH64_PATH)/bin/aarch64-linux-gnu-
 LEGACY_AARCH64_GCC_VERSION      ?= gcc-linaro-aarch64-linux-gnu-4.9-2014.08_linux
 LEGACY_SRC_AARCH64_GCC          ?= https://releases.linaro.org/archive/14.08/components/toolchain/binaries/${LEGACY_AARCH64_GCC_VERSION}.tar.xz
 
+LEGACY_AARCH32_PATH             ?= $(TOOLCHAIN_ROOT)/aarch32-legacy
+LEGACY_AARCH32_CROSS_COMPILE    ?= $(LEGACY_AARCH32_PATH)/bin/arm-linux-gnueabihf-
+LEGACY_AARCH32_GCC_VERSION      ?= gcc-linaro-4.9-2015.02-3-x86_64_arm-linux-gnueabihf
+LEGACY_SRC_AARCH32_GCC          ?= https://releases.linaro.org/archive/15.02/components/toolchain/binaries/arm-linux-gnueabihf/${LEGACY_AARCH32_GCC_VERSION}.tar.xz
+
+
 # Download toolchain macro for saving some repetition
 # $(1) is $AARCH.._PATH		: i.e., path to the destination
 # $(2) is $SRC_AARCH.._GCC	: is the downloaded tar.gz file
@@ -35,7 +41,7 @@ define dltc
 endef
 
 .PHONY: toolchains
-toolchains: aarch32 aarch64 aarch64-legacy
+toolchains: aarch32 aarch64 aarch64-legacy aarch32-legacy
 
 .PHONY: aarch32
 aarch32:
@@ -49,3 +55,7 @@ aarch64:
 aarch64-legacy:
 	$(call dltc,$(LEGACY_AARCH64_PATH),$(LEGACY_SRC_AARCH64_GCC),$(LEGACY_AARCH64_GCC_VERSION))
 
+.PHONY: aarch32-legacy
+aarch32-legacy:
+	$(call dltc,$(LEGACY_AARCH32_PATH),$(LEGACY_SRC_AARCH32_GCC),$(LEGACY_AARCH32_GCC_VERSION))
+