Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6f5e7693 authored by Geert Uytterhoeven's avatar Geert Uytterhoeven Committed by Eric Biggers
Browse files

BACKPORT: ARM: 9035/1: uncompress: Add be32tocpu macro



DTB stores all values as 32-bit big-endian integers.
Add a macro to convert such values to native CPU endianness, to reduce
duplication.

Signed-off-by: default avatarGeert Uytterhoeven <geert+renesas@glider.be>
Reviewed-by: default avatarArd Biesheuvel <ardb@kernel.org>
Reviewed-by: default avatarNicolas Pitre <nico@fluxnic.net>
Signed-off-by: default avatarRussell King <rmk+kernel@armlinux.org.uk>

(cherry picked from commit 0557ac83fd1a0a7cd6909665bad50006507115a0)
(resolved conflict due to different patch context, caused by missing
 "ARM: 9010/1: uncompress: Print the location of appended DTB")
Bug: 178411248
Change-Id: I0807f36352dbfd5f5808959e358a7469dc9753bb
Signed-off-by: default avatarEric Biggers <ebiggers@google.com>
parent e543b332
Loading
Loading
Loading
Loading
+12 −14
Original line number Diff line number Diff line
@@ -114,6 +114,16 @@
#endif
		.endm

		.macro	be32tocpu, val, tmp
#ifndef __ARMEB__
		/* convert to little endian */
		eor	\tmp, \val, \val, ror #16
		bic	\tmp, \tmp, #0x00ff0000
		mov	\val, \val, ror #8
		eor	\val, \val, \tmp, lsr #8
#endif
		.endm

		.section ".start", #alloc, #execinstr
/*
 * sort out different calling conventions
@@ -305,13 +315,7 @@ restart: adr r0, LC0

		/* Get the initial DTB size */
		ldr	r5, [r6, #4]
#ifndef __ARMEB__
		/* convert to little endian */
		eor	r1, r5, r5, ror #16
		bic	r1, r1, #0x00ff0000
		mov	r5, r5, ror #8
		eor	r5, r5, r1, lsr #8
#endif
		be32tocpu r5, r1
		/* 50% DTB growth should be good enough */
		add	r5, r5, r5, lsr #1
		/* preserve 64-bit alignment */
@@ -364,13 +368,7 @@ restart: adr r0, LC0

		/* Get the current DTB size */
		ldr	r5, [r6, #4]
#ifndef __ARMEB__
		/* convert r5 (dtb size) to little endian */
		eor	r1, r5, r5, ror #16
		bic	r1, r1, #0x00ff0000
		mov	r5, r5, ror #8
		eor	r5, r5, r1, lsr #8
#endif
		be32tocpu r5, r1

		/* preserve 64-bit alignment */
		add	r5, r5, #7