ARM: proc-*.S: place cpu_reset functions into .idmap.text section
The CPU reset functions disable the MMU and therefore must be executed with an identity mapping in place. This patch places the CPU reset functions into the .idmap.text section, causing the idmap code to include them as part of the identity mapping. Acked-by: Dave Martin <dave.martin@linaro.org> Signed-off-by: Will Deacon <will.deacon@arm.com>
This commit is contained in:
parent
e6eadc6787
commit
1a4baafa7d
|
@ -95,6 +95,7 @@ ENTRY(cpu_arm1020_proc_fin)
|
||||||
* loc: location to jump to for soft reset
|
* loc: location to jump to for soft reset
|
||||||
*/
|
*/
|
||||||
.align 5
|
.align 5
|
||||||
|
.pushsection .idmap.text, "ax"
|
||||||
ENTRY(cpu_arm1020_reset)
|
ENTRY(cpu_arm1020_reset)
|
||||||
mov ip, #0
|
mov ip, #0
|
||||||
mcr p15, 0, ip, c7, c7, 0 @ invalidate I,D caches
|
mcr p15, 0, ip, c7, c7, 0 @ invalidate I,D caches
|
||||||
|
@ -107,6 +108,8 @@ ENTRY(cpu_arm1020_reset)
|
||||||
bic ip, ip, #0x1100 @ ...i...s........
|
bic ip, ip, #0x1100 @ ...i...s........
|
||||||
mcr p15, 0, ip, c1, c0, 0 @ ctrl register
|
mcr p15, 0, ip, c1, c0, 0 @ ctrl register
|
||||||
mov pc, r0
|
mov pc, r0
|
||||||
|
ENDPROC(cpu_arm1020_reset)
|
||||||
|
.popsection
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* cpu_arm1020_do_idle()
|
* cpu_arm1020_do_idle()
|
||||||
|
|
|
@ -95,6 +95,7 @@ ENTRY(cpu_arm1020e_proc_fin)
|
||||||
* loc: location to jump to for soft reset
|
* loc: location to jump to for soft reset
|
||||||
*/
|
*/
|
||||||
.align 5
|
.align 5
|
||||||
|
.pushsection .idmap.text, "ax"
|
||||||
ENTRY(cpu_arm1020e_reset)
|
ENTRY(cpu_arm1020e_reset)
|
||||||
mov ip, #0
|
mov ip, #0
|
||||||
mcr p15, 0, ip, c7, c7, 0 @ invalidate I,D caches
|
mcr p15, 0, ip, c7, c7, 0 @ invalidate I,D caches
|
||||||
|
@ -107,6 +108,8 @@ ENTRY(cpu_arm1020e_reset)
|
||||||
bic ip, ip, #0x1100 @ ...i...s........
|
bic ip, ip, #0x1100 @ ...i...s........
|
||||||
mcr p15, 0, ip, c1, c0, 0 @ ctrl register
|
mcr p15, 0, ip, c1, c0, 0 @ ctrl register
|
||||||
mov pc, r0
|
mov pc, r0
|
||||||
|
ENDPROC(cpu_arm1020e_reset)
|
||||||
|
.popsection
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* cpu_arm1020e_do_idle()
|
* cpu_arm1020e_do_idle()
|
||||||
|
|
|
@ -84,6 +84,7 @@ ENTRY(cpu_arm1022_proc_fin)
|
||||||
* loc: location to jump to for soft reset
|
* loc: location to jump to for soft reset
|
||||||
*/
|
*/
|
||||||
.align 5
|
.align 5
|
||||||
|
.pushsection .idmap.text, "ax"
|
||||||
ENTRY(cpu_arm1022_reset)
|
ENTRY(cpu_arm1022_reset)
|
||||||
mov ip, #0
|
mov ip, #0
|
||||||
mcr p15, 0, ip, c7, c7, 0 @ invalidate I,D caches
|
mcr p15, 0, ip, c7, c7, 0 @ invalidate I,D caches
|
||||||
|
@ -96,6 +97,8 @@ ENTRY(cpu_arm1022_reset)
|
||||||
bic ip, ip, #0x1100 @ ...i...s........
|
bic ip, ip, #0x1100 @ ...i...s........
|
||||||
mcr p15, 0, ip, c1, c0, 0 @ ctrl register
|
mcr p15, 0, ip, c1, c0, 0 @ ctrl register
|
||||||
mov pc, r0
|
mov pc, r0
|
||||||
|
ENDPROC(cpu_arm1022_reset)
|
||||||
|
.popsection
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* cpu_arm1022_do_idle()
|
* cpu_arm1022_do_idle()
|
||||||
|
|
|
@ -84,6 +84,7 @@ ENTRY(cpu_arm1026_proc_fin)
|
||||||
* loc: location to jump to for soft reset
|
* loc: location to jump to for soft reset
|
||||||
*/
|
*/
|
||||||
.align 5
|
.align 5
|
||||||
|
.pushsection .idmap.text, "ax"
|
||||||
ENTRY(cpu_arm1026_reset)
|
ENTRY(cpu_arm1026_reset)
|
||||||
mov ip, #0
|
mov ip, #0
|
||||||
mcr p15, 0, ip, c7, c7, 0 @ invalidate I,D caches
|
mcr p15, 0, ip, c7, c7, 0 @ invalidate I,D caches
|
||||||
|
@ -96,6 +97,8 @@ ENTRY(cpu_arm1026_reset)
|
||||||
bic ip, ip, #0x1100 @ ...i...s........
|
bic ip, ip, #0x1100 @ ...i...s........
|
||||||
mcr p15, 0, ip, c1, c0, 0 @ ctrl register
|
mcr p15, 0, ip, c1, c0, 0 @ ctrl register
|
||||||
mov pc, r0
|
mov pc, r0
|
||||||
|
ENDPROC(cpu_arm1026_reset)
|
||||||
|
.popsection
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* cpu_arm1026_do_idle()
|
* cpu_arm1026_do_idle()
|
||||||
|
|
|
@ -225,6 +225,7 @@ ENTRY(cpu_arm7_set_pte_ext)
|
||||||
* Params : r0 = address to jump to
|
* Params : r0 = address to jump to
|
||||||
* Notes : This sets up everything for a reset
|
* Notes : This sets up everything for a reset
|
||||||
*/
|
*/
|
||||||
|
.pushsection .idmap.text, "ax"
|
||||||
ENTRY(cpu_arm6_reset)
|
ENTRY(cpu_arm6_reset)
|
||||||
ENTRY(cpu_arm7_reset)
|
ENTRY(cpu_arm7_reset)
|
||||||
mov r1, #0
|
mov r1, #0
|
||||||
|
@ -235,6 +236,9 @@ ENTRY(cpu_arm7_reset)
|
||||||
mov r1, #0x30
|
mov r1, #0x30
|
||||||
mcr p15, 0, r1, c1, c0, 0 @ turn off MMU etc
|
mcr p15, 0, r1, c1, c0, 0 @ turn off MMU etc
|
||||||
mov pc, r0
|
mov pc, r0
|
||||||
|
ENDPROC(cpu_arm6_reset)
|
||||||
|
ENDPROC(cpu_arm7_reset)
|
||||||
|
.popsection
|
||||||
|
|
||||||
__CPUINIT
|
__CPUINIT
|
||||||
|
|
||||||
|
|
|
@ -101,6 +101,7 @@ ENTRY(cpu_arm720_set_pte_ext)
|
||||||
* Params : r0 = address to jump to
|
* Params : r0 = address to jump to
|
||||||
* Notes : This sets up everything for a reset
|
* Notes : This sets up everything for a reset
|
||||||
*/
|
*/
|
||||||
|
.pushsection .idmap.text, "ax"
|
||||||
ENTRY(cpu_arm720_reset)
|
ENTRY(cpu_arm720_reset)
|
||||||
mov ip, #0
|
mov ip, #0
|
||||||
mcr p15, 0, ip, c7, c7, 0 @ invalidate cache
|
mcr p15, 0, ip, c7, c7, 0 @ invalidate cache
|
||||||
|
@ -112,6 +113,8 @@ ENTRY(cpu_arm720_reset)
|
||||||
bic ip, ip, #0x2100 @ ..v....s........
|
bic ip, ip, #0x2100 @ ..v....s........
|
||||||
mcr p15, 0, ip, c1, c0, 0 @ ctrl register
|
mcr p15, 0, ip, c1, c0, 0 @ ctrl register
|
||||||
mov pc, r0
|
mov pc, r0
|
||||||
|
ENDPROC(cpu_arm720_reset)
|
||||||
|
.popsection
|
||||||
|
|
||||||
__CPUINIT
|
__CPUINIT
|
||||||
|
|
||||||
|
|
|
@ -49,6 +49,7 @@ ENTRY(cpu_arm740_proc_fin)
|
||||||
* Params : r0 = address to jump to
|
* Params : r0 = address to jump to
|
||||||
* Notes : This sets up everything for a reset
|
* Notes : This sets up everything for a reset
|
||||||
*/
|
*/
|
||||||
|
.pushsection .idmap.text, "ax"
|
||||||
ENTRY(cpu_arm740_reset)
|
ENTRY(cpu_arm740_reset)
|
||||||
mov ip, #0
|
mov ip, #0
|
||||||
mcr p15, 0, ip, c7, c0, 0 @ invalidate cache
|
mcr p15, 0, ip, c7, c0, 0 @ invalidate cache
|
||||||
|
@ -56,6 +57,8 @@ ENTRY(cpu_arm740_reset)
|
||||||
bic ip, ip, #0x0000000c @ ............wc..
|
bic ip, ip, #0x0000000c @ ............wc..
|
||||||
mcr p15, 0, ip, c1, c0, 0 @ ctrl register
|
mcr p15, 0, ip, c1, c0, 0 @ ctrl register
|
||||||
mov pc, r0
|
mov pc, r0
|
||||||
|
ENDPROC(cpu_arm740_reset)
|
||||||
|
.popsection
|
||||||
|
|
||||||
__CPUINIT
|
__CPUINIT
|
||||||
|
|
||||||
|
|
|
@ -45,8 +45,11 @@ ENTRY(cpu_arm7tdmi_proc_fin)
|
||||||
* Params : loc(r0) address to jump to
|
* Params : loc(r0) address to jump to
|
||||||
* Purpose : Sets up everything for a reset and jump to the location for soft reset.
|
* Purpose : Sets up everything for a reset and jump to the location for soft reset.
|
||||||
*/
|
*/
|
||||||
|
.pushsection .idmap.text, "ax"
|
||||||
ENTRY(cpu_arm7tdmi_reset)
|
ENTRY(cpu_arm7tdmi_reset)
|
||||||
mov pc, r0
|
mov pc, r0
|
||||||
|
ENDPROC(cpu_arm7tdmi_reset)
|
||||||
|
.popsection
|
||||||
|
|
||||||
__CPUINIT
|
__CPUINIT
|
||||||
|
|
||||||
|
|
|
@ -85,6 +85,7 @@ ENTRY(cpu_arm920_proc_fin)
|
||||||
* loc: location to jump to for soft reset
|
* loc: location to jump to for soft reset
|
||||||
*/
|
*/
|
||||||
.align 5
|
.align 5
|
||||||
|
.pushsection .idmap.text, "ax"
|
||||||
ENTRY(cpu_arm920_reset)
|
ENTRY(cpu_arm920_reset)
|
||||||
mov ip, #0
|
mov ip, #0
|
||||||
mcr p15, 0, ip, c7, c7, 0 @ invalidate I,D caches
|
mcr p15, 0, ip, c7, c7, 0 @ invalidate I,D caches
|
||||||
|
@ -97,6 +98,8 @@ ENTRY(cpu_arm920_reset)
|
||||||
bic ip, ip, #0x1100 @ ...i...s........
|
bic ip, ip, #0x1100 @ ...i...s........
|
||||||
mcr p15, 0, ip, c1, c0, 0 @ ctrl register
|
mcr p15, 0, ip, c1, c0, 0 @ ctrl register
|
||||||
mov pc, r0
|
mov pc, r0
|
||||||
|
ENDPROC(cpu_arm920_reset)
|
||||||
|
.popsection
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* cpu_arm920_do_idle()
|
* cpu_arm920_do_idle()
|
||||||
|
|
|
@ -87,6 +87,7 @@ ENTRY(cpu_arm922_proc_fin)
|
||||||
* loc: location to jump to for soft reset
|
* loc: location to jump to for soft reset
|
||||||
*/
|
*/
|
||||||
.align 5
|
.align 5
|
||||||
|
.pushsection .idmap.text, "ax"
|
||||||
ENTRY(cpu_arm922_reset)
|
ENTRY(cpu_arm922_reset)
|
||||||
mov ip, #0
|
mov ip, #0
|
||||||
mcr p15, 0, ip, c7, c7, 0 @ invalidate I,D caches
|
mcr p15, 0, ip, c7, c7, 0 @ invalidate I,D caches
|
||||||
|
@ -99,6 +100,8 @@ ENTRY(cpu_arm922_reset)
|
||||||
bic ip, ip, #0x1100 @ ...i...s........
|
bic ip, ip, #0x1100 @ ...i...s........
|
||||||
mcr p15, 0, ip, c1, c0, 0 @ ctrl register
|
mcr p15, 0, ip, c1, c0, 0 @ ctrl register
|
||||||
mov pc, r0
|
mov pc, r0
|
||||||
|
ENDPROC(cpu_arm922_reset)
|
||||||
|
.popsection
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* cpu_arm922_do_idle()
|
* cpu_arm922_do_idle()
|
||||||
|
|
|
@ -108,6 +108,7 @@ ENTRY(cpu_arm925_proc_fin)
|
||||||
* loc: location to jump to for soft reset
|
* loc: location to jump to for soft reset
|
||||||
*/
|
*/
|
||||||
.align 5
|
.align 5
|
||||||
|
.pushsection .idmap.text, "ax"
|
||||||
ENTRY(cpu_arm925_reset)
|
ENTRY(cpu_arm925_reset)
|
||||||
/* Send software reset to MPU and DSP */
|
/* Send software reset to MPU and DSP */
|
||||||
mov ip, #0xff000000
|
mov ip, #0xff000000
|
||||||
|
@ -115,6 +116,8 @@ ENTRY(cpu_arm925_reset)
|
||||||
orr ip, ip, #0x0000ce00
|
orr ip, ip, #0x0000ce00
|
||||||
mov r4, #1
|
mov r4, #1
|
||||||
strh r4, [ip, #0x10]
|
strh r4, [ip, #0x10]
|
||||||
|
ENDPROC(cpu_arm925_reset)
|
||||||
|
.popsection
|
||||||
|
|
||||||
mov ip, #0
|
mov ip, #0
|
||||||
mcr p15, 0, ip, c7, c7, 0 @ invalidate I,D caches
|
mcr p15, 0, ip, c7, c7, 0 @ invalidate I,D caches
|
||||||
|
|
|
@ -77,6 +77,7 @@ ENTRY(cpu_arm926_proc_fin)
|
||||||
* loc: location to jump to for soft reset
|
* loc: location to jump to for soft reset
|
||||||
*/
|
*/
|
||||||
.align 5
|
.align 5
|
||||||
|
.pushsection .idmap.text, "ax"
|
||||||
ENTRY(cpu_arm926_reset)
|
ENTRY(cpu_arm926_reset)
|
||||||
mov ip, #0
|
mov ip, #0
|
||||||
mcr p15, 0, ip, c7, c7, 0 @ invalidate I,D caches
|
mcr p15, 0, ip, c7, c7, 0 @ invalidate I,D caches
|
||||||
|
@ -89,6 +90,8 @@ ENTRY(cpu_arm926_reset)
|
||||||
bic ip, ip, #0x1100 @ ...i...s........
|
bic ip, ip, #0x1100 @ ...i...s........
|
||||||
mcr p15, 0, ip, c1, c0, 0 @ ctrl register
|
mcr p15, 0, ip, c1, c0, 0 @ ctrl register
|
||||||
mov pc, r0
|
mov pc, r0
|
||||||
|
ENDPROC(cpu_arm926_reset)
|
||||||
|
.popsection
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* cpu_arm926_do_idle()
|
* cpu_arm926_do_idle()
|
||||||
|
|
|
@ -48,6 +48,7 @@ ENTRY(cpu_arm940_proc_fin)
|
||||||
* Params : r0 = address to jump to
|
* Params : r0 = address to jump to
|
||||||
* Notes : This sets up everything for a reset
|
* Notes : This sets up everything for a reset
|
||||||
*/
|
*/
|
||||||
|
.pushsection .idmap.text, "ax"
|
||||||
ENTRY(cpu_arm940_reset)
|
ENTRY(cpu_arm940_reset)
|
||||||
mov ip, #0
|
mov ip, #0
|
||||||
mcr p15, 0, ip, c7, c5, 0 @ flush I cache
|
mcr p15, 0, ip, c7, c5, 0 @ flush I cache
|
||||||
|
@ -58,6 +59,8 @@ ENTRY(cpu_arm940_reset)
|
||||||
bic ip, ip, #0x00001000 @ i-cache
|
bic ip, ip, #0x00001000 @ i-cache
|
||||||
mcr p15, 0, ip, c1, c0, 0 @ ctrl register
|
mcr p15, 0, ip, c1, c0, 0 @ ctrl register
|
||||||
mov pc, r0
|
mov pc, r0
|
||||||
|
ENDPROC(cpu_arm940_reset)
|
||||||
|
.popsection
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* cpu_arm940_do_idle()
|
* cpu_arm940_do_idle()
|
||||||
|
|
|
@ -55,6 +55,7 @@ ENTRY(cpu_arm946_proc_fin)
|
||||||
* Params : r0 = address to jump to
|
* Params : r0 = address to jump to
|
||||||
* Notes : This sets up everything for a reset
|
* Notes : This sets up everything for a reset
|
||||||
*/
|
*/
|
||||||
|
.pushsection .idmap.text, "ax"
|
||||||
ENTRY(cpu_arm946_reset)
|
ENTRY(cpu_arm946_reset)
|
||||||
mov ip, #0
|
mov ip, #0
|
||||||
mcr p15, 0, ip, c7, c5, 0 @ flush I cache
|
mcr p15, 0, ip, c7, c5, 0 @ flush I cache
|
||||||
|
@ -65,6 +66,8 @@ ENTRY(cpu_arm946_reset)
|
||||||
bic ip, ip, #0x00001000 @ i-cache
|
bic ip, ip, #0x00001000 @ i-cache
|
||||||
mcr p15, 0, ip, c1, c0, 0 @ ctrl register
|
mcr p15, 0, ip, c1, c0, 0 @ ctrl register
|
||||||
mov pc, r0
|
mov pc, r0
|
||||||
|
ENDPROC(cpu_arm946_reset)
|
||||||
|
.popsection
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* cpu_arm946_do_idle()
|
* cpu_arm946_do_idle()
|
||||||
|
|
|
@ -45,8 +45,11 @@ ENTRY(cpu_arm9tdmi_proc_fin)
|
||||||
* Params : loc(r0) address to jump to
|
* Params : loc(r0) address to jump to
|
||||||
* Purpose : Sets up everything for a reset and jump to the location for soft reset.
|
* Purpose : Sets up everything for a reset and jump to the location for soft reset.
|
||||||
*/
|
*/
|
||||||
|
.pushsection .idmap.text, "ax"
|
||||||
ENTRY(cpu_arm9tdmi_reset)
|
ENTRY(cpu_arm9tdmi_reset)
|
||||||
mov pc, r0
|
mov pc, r0
|
||||||
|
ENDPROC(cpu_arm9tdmi_reset)
|
||||||
|
.popsection
|
||||||
|
|
||||||
__CPUINIT
|
__CPUINIT
|
||||||
|
|
||||||
|
|
|
@ -57,6 +57,7 @@ ENTRY(cpu_fa526_proc_fin)
|
||||||
* loc: location to jump to for soft reset
|
* loc: location to jump to for soft reset
|
||||||
*/
|
*/
|
||||||
.align 4
|
.align 4
|
||||||
|
.pushsection .idmap.text, "ax"
|
||||||
ENTRY(cpu_fa526_reset)
|
ENTRY(cpu_fa526_reset)
|
||||||
/* TODO: Use CP8 if possible... */
|
/* TODO: Use CP8 if possible... */
|
||||||
mov ip, #0
|
mov ip, #0
|
||||||
|
@ -73,6 +74,8 @@ ENTRY(cpu_fa526_reset)
|
||||||
nop
|
nop
|
||||||
nop
|
nop
|
||||||
mov pc, r0
|
mov pc, r0
|
||||||
|
ENDPROC(cpu_fa526_reset)
|
||||||
|
.popsection
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* cpu_fa526_do_idle()
|
* cpu_fa526_do_idle()
|
||||||
|
|
|
@ -98,6 +98,7 @@ ENTRY(cpu_feroceon_proc_fin)
|
||||||
* loc: location to jump to for soft reset
|
* loc: location to jump to for soft reset
|
||||||
*/
|
*/
|
||||||
.align 5
|
.align 5
|
||||||
|
.pushsection .idmap.text, "ax"
|
||||||
ENTRY(cpu_feroceon_reset)
|
ENTRY(cpu_feroceon_reset)
|
||||||
mov ip, #0
|
mov ip, #0
|
||||||
mcr p15, 0, ip, c7, c7, 0 @ invalidate I,D caches
|
mcr p15, 0, ip, c7, c7, 0 @ invalidate I,D caches
|
||||||
|
@ -110,6 +111,8 @@ ENTRY(cpu_feroceon_reset)
|
||||||
bic ip, ip, #0x1100 @ ...i...s........
|
bic ip, ip, #0x1100 @ ...i...s........
|
||||||
mcr p15, 0, ip, c1, c0, 0 @ ctrl register
|
mcr p15, 0, ip, c1, c0, 0 @ ctrl register
|
||||||
mov pc, r0
|
mov pc, r0
|
||||||
|
ENDPROC(cpu_feroceon_reset)
|
||||||
|
.popsection
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* cpu_feroceon_do_idle()
|
* cpu_feroceon_do_idle()
|
||||||
|
|
|
@ -69,6 +69,7 @@ ENTRY(cpu_mohawk_proc_fin)
|
||||||
* (same as arm926)
|
* (same as arm926)
|
||||||
*/
|
*/
|
||||||
.align 5
|
.align 5
|
||||||
|
.pushsection .idmap.text, "ax"
|
||||||
ENTRY(cpu_mohawk_reset)
|
ENTRY(cpu_mohawk_reset)
|
||||||
mov ip, #0
|
mov ip, #0
|
||||||
mcr p15, 0, ip, c7, c7, 0 @ invalidate I,D caches
|
mcr p15, 0, ip, c7, c7, 0 @ invalidate I,D caches
|
||||||
|
@ -79,6 +80,8 @@ ENTRY(cpu_mohawk_reset)
|
||||||
bic ip, ip, #0x1100 @ ...i...s........
|
bic ip, ip, #0x1100 @ ...i...s........
|
||||||
mcr p15, 0, ip, c1, c0, 0 @ ctrl register
|
mcr p15, 0, ip, c1, c0, 0 @ ctrl register
|
||||||
mov pc, r0
|
mov pc, r0
|
||||||
|
ENDPROC(cpu_mohawk_reset)
|
||||||
|
.popsection
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* cpu_mohawk_do_idle()
|
* cpu_mohawk_do_idle()
|
||||||
|
|
|
@ -62,6 +62,7 @@ ENTRY(cpu_sa110_proc_fin)
|
||||||
* loc: location to jump to for soft reset
|
* loc: location to jump to for soft reset
|
||||||
*/
|
*/
|
||||||
.align 5
|
.align 5
|
||||||
|
.pushsection .idmap.text, "ax"
|
||||||
ENTRY(cpu_sa110_reset)
|
ENTRY(cpu_sa110_reset)
|
||||||
mov ip, #0
|
mov ip, #0
|
||||||
mcr p15, 0, ip, c7, c7, 0 @ invalidate I,D caches
|
mcr p15, 0, ip, c7, c7, 0 @ invalidate I,D caches
|
||||||
|
@ -74,6 +75,8 @@ ENTRY(cpu_sa110_reset)
|
||||||
bic ip, ip, #0x1100 @ ...i...s........
|
bic ip, ip, #0x1100 @ ...i...s........
|
||||||
mcr p15, 0, ip, c1, c0, 0 @ ctrl register
|
mcr p15, 0, ip, c1, c0, 0 @ ctrl register
|
||||||
mov pc, r0
|
mov pc, r0
|
||||||
|
ENDPROC(cpu_sa110_reset)
|
||||||
|
.popsection
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* cpu_sa110_do_idle(type)
|
* cpu_sa110_do_idle(type)
|
||||||
|
|
|
@ -70,6 +70,7 @@ ENTRY(cpu_sa1100_proc_fin)
|
||||||
* loc: location to jump to for soft reset
|
* loc: location to jump to for soft reset
|
||||||
*/
|
*/
|
||||||
.align 5
|
.align 5
|
||||||
|
.pushsection .idmap.text, "ax"
|
||||||
ENTRY(cpu_sa1100_reset)
|
ENTRY(cpu_sa1100_reset)
|
||||||
mov ip, #0
|
mov ip, #0
|
||||||
mcr p15, 0, ip, c7, c7, 0 @ invalidate I,D caches
|
mcr p15, 0, ip, c7, c7, 0 @ invalidate I,D caches
|
||||||
|
@ -82,6 +83,8 @@ ENTRY(cpu_sa1100_reset)
|
||||||
bic ip, ip, #0x1100 @ ...i...s........
|
bic ip, ip, #0x1100 @ ...i...s........
|
||||||
mcr p15, 0, ip, c1, c0, 0 @ ctrl register
|
mcr p15, 0, ip, c1, c0, 0 @ ctrl register
|
||||||
mov pc, r0
|
mov pc, r0
|
||||||
|
ENDPROC(cpu_sa1100_reset)
|
||||||
|
.popsection
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* cpu_sa1100_do_idle(type)
|
* cpu_sa1100_do_idle(type)
|
||||||
|
|
|
@ -55,6 +55,7 @@ ENTRY(cpu_v6_proc_fin)
|
||||||
* - loc - location to jump to for soft reset
|
* - loc - location to jump to for soft reset
|
||||||
*/
|
*/
|
||||||
.align 5
|
.align 5
|
||||||
|
.pushsection .idmap.text, "ax"
|
||||||
ENTRY(cpu_v6_reset)
|
ENTRY(cpu_v6_reset)
|
||||||
mrc p15, 0, r1, c1, c0, 0 @ ctrl register
|
mrc p15, 0, r1, c1, c0, 0 @ ctrl register
|
||||||
bic r1, r1, #0x1 @ ...............m
|
bic r1, r1, #0x1 @ ...............m
|
||||||
|
@ -62,6 +63,8 @@ ENTRY(cpu_v6_reset)
|
||||||
mov r1, #0
|
mov r1, #0
|
||||||
mcr p15, 0, r1, c7, c5, 4 @ ISB
|
mcr p15, 0, r1, c7, c5, 4 @ ISB
|
||||||
mov pc, r0
|
mov pc, r0
|
||||||
|
ENDPROC(cpu_v6_reset)
|
||||||
|
.popsection
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* cpu_v6_do_idle()
|
* cpu_v6_do_idle()
|
||||||
|
|
|
@ -63,6 +63,7 @@ ENDPROC(cpu_v7_proc_fin)
|
||||||
* caches disabled.
|
* caches disabled.
|
||||||
*/
|
*/
|
||||||
.align 5
|
.align 5
|
||||||
|
.pushsection .idmap.text, "ax"
|
||||||
ENTRY(cpu_v7_reset)
|
ENTRY(cpu_v7_reset)
|
||||||
mrc p15, 0, r1, c1, c0, 0 @ ctrl register
|
mrc p15, 0, r1, c1, c0, 0 @ ctrl register
|
||||||
bic r1, r1, #0x1 @ ...............m
|
bic r1, r1, #0x1 @ ...............m
|
||||||
|
@ -71,6 +72,7 @@ ENTRY(cpu_v7_reset)
|
||||||
isb
|
isb
|
||||||
mov pc, r0
|
mov pc, r0
|
||||||
ENDPROC(cpu_v7_reset)
|
ENDPROC(cpu_v7_reset)
|
||||||
|
.popsection
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* cpu_v7_do_idle()
|
* cpu_v7_do_idle()
|
||||||
|
|
|
@ -105,6 +105,7 @@ ENTRY(cpu_xsc3_proc_fin)
|
||||||
* loc: location to jump to for soft reset
|
* loc: location to jump to for soft reset
|
||||||
*/
|
*/
|
||||||
.align 5
|
.align 5
|
||||||
|
.pushsection .idmap.text, "ax"
|
||||||
ENTRY(cpu_xsc3_reset)
|
ENTRY(cpu_xsc3_reset)
|
||||||
mov r1, #PSR_F_BIT|PSR_I_BIT|SVC_MODE
|
mov r1, #PSR_F_BIT|PSR_I_BIT|SVC_MODE
|
||||||
msr cpsr_c, r1 @ reset CPSR
|
msr cpsr_c, r1 @ reset CPSR
|
||||||
|
@ -119,6 +120,8 @@ ENTRY(cpu_xsc3_reset)
|
||||||
@ already containing those two last instructions to survive.
|
@ already containing those two last instructions to survive.
|
||||||
mcr p15, 0, ip, c8, c7, 0 @ invalidate I and D TLBs
|
mcr p15, 0, ip, c8, c7, 0 @ invalidate I and D TLBs
|
||||||
mov pc, r0
|
mov pc, r0
|
||||||
|
ENDPROC(cpu_xsc3_reset)
|
||||||
|
.popsection
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* cpu_xsc3_do_idle()
|
* cpu_xsc3_do_idle()
|
||||||
|
|
|
@ -142,6 +142,7 @@ ENTRY(cpu_xscale_proc_fin)
|
||||||
* Beware PXA270 erratum E7.
|
* Beware PXA270 erratum E7.
|
||||||
*/
|
*/
|
||||||
.align 5
|
.align 5
|
||||||
|
.pushsection .idmap.text, "ax"
|
||||||
ENTRY(cpu_xscale_reset)
|
ENTRY(cpu_xscale_reset)
|
||||||
mov r1, #PSR_F_BIT|PSR_I_BIT|SVC_MODE
|
mov r1, #PSR_F_BIT|PSR_I_BIT|SVC_MODE
|
||||||
msr cpsr_c, r1 @ reset CPSR
|
msr cpsr_c, r1 @ reset CPSR
|
||||||
|
@ -160,6 +161,8 @@ ENTRY(cpu_xscale_reset)
|
||||||
@ already containing those two last instructions to survive.
|
@ already containing those two last instructions to survive.
|
||||||
mcr p15, 0, ip, c8, c7, 0 @ invalidate I & D TLBs
|
mcr p15, 0, ip, c8, c7, 0 @ invalidate I & D TLBs
|
||||||
mov pc, r0
|
mov pc, r0
|
||||||
|
ENDPROC(cpu_xscale_reset)
|
||||||
|
.popsection
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* cpu_xscale_do_idle()
|
* cpu_xscale_do_idle()
|
||||||
|
|
Loading…
Reference in New Issue