|
@@ -130,19 +130,22 @@ start:
|
|
.rept 7
|
|
.rept 7
|
|
__nop
|
|
__nop
|
|
.endr
|
|
.endr
|
|
- ARM( mov r0, r0 )
|
|
|
|
- ARM( b 1f )
|
|
|
|
- THUMB( badr r12, 1f )
|
|
|
|
- THUMB( bx r12 )
|
|
|
|
|
|
+#ifndef CONFIG_THUMB2_KERNEL
|
|
|
|
+ mov r0, r0
|
|
|
|
+#else
|
|
|
|
+ AR_CLASS( sub pc, pc, #3 ) @ A/R: switch to Thumb2 mode
|
|
|
|
+ M_CLASS( nop.w ) @ M: already in Thumb2 mode
|
|
|
|
+ .thumb
|
|
|
|
+#endif
|
|
|
|
+ W(b) 1f
|
|
|
|
|
|
.word _magic_sig @ Magic numbers to help the loader
|
|
.word _magic_sig @ Magic numbers to help the loader
|
|
.word _magic_start @ absolute load/run zImage address
|
|
.word _magic_start @ absolute load/run zImage address
|
|
.word _magic_end @ zImage end address
|
|
.word _magic_end @ zImage end address
|
|
.word 0x04030201 @ endianness flag
|
|
.word 0x04030201 @ endianness flag
|
|
|
|
|
|
- THUMB( .thumb )
|
|
|
|
-1: __EFI_HEADER
|
|
|
|
-
|
|
|
|
|
|
+ __EFI_HEADER
|
|
|
|
+1:
|
|
ARM_BE8( setend be ) @ go BE8 if compiled for BE8
|
|
ARM_BE8( setend be ) @ go BE8 if compiled for BE8
|
|
AR_CLASS( mrs r9, cpsr )
|
|
AR_CLASS( mrs r9, cpsr )
|
|
#ifdef CONFIG_ARM_VIRT_EXT
|
|
#ifdef CONFIG_ARM_VIRT_EXT
|