From b30ba76a980b3a9282f309c23e3bb0b0eb2c72cd Mon Sep 17 00:00:00 2001
From: David Bauer <mail@david-bauer.net>
Date: Thu, 30 May 2024 02:55:38 +0200
Subject: [PATCH] powerpc: add compressed zImage for mpc85xx

Add a universal zImage which can be loaded by mpc85xx boards at
load address 0x3000000. This allows boards to boot kernels larger than
16MB even if the image is loaded temporarily from NAND at offset
0x1000000 which some bootloaders do by default.

Signed-off-by: David Bauer <mail@david-bauer.net>
---
 arch/powerpc/boot/Makefile | 1 +
 arch/powerpc/boot/wrapper  | 5 +++++
 2 files changed, 6 insertions(+)

--- a/arch/powerpc/boot/Makefile
+++ b/arch/powerpc/boot/Makefile
@@ -172,6 +172,7 @@ src-plat-$(CONFIG_EMBEDDED6xx) += cuboot
 src-plat-$(CONFIG_AMIGAONE) += cuboot-amigaone.c
 src-plat-$(CONFIG_PPC_PS3) += ps3-head.S ps3-hvcall.S ps3.c
 src-plat-$(CONFIG_EPAPR_BOOT) += epapr.c epapr-wrapper.c
+src-plat-$(CONFIG_PPC_ZIMAGE_LA3000000) += fixed-head.S
 src-plat-$(CONFIG_PPC_PSERIES) += pseries-head.S
 src-plat-$(CONFIG_PPC_POWERNV) += pseries-head.S
 src-plat-$(CONFIG_PPC_IBM_CELL_BLADE) += pseries-head.S
@@ -332,6 +333,7 @@ image-$(CONFIG_MPC834x_ITX)		+= cuImage.
 image-$(CONFIG_ASP834x)			+= dtbImage.asp834x-redboot
 
 # Board ports in arch/powerpc/platform/85xx/Kconfig
+image-$(CONFIG_PPC_ZIMAGE_LA3000000)	+= zImage.la3000000
 image-$(CONFIG_MPC85xx_MDS)		+= cuImage.mpc8568mds
 image-$(CONFIG_MPC85xx_DS)		+= cuImage.mpc8544ds \
 					   cuImage.mpc8572ds
--- a/arch/powerpc/boot/wrapper
+++ b/arch/powerpc/boot/wrapper
@@ -256,6 +256,11 @@ if [ -n "$esm_blob" -a "$platform" != "p
 fi
 
 case "$platform" in
+la3000000)
+    binary=y
+    platformo="$object/fixed-head.o $object/of.o $object/epapr.o"
+    link_address='0x3000000'
+    ;;
 of)
     platformo="$object/of.o $object/epapr.o"
     make_space=n
--- a/arch/powerpc/Kconfig
+++ b/arch/powerpc/Kconfig
@@ -88,6 +88,10 @@ config NMI_IPI
 	depends on SMP && (DEBUGGER || KEXEC_CORE || HARDLOCKUP_DETECTOR)
 	default y
 
+config PPC_ZIMAGE_LA3000000
+       bool
+       default n
+
 config PPC_WATCHDOG
 	bool
 	depends on HARDLOCKUP_DETECTOR_ARCH
