aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/boot/compressed/head.S
diff options
context:
space:
mode:
Diffstat (limited to 'arch/arm/boot/compressed/head.S')
-rw-r--r--arch/arm/boot/compressed/head.S17
1 files changed, 15 insertions, 2 deletions
diff --git a/arch/arm/boot/compressed/head.S b/arch/arm/boot/compressed/head.S
index 942fad97e447..e95a5989602a 100644
--- a/arch/arm/boot/compressed/head.S
+++ b/arch/arm/boot/compressed/head.S
@@ -353,7 +353,8 @@ not_relocated: mov r0, #0
353 mov r0, #0 @ must be zero 353 mov r0, #0 @ must be zero
354 mov r1, r7 @ restore architecture number 354 mov r1, r7 @ restore architecture number
355 mov r2, r8 @ restore atags pointer 355 mov r2, r8 @ restore atags pointer
356 mov pc, r4 @ call kernel 356 ARM( mov pc, r4 ) @ call kernel
357 THUMB( bx r4 ) @ entry point is always ARM
357 358
358 .align 2 359 .align 2
359 .type LC0, #object 360 .type LC0, #object
@@ -597,6 +598,8 @@ __common_mmu_cache_on:
597 sub pc, lr, r0, lsr #32 @ properly flush pipeline 598 sub pc, lr, r0, lsr #32 @ properly flush pipeline
598#endif 599#endif
599 600
601#define PROC_ENTRY_SIZE (4*5)
602
600/* 603/*
601 * Here follow the relocatable cache support functions for the 604 * Here follow the relocatable cache support functions for the
602 * various processors. This is a generic hook for locating an 605 * various processors. This is a generic hook for locating an
@@ -624,7 +627,7 @@ call_cache_fn: adr r12, proc_types
624 ARM( addeq pc, r12, r3 ) @ call cache function 627 ARM( addeq pc, r12, r3 ) @ call cache function
625 THUMB( addeq r12, r3 ) 628 THUMB( addeq r12, r3 )
626 THUMB( moveq pc, r12 ) @ call cache function 629 THUMB( moveq pc, r12 ) @ call cache function
627 add r12, r12, #4*5 630 add r12, r12, #PROC_ENTRY_SIZE
628 b 1b 631 b 1b
629 632
630/* 633/*
@@ -794,6 +797,16 @@ proc_types:
794 797
795 .size proc_types, . - proc_types 798 .size proc_types, . - proc_types
796 799
800 /*
801 * If you get a "non-constant expression in ".if" statement"
802 * error from the assembler on this line, check that you have
803 * not accidentally written a "b" instruction where you should
804 * have written W(b).
805 */
806 .if (. - proc_types) % PROC_ENTRY_SIZE != 0
807 .error "The size of one or more proc_types entries is wrong."
808 .endif
809
797/* 810/*
798 * Turn off the Cache and MMU. ARMv3 does not support 811 * Turn off the Cache and MMU. ARMv3 does not support
799 * reading the control register, but ARMv4 does. 812 * reading the control register, but ARMv4 does.