mirror of
https://github.com/torvalds/linux.git
synced 2026-06-08 14:42:37 +02:00
UPSTREAM: 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: Geert Uytterhoeven <geert+renesas@glider.be>
Reviewed-by: Ard Biesheuvel <ardb@kernel.org>
Reviewed-by: Nicolas Pitre <nico@fluxnic.net>
Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
(cherry picked from commit 0557ac83fd)
Bug: 178411248
Change-Id: I0807f36352dbfd5f5808959e358a7469dc9753bb
Signed-off-by: Eric Biggers <ebiggers@google.com>
This commit is contained in:
parent
f72dbeced2
commit
d3f36ae0bb
|
|
@ -165,6 +165,16 @@
|
||||||
orr \res, \res, \tmp1, lsl #24
|
orr \res, \res, \tmp1, lsl #24
|
||||||
.endm
|
.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", "ax"
|
.section ".start", "ax"
|
||||||
/*
|
/*
|
||||||
* sort out different calling conventions
|
* sort out different calling conventions
|
||||||
|
|
@ -345,13 +355,7 @@ restart: adr r0, LC1
|
||||||
|
|
||||||
/* Get the initial DTB size */
|
/* Get the initial DTB size */
|
||||||
ldr r5, [r6, #4]
|
ldr r5, [r6, #4]
|
||||||
#ifndef __ARMEB__
|
be32tocpu r5, r1
|
||||||
/* 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
|
|
||||||
dbgadtb r6, r5
|
dbgadtb r6, r5
|
||||||
/* 50% DTB growth should be good enough */
|
/* 50% DTB growth should be good enough */
|
||||||
add r5, r5, r5, lsr #1
|
add r5, r5, r5, lsr #1
|
||||||
|
|
@ -403,13 +407,7 @@ restart: adr r0, LC1
|
||||||
|
|
||||||
/* Get the current DTB size */
|
/* Get the current DTB size */
|
||||||
ldr r5, [r6, #4]
|
ldr r5, [r6, #4]
|
||||||
#ifndef __ARMEB__
|
be32tocpu r5, r1
|
||||||
/* 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
|
|
||||||
|
|
||||||
/* preserve 64-bit alignment */
|
/* preserve 64-bit alignment */
|
||||||
add r5, r5, #7
|
add r5, r5, #7
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user