mirror of
https://github.com/LibreELEC/LibreELEC.tv.git
synced 2025-07-29 13:46:49 +00:00
Merge pull request #3484 from kszaq/arm64_uimage_alignment
linux: amend uimage load address for proper decompression
This commit is contained in:
commit
f3de4b04c8
@ -212,6 +212,9 @@ make_target() {
|
|||||||
# arm64 target does not support creating uImage.
|
# arm64 target does not support creating uImage.
|
||||||
# Build Image first, then wrap it using u-boot's mkimage.
|
# Build Image first, then wrap it using u-boot's mkimage.
|
||||||
if [[ "$TARGET_KERNEL_ARCH" == "arm64" && "$KERNEL_TARGET" == uImage* ]]; then
|
if [[ "$TARGET_KERNEL_ARCH" == "arm64" && "$KERNEL_TARGET" == uImage* ]]; then
|
||||||
|
if [ -z "$KERNEL_UIMAGE_LOADADDR" -o -z "$KERNEL_UIMAGE_ENTRYADDR" ]; then
|
||||||
|
die "ERROR: KERNEL_UIMAGE_LOADADDR and KERNEL_UIMAGE_ENTRYADDR have to be set to build uImage - aborting"
|
||||||
|
fi
|
||||||
KERNEL_UIMAGE_TARGET="$KERNEL_TARGET"
|
KERNEL_UIMAGE_TARGET="$KERNEL_TARGET"
|
||||||
KERNEL_TARGET="${KERNEL_TARGET/uImage/Image}"
|
KERNEL_TARGET="${KERNEL_TARGET/uImage/Image}"
|
||||||
fi
|
fi
|
||||||
@ -243,16 +246,32 @@ make_target() {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -n "$KERNEL_UIMAGE_TARGET" ] ; then
|
if [ -n "$KERNEL_UIMAGE_TARGET" ] ; then
|
||||||
|
# determine compression used for kernel image
|
||||||
KERNEL_UIMAGE_COMP=${KERNEL_UIMAGE_TARGET:7}
|
KERNEL_UIMAGE_COMP=${KERNEL_UIMAGE_TARGET:7}
|
||||||
KERNEL_UIMAGE_COMP=${KERNEL_UIMAGE_COMP:-none}
|
KERNEL_UIMAGE_COMP=${KERNEL_UIMAGE_COMP:-none}
|
||||||
|
|
||||||
|
# calculate new load address to make kernel Image unpack to memory area after compressed image
|
||||||
|
if [ "$KERNEL_UIMAGE_COMP" != "none" ] ; then
|
||||||
|
COMPRESSED_SIZE=$(stat -t "arch/$TARGET_KERNEL_ARCH/boot/$KERNEL_TARGET" | awk '{print $2}')
|
||||||
|
# align to 1 MiB
|
||||||
|
COMPRESSED_SIZE=$(( (($COMPRESSED_SIZE - 1 >> 20) + 1) << 20 ))
|
||||||
|
PKG_KERNEL_UIMAGE_LOADADDR=$(printf '%X' "$(( $KERNEL_UIMAGE_LOADADDR + $COMPRESSED_SIZE ))")
|
||||||
|
PKG_KERNEL_UIMAGE_ENTRYADDR=$(printf '%X' "$(( $KERNEL_UIMAGE_ENTRYADDR + $COMPRESSED_SIZE ))")
|
||||||
|
else
|
||||||
|
PKG_KERNEL_UIMAGE_LOADADDR=${KERNEL_UIMAGE_LOADADDR}
|
||||||
|
PKG_KERNEL_UIMAGE_ENTRYADDR=${KERNEL_UIMAGE_ENTRYADDR}
|
||||||
|
fi
|
||||||
|
|
||||||
mkimage -A $TARGET_KERNEL_ARCH \
|
mkimage -A $TARGET_KERNEL_ARCH \
|
||||||
-O linux \
|
-O linux \
|
||||||
-T kernel \
|
-T kernel \
|
||||||
-C $KERNEL_UIMAGE_COMP \
|
-C $KERNEL_UIMAGE_COMP \
|
||||||
-a $KERNEL_UIMAGE_LOADADDR \
|
-a $PKG_KERNEL_UIMAGE_LOADADDR \
|
||||||
-e $KERNEL_UIMAGE_ENTRYADDR \
|
-e $PKG_KERNEL_UIMAGE_ENTRYADDR \
|
||||||
-d arch/$TARGET_KERNEL_ARCH/boot/$KERNEL_TARGET \
|
-d arch/$TARGET_KERNEL_ARCH/boot/$KERNEL_TARGET \
|
||||||
arch/$TARGET_KERNEL_ARCH/boot/$KERNEL_UIMAGE_TARGET
|
arch/$TARGET_KERNEL_ARCH/boot/$KERNEL_UIMAGE_TARGET
|
||||||
|
|
||||||
|
KERNEL_TARGET="${KERNEL_UIMAGE_TARGET}"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user