diff --git a/hikey.mk b/hikey.mk
index ce53e3481f5eca9279e400e991c42acec48a0d83..a47246d1b550d5c05a078e532fb6e67681900ec2 100644
--- a/hikey.mk
+++ b/hikey.mk
@@ -363,35 +363,16 @@ atf-fb-clean:
 ################################################################################
 # l-loader
 ################################################################################
-.PHONY: lloader-bin
-lloader-bin: arm-tf atf-fb
+.PHONY: lloader
+lloader:
 	cd $(LLOADER_PATH) && \
 		ln -sf $(ARM_TF_PATH)/build/hikey/$(ARM_TF_BUILD)/bl1.bin && \
 		ln -sf $(ATF_FB_PATH)/build/hikey/$(ATF_FB_BUILD)/bl1.bin fastboot.bin && \
-		$(AARCH32_CROSS_COMPILE)gcc -c -o start.o start.S && \
-		$(AARCH32_CROSS_COMPILE)ld -Bstatic -Tl-loader.lds -Ttext 0xf9800800 start.o -o loader && \
-		$(AARCH32_CROSS_COMPILE)objcopy -O binary loader temp && \
-		python gen_loader_hikey.py -o l-loader.bin --img_loader=temp --img_bl1=bl1.bin --img_ns_bl1u=fastboot.bin
-
-.PHONY: lloader-bin-clean
-lloader-bin-clean:
-	cd $(LLOADER_PATH) && \
-		rm -f l-loader.bin temp loader start.o
-
-.PHONY: lloader-ptbl
-lloader-ptbl:
-	cd $(LLOADER_PATH) && \
-		PTABLE=linux-$(CFG_FLASH_SIZE)g SECTOR_SIZE=512 bash -x generate_ptable.sh
-
-.PHONY: lloader-ptbl-clean
-lloader-ptbl-clean:
-	cd $(LLOADER_PATH) && rm -f prm_ptable.img sec_ptable.img
-
-.PHONY: lloader
-lloader: lloader-bin lloader-ptbl
+		$(MAKE) hikey PTABLE_LST=linux-$(CFG_FLASH_SIZE)g CROSS_COMPILE="$(CCACHE)$(AARCH32_CROSS_COMPILE)"
 
 .PHONY: lloader-clean
-lloader-clean: lloader-bin-clean lloader-ptbl-clean
+lloader-clean:
+	$(MAKE) -C $(LLOADER_PATH) hikey-clean
 
 ################################################################################
 # nvme image
diff --git a/hikey960.mk b/hikey960.mk
index 96dc97e79c3f6d2730bc2c660cd4588b49bf271e..d43310c01e000c8b05ffe94f2b10092e5a79588b 100644
--- a/hikey960.mk
+++ b/hikey960.mk
@@ -335,31 +335,16 @@ boot-img-clean:
 ################################################################################
 # l-loader
 ################################################################################
-.PHONY: lloader-bin
-lloader-bin: arm-tf
+.PHONY: lloader
+lloader:
 	cd $(LLOADER_PATH) && \
 		ln -sf $(ARM_TF_PATH)/build/hikey960/$(ARM_TF_BUILD)/bl1.bin && \
-		python gen_loader_hikey960.py -o l-loader.bin --img_bl1=bl1.bin --img_ns_bl1u=$(EDK2_BIN)
-
-.PHONY: lloader-bin-clean
-lloader-bin-clean:
-	cd $(LLOADER_PATH) && \
-		rm -f l-loader.bin
-
-.PHONY: lloader-ptbl
-lloader-ptbl:
-	cd $(LLOADER_PATH) && \
-		PTABLE=linux-32g SECTOR_SIZE=4096 SGDISK=./sgdisk bash -x generate_ptable.sh
-
-.PHONY: lloader-ptbl-clean
-lloader-ptbl-clean:
-	cd $(LLOADER_PATH) && rm -f prm_ptable.img sec_ptable.img
-
-.PHONY: lloader
-lloader: lloader-bin lloader-ptbl
+		ln -sf $(EDK2_BIN) && \
+		$(MAKE) hikey960 PTABLE_LST=linux-32g
 
 .PHONY: lloader-clean
-lloader-clean: lloader-bin-clean lloader-ptbl-clean
+lloader-clean:
+	$(MAKE) -C $(LLOADER_PATH) hikey960-clean
 
 ################################################################################
 # Flash
diff --git a/hikey_debian.mk b/hikey_debian.mk
index b0d168318bc0d41b2e02b3dcd7dcb5aae1c698ca..97e6a93d9ae5d8674eea897526a4ce4b6b325eaf 100644
--- a/hikey_debian.mk
+++ b/hikey_debian.mk
@@ -352,35 +352,16 @@ system-img-cleaner:
 ################################################################################
 # l-loader
 ################################################################################
-.PHONY: lloader-bin
-lloader-bin: arm-tf atf-fb
-	 cd $(LLOADER_PATH) && \
+.PHONY: lloader
+lloader:
+	cd $(LLOADER_PATH) && \
 		ln -sf $(ARM_TF_PATH)/build/hikey/$(ARM_TF_BUILD)/bl1.bin && \
 		ln -sf $(ATF_FB_PATH)/build/hikey/$(ATF_FB_BUILD)/bl1.bin fastboot.bin && \
-		$(AARCH32_CROSS_COMPILE)gcc -c -o start.o start.S && \
-		$(AARCH32_CROSS_COMPILE)ld -Bstatic -Tl-loader.lds -Ttext 0xf9800800 start.o -o loader && \
-		$(AARCH32_CROSS_COMPILE)objcopy -O binary loader temp && \
-		python gen_loader_hikey.py -o l-loader.bin --img_loader=temp --img_bl1=bl1.bin --img_ns_bl1u=fastboot.bin
-
-.PHONY: lloader-bin-clean
-lloader-bin-clean:
-	cd $(LLOADER_PATH) && \
-		rm -f l-loader.bin temp loader start.o
-
-.PHONY: lloader-ptbl
-lloader-ptbl:
-	cd $(LLOADER_PATH) && \
-		PTABLE=linux-$(CFG_FLASH_SIZE)g SECTOR_SIZE=512 bash -x generate_ptable.sh
-
-.PHONY: lloader-ptbl-clean
-lloader-ptbl-clean:
-	cd $(LLOADER_PATH) && rm -f prm_ptable.img sec_ptable.im
-
-.PHONY: lloader
-lloader: lloader-bin lloader-ptbl
+		$(MAKE) hikey PTABLE_LST=linux-$(CFG_FLASH_SIZE)g CROSS_COMPILE="$(CCACHE)$(AARCH32_CROSS_COMPILE)"
 
 .PHONY: lloader-clean
-lloader-clean: lloader-bin-clean lloader-ptbl-clean
+lloader-clean:
+	$(MAKE) -C $(LLOADER_PATH) hikey-clean
 
 ################################################################################
 # nvme image