diff options
author | Russell King <rmk+kernel@armlinux.org.uk> | 2019-10-22 19:37:29 +0300 |
---|---|---|
committer | Russell King <rmk+kernel@armlinux.org.uk> | 2019-10-22 19:37:29 +0300 |
commit | 39f4d441048444f38fcfcfb1aa3102c030544e86 (patch) | |
tree | bee4fe1443f9a7f17eea21a1f2e8902176b13844 /arch/arm/boot/compressed/head.S | |
parent | 2ecb287998a47cc0a766f6071f63bc185f338540 (diff) | |
parent | e963408e8ff439e2b9da20e5399d7dca21462fcc (diff) | |
download | linux-39f4d441048444f38fcfcfb1aa3102c030544e86.tar.xz |
Merge branch 'misc' into fixes
Diffstat (limited to 'arch/arm/boot/compressed/head.S')
-rw-r--r-- | arch/arm/boot/compressed/head.S | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/arch/arm/boot/compressed/head.S b/arch/arm/boot/compressed/head.S index e59d14679fb0..93dffed0ac6e 100644 --- a/arch/arm/boot/compressed/head.S +++ b/arch/arm/boot/compressed/head.S @@ -153,11 +153,23 @@ AR_CLASS( .arm ) start: .type start,#function + /* + * These 7 nops along with the 1 nop immediately below for + * !THUMB2 form 8 nops that make the compressed kernel bootable + * on legacy ARM systems that were assuming the kernel in a.out + * binary format. The boot loaders on these systems would + * jump 32 bytes into the image to skip the a.out header. + * with these 8 nops filling exactly 32 bytes, things still + * work as expected on these legacy systems. Thumb2 mode keeps + * 7 of the nops as it turns out that some boot loaders + * were patching the initial instructions of the kernel, i.e + * had started to exploit this "patch area". + */ .rept 7 __nop .endr #ifndef CONFIG_THUMB2_KERNEL - mov r0, r0 + __nop #else AR_CLASS( sub pc, pc, #3 ) @ A/R: switch to Thumb2 mode M_CLASS( nop.w ) @ M: already in Thumb2 mode |