On Thu, 15 May 2014 14:19:25 +0800, Chuck Huang said: > hi All, > > is anyone can explain why kernel do eight times nop in > arch/arm/boot/compressed/head.S ? > > 128 start: > 129 .type start,#function > 130 .rept 8 > 131 mov r0, r0 > 132 .endr > > what's the purpose of that ?
With 'git', you could figure that out yourself.... git blame arch/arm/boot/compressed/head.S says: ^1da177e4 (Linus Torvalds 2005-04-16 15:20:36 -0700 118) /* ^1da177e4 (Linus Torvalds 2005-04-16 15:20:36 -0700 119) * sort out different calling conventions ^1da177e4 (Linus Torvalds 2005-04-16 15:20:36 -0700 120) */ ^1da177e4 (Linus Torvalds 2005-04-16 15:20:36 -0700 121) .align 26e5ca93d (Dave Martin 2010-11-29 19:43:27 +0100 122) .arm @ Always enter in ARM state ^1da177e4 (Linus Torvalds 2005-04-16 15:20:36 -0700 123) start: ^1da177e4 (Linus Torvalds 2005-04-16 15:20:36 -0700 124) .type start,#function b11fe3888 (Nicolas Pitre 2011-02-12 22:25:27 +0100 125) .rept 7 ^1da177e4 (Linus Torvalds 2005-04-16 15:20:36 -0700 126) mov r0, r0 ^1da177e4 (Linus Torvalds 2005-04-16 15:20:36 -0700 127) .endr b11fe3888 (Nicolas Pitre 2011-02-12 22:25:27 +0100 128) ARM( mov r0, r0 ) b11fe3888 (Nicolas Pitre 2011-02-12 22:25:27 +0100 129) ARM( b 1f ) b11fe3888 (Nicolas Pitre 2011-02-12 22:25:27 +0100 130) THUMB( adr r12, BSYM(1f) ) b11fe3888 (Nicolas Pitre 2011-02-12 22:25:27 +0100 131) THUMB( bx r12 ) ^1da177e4 (Linus Torvalds 2005-04-16 15:20:36 -0700 132) So the .rept 7 and related were added in commit b11fe38888 in Feb 2011. git log b11fe3888 commit b11fe38883d1de76f2f847943e085a808f83f189 Author: Nicolas Pitre <n...@fluxnic.net> Date: Sat Feb 12 22:25:27 2011 +0100 ARM: 6663/1: make Thumb2 kernel entry point more similar to the ARM one Some installers would binary patch the kernel zImage to replace the first few nops with custom instructions. This breaks the Thumb2 kernel as the mode switch is right at the beginning. Let's move it towards the end of the nop sequence instead. Signed-off-by: Nicolas Pitre <nicolas.pi...@linaro.org> Signed-off-by: Russell King <rmk+ker...@arm.linux.org.uk> So there you have it - it's a nop sled for installers that would otherwise trample the start of executable code. If you're still confused, you'll have to ask Nicolas or Russell or an actual ARM expert. :)
pgpyJNK_LetT8.pgp
Description: PGP signature
_______________________________________________ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies