]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
ARM: set BE8 if LE in head code
authorBen Dooks <ben.dooks@codethink.co.uk>
Fri, 1 Feb 2013 09:40:42 +0000 (09:40 +0000)
committerBen Dooks <ben.dooks@codethink.co.uk>
Sat, 19 Oct 2013 19:46:33 +0000 (20:46 +0100)
If we are booting in LE and compiled for BE8, then add code to
set the state to bE8. Since the instruction stream is always LE,
we do not need to do anything special to the instruction.

Also ensure that the secondary processors are started in the same mode.

Note, we do add about 20 bytes to the kernel image, but it seems easier
to do this than adding another configuration to change.

Signed-off-by: Ben Dooks <ben.dooks@codethink.co.uk>
Reviewed-by: Dave Martin <Dave.Martin@arm.com>
Tested-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
arch/arm/boot/compressed/head.S
arch/arm/kernel/head.S
arch/arm/kernel/sleep.S

index c912c2a95de84a02ee36285c0f4747c50d9ff60c..066b03480b63caacc04abf1ef0ec5ccf037fa52d 100644 (file)
@@ -135,6 +135,7 @@ start:
                .word   _edata                  @ zImage end address
  THUMB(                .thumb                  )
 1:
+ ARM_BE8(      setend  be )                    @ go BE8 if compiled for BE8
                mrs     r9, cpsr
 #ifdef CONFIG_ARM_VIRT_EXT
                bl      __hyp_stub_install      @ get into SVC mode, reversibly
index 9e5906cf7d329dd86f9ce0c95cccd2414c6505cb..a047acfa6b6d3e6b2d2e03e1f2cbac3d4d83a8b9 100644 (file)
@@ -77,6 +77,7 @@
 
        __HEAD
 ENTRY(stext)
+ ARM_BE8(setend        be )                    @ ensure we are in BE8 mode
 
  THUMB(        adr     r9, BSYM(1f)    )       @ Kernel is always entered in ARM.
  THUMB(        bx      r9              )       @ If this is a Thumb-2 kernel,
@@ -352,6 +353,9 @@ ENTRY(secondary_startup)
         * the processor type - there is no need to check the machine type
         * as it has already been validated by the primary processor.
         */
+
+ ARM_BE8(setend        be)                             @ ensure we are in BE8 mode
+
 #ifdef CONFIG_ARM_VIRT_EXT
        bl      __hyp_stub_install_secondary
 #endif
index db1536b8b30b497fe11923dfe9f67a72f86f7954..716343caa9600b60d3b1b92b5193d0b0d8c44951 100644 (file)
@@ -130,6 +130,7 @@ ENDPROC(cpu_resume_after_mmu)
        .data
        .align
 ENTRY(cpu_resume)
+ARM_BE8(setend be)                     @ ensure we are in BE mode
        mov     r1, #0
        ALT_SMP(mrc p15, 0, r0, c0, c0, 5)
        ALT_UP_B(1f)