Merge branch 'sched-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel...
[sfrench/cifs-2.6.git] / arch / arm / boot / compressed / head.S
index e59d14679fb07520d92397ebf677db17266e28b3..93dffed0ac6e02b476ad82773f56727bf9118c80 100644 (file)
  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