ARM: 8314/1: replace PROCINFO embedded branch with relative offset
This patch replaces the 'branch to setup()' instructions embedded in the PROCINFO structs with the offset to that setup function relative to the base of the struct. This preserves the position independent nature of that field, but uses a data item rather than an instruction. This is mainly done to prevent linker failures on large kernels, where the setup function is out of reach for the branch. Acked-by: Nicolas Pitre <nico@linaro.org> Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
This commit is contained in:
parent
0a6a78b8b3
commit
bf35706f3d
26 changed files with 72 additions and 67 deletions
|
@ -138,9 +138,9 @@ ENTRY(stext)
|
||||||
@ mmu has been enabled
|
@ mmu has been enabled
|
||||||
adr lr, BSYM(1f) @ return (PIC) address
|
adr lr, BSYM(1f) @ return (PIC) address
|
||||||
mov r8, r4 @ set TTBR1 to swapper_pg_dir
|
mov r8, r4 @ set TTBR1 to swapper_pg_dir
|
||||||
ARM( add pc, r10, #PROCINFO_INITFUNC )
|
ldr r12, [r10, #PROCINFO_INITFUNC]
|
||||||
THUMB( add r12, r10, #PROCINFO_INITFUNC )
|
add r12, r12, r10
|
||||||
THUMB( ret r12 )
|
ret r12
|
||||||
1: b __enable_mmu
|
1: b __enable_mmu
|
||||||
ENDPROC(stext)
|
ENDPROC(stext)
|
||||||
.ltorg
|
.ltorg
|
||||||
|
@ -386,10 +386,10 @@ ENTRY(secondary_startup)
|
||||||
ldr r8, [r7, lr] @ get secondary_data.swapper_pg_dir
|
ldr r8, [r7, lr] @ get secondary_data.swapper_pg_dir
|
||||||
adr lr, BSYM(__enable_mmu) @ return address
|
adr lr, BSYM(__enable_mmu) @ return address
|
||||||
mov r13, r12 @ __secondary_switched address
|
mov r13, r12 @ __secondary_switched address
|
||||||
ARM( add pc, r10, #PROCINFO_INITFUNC ) @ initialise processor
|
ldr r12, [r10, #PROCINFO_INITFUNC]
|
||||||
@ (return control reg)
|
add r12, r12, r10 @ initialise processor
|
||||||
THUMB( add r12, r10, #PROCINFO_INITFUNC )
|
@ (return control reg)
|
||||||
THUMB( ret r12 )
|
ret r12
|
||||||
ENDPROC(secondary_startup)
|
ENDPROC(secondary_startup)
|
||||||
ENDPROC(secondary_startup_arm)
|
ENDPROC(secondary_startup_arm)
|
||||||
|
|
||||||
|
|
|
@ -507,7 +507,7 @@ cpu_arm1020_name:
|
||||||
|
|
||||||
.align
|
.align
|
||||||
|
|
||||||
.section ".proc.info.init", #alloc, #execinstr
|
.section ".proc.info.init", #alloc
|
||||||
|
|
||||||
.type __arm1020_proc_info,#object
|
.type __arm1020_proc_info,#object
|
||||||
__arm1020_proc_info:
|
__arm1020_proc_info:
|
||||||
|
@ -519,7 +519,7 @@ __arm1020_proc_info:
|
||||||
.long PMD_TYPE_SECT | \
|
.long PMD_TYPE_SECT | \
|
||||||
PMD_SECT_AP_WRITE | \
|
PMD_SECT_AP_WRITE | \
|
||||||
PMD_SECT_AP_READ
|
PMD_SECT_AP_READ
|
||||||
b __arm1020_setup
|
initfn __arm1020_setup, __arm1020_proc_info
|
||||||
.long cpu_arch_name
|
.long cpu_arch_name
|
||||||
.long cpu_elf_name
|
.long cpu_elf_name
|
||||||
.long HWCAP_SWP | HWCAP_HALF | HWCAP_THUMB
|
.long HWCAP_SWP | HWCAP_HALF | HWCAP_THUMB
|
||||||
|
|
|
@ -465,7 +465,7 @@ arm1020e_crval:
|
||||||
|
|
||||||
.align
|
.align
|
||||||
|
|
||||||
.section ".proc.info.init", #alloc, #execinstr
|
.section ".proc.info.init", #alloc
|
||||||
|
|
||||||
.type __arm1020e_proc_info,#object
|
.type __arm1020e_proc_info,#object
|
||||||
__arm1020e_proc_info:
|
__arm1020e_proc_info:
|
||||||
|
@ -479,7 +479,7 @@ __arm1020e_proc_info:
|
||||||
PMD_BIT4 | \
|
PMD_BIT4 | \
|
||||||
PMD_SECT_AP_WRITE | \
|
PMD_SECT_AP_WRITE | \
|
||||||
PMD_SECT_AP_READ
|
PMD_SECT_AP_READ
|
||||||
b __arm1020e_setup
|
initfn __arm1020e_setup, __arm1020e_proc_info
|
||||||
.long cpu_arch_name
|
.long cpu_arch_name
|
||||||
.long cpu_elf_name
|
.long cpu_elf_name
|
||||||
.long HWCAP_SWP | HWCAP_HALF | HWCAP_THUMB | HWCAP_EDSP
|
.long HWCAP_SWP | HWCAP_HALF | HWCAP_THUMB | HWCAP_EDSP
|
||||||
|
|
|
@ -448,7 +448,7 @@ arm1022_crval:
|
||||||
|
|
||||||
.align
|
.align
|
||||||
|
|
||||||
.section ".proc.info.init", #alloc, #execinstr
|
.section ".proc.info.init", #alloc
|
||||||
|
|
||||||
.type __arm1022_proc_info,#object
|
.type __arm1022_proc_info,#object
|
||||||
__arm1022_proc_info:
|
__arm1022_proc_info:
|
||||||
|
@ -462,7 +462,7 @@ __arm1022_proc_info:
|
||||||
PMD_BIT4 | \
|
PMD_BIT4 | \
|
||||||
PMD_SECT_AP_WRITE | \
|
PMD_SECT_AP_WRITE | \
|
||||||
PMD_SECT_AP_READ
|
PMD_SECT_AP_READ
|
||||||
b __arm1022_setup
|
initfn __arm1022_setup, __arm1022_proc_info
|
||||||
.long cpu_arch_name
|
.long cpu_arch_name
|
||||||
.long cpu_elf_name
|
.long cpu_elf_name
|
||||||
.long HWCAP_SWP | HWCAP_HALF | HWCAP_THUMB | HWCAP_EDSP
|
.long HWCAP_SWP | HWCAP_HALF | HWCAP_THUMB | HWCAP_EDSP
|
||||||
|
|
|
@ -442,7 +442,7 @@ arm1026_crval:
|
||||||
string cpu_arm1026_name, "ARM1026EJ-S"
|
string cpu_arm1026_name, "ARM1026EJ-S"
|
||||||
.align
|
.align
|
||||||
|
|
||||||
.section ".proc.info.init", #alloc, #execinstr
|
.section ".proc.info.init", #alloc
|
||||||
|
|
||||||
.type __arm1026_proc_info,#object
|
.type __arm1026_proc_info,#object
|
||||||
__arm1026_proc_info:
|
__arm1026_proc_info:
|
||||||
|
@ -456,7 +456,7 @@ __arm1026_proc_info:
|
||||||
PMD_BIT4 | \
|
PMD_BIT4 | \
|
||||||
PMD_SECT_AP_WRITE | \
|
PMD_SECT_AP_WRITE | \
|
||||||
PMD_SECT_AP_READ
|
PMD_SECT_AP_READ
|
||||||
b __arm1026_setup
|
initfn __arm1026_setup, __arm1026_proc_info
|
||||||
.long cpu_arch_name
|
.long cpu_arch_name
|
||||||
.long cpu_elf_name
|
.long cpu_elf_name
|
||||||
.long HWCAP_SWP|HWCAP_HALF|HWCAP_THUMB|HWCAP_FAST_MULT|HWCAP_EDSP|HWCAP_JAVA
|
.long HWCAP_SWP|HWCAP_HALF|HWCAP_THUMB|HWCAP_FAST_MULT|HWCAP_EDSP|HWCAP_JAVA
|
||||||
|
|
|
@ -186,7 +186,7 @@ arm720_crval:
|
||||||
* See <asm/procinfo.h> for a definition of this structure.
|
* See <asm/procinfo.h> for a definition of this structure.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
.section ".proc.info.init", #alloc, #execinstr
|
.section ".proc.info.init", #alloc
|
||||||
|
|
||||||
.macro arm720_proc_info name:req, cpu_val:req, cpu_mask:req, cpu_name:req, cpu_flush:req
|
.macro arm720_proc_info name:req, cpu_val:req, cpu_mask:req, cpu_name:req, cpu_flush:req
|
||||||
.type __\name\()_proc_info,#object
|
.type __\name\()_proc_info,#object
|
||||||
|
@ -203,7 +203,7 @@ __\name\()_proc_info:
|
||||||
PMD_BIT4 | \
|
PMD_BIT4 | \
|
||||||
PMD_SECT_AP_WRITE | \
|
PMD_SECT_AP_WRITE | \
|
||||||
PMD_SECT_AP_READ
|
PMD_SECT_AP_READ
|
||||||
b \cpu_flush @ cpu_flush
|
initfn \cpu_flush, __\name\()_proc_info @ cpu_flush
|
||||||
.long cpu_arch_name @ arch_name
|
.long cpu_arch_name @ arch_name
|
||||||
.long cpu_elf_name @ elf_name
|
.long cpu_elf_name @ elf_name
|
||||||
.long HWCAP_SWP | HWCAP_HALF | HWCAP_THUMB @ elf_hwcap
|
.long HWCAP_SWP | HWCAP_HALF | HWCAP_THUMB @ elf_hwcap
|
||||||
|
|
|
@ -132,14 +132,14 @@ __arm740_setup:
|
||||||
|
|
||||||
.align
|
.align
|
||||||
|
|
||||||
.section ".proc.info.init", #alloc, #execinstr
|
.section ".proc.info.init", #alloc
|
||||||
.type __arm740_proc_info,#object
|
.type __arm740_proc_info,#object
|
||||||
__arm740_proc_info:
|
__arm740_proc_info:
|
||||||
.long 0x41807400
|
.long 0x41807400
|
||||||
.long 0xfffffff0
|
.long 0xfffffff0
|
||||||
.long 0
|
.long 0
|
||||||
.long 0
|
.long 0
|
||||||
b __arm740_setup
|
initfn __arm740_setup, __arm740_proc_info
|
||||||
.long cpu_arch_name
|
.long cpu_arch_name
|
||||||
.long cpu_elf_name
|
.long cpu_elf_name
|
||||||
.long HWCAP_SWP | HWCAP_HALF | HWCAP_THUMB | HWCAP_26BIT
|
.long HWCAP_SWP | HWCAP_HALF | HWCAP_THUMB | HWCAP_26BIT
|
||||||
|
|
|
@ -76,7 +76,7 @@ __arm7tdmi_setup:
|
||||||
|
|
||||||
.align
|
.align
|
||||||
|
|
||||||
.section ".proc.info.init", #alloc, #execinstr
|
.section ".proc.info.init", #alloc
|
||||||
|
|
||||||
.macro arm7tdmi_proc_info name:req, cpu_val:req, cpu_mask:req, cpu_name:req, \
|
.macro arm7tdmi_proc_info name:req, cpu_val:req, cpu_mask:req, cpu_name:req, \
|
||||||
extra_hwcaps=0
|
extra_hwcaps=0
|
||||||
|
@ -86,7 +86,7 @@ __\name\()_proc_info:
|
||||||
.long \cpu_mask
|
.long \cpu_mask
|
||||||
.long 0
|
.long 0
|
||||||
.long 0
|
.long 0
|
||||||
b __arm7tdmi_setup
|
initfn __arm7tdmi_setup, __\name\()_proc_info
|
||||||
.long cpu_arch_name
|
.long cpu_arch_name
|
||||||
.long cpu_elf_name
|
.long cpu_elf_name
|
||||||
.long HWCAP_SWP | HWCAP_26BIT | ( \extra_hwcaps )
|
.long HWCAP_SWP | HWCAP_26BIT | ( \extra_hwcaps )
|
||||||
|
|
|
@ -448,7 +448,7 @@ arm920_crval:
|
||||||
|
|
||||||
.align
|
.align
|
||||||
|
|
||||||
.section ".proc.info.init", #alloc, #execinstr
|
.section ".proc.info.init", #alloc
|
||||||
|
|
||||||
.type __arm920_proc_info,#object
|
.type __arm920_proc_info,#object
|
||||||
__arm920_proc_info:
|
__arm920_proc_info:
|
||||||
|
@ -464,7 +464,7 @@ __arm920_proc_info:
|
||||||
PMD_BIT4 | \
|
PMD_BIT4 | \
|
||||||
PMD_SECT_AP_WRITE | \
|
PMD_SECT_AP_WRITE | \
|
||||||
PMD_SECT_AP_READ
|
PMD_SECT_AP_READ
|
||||||
b __arm920_setup
|
initfn __arm920_setup, __arm920_proc_info
|
||||||
.long cpu_arch_name
|
.long cpu_arch_name
|
||||||
.long cpu_elf_name
|
.long cpu_elf_name
|
||||||
.long HWCAP_SWP | HWCAP_HALF | HWCAP_THUMB
|
.long HWCAP_SWP | HWCAP_HALF | HWCAP_THUMB
|
||||||
|
|
|
@ -426,7 +426,7 @@ arm922_crval:
|
||||||
|
|
||||||
.align
|
.align
|
||||||
|
|
||||||
.section ".proc.info.init", #alloc, #execinstr
|
.section ".proc.info.init", #alloc
|
||||||
|
|
||||||
.type __arm922_proc_info,#object
|
.type __arm922_proc_info,#object
|
||||||
__arm922_proc_info:
|
__arm922_proc_info:
|
||||||
|
@ -442,7 +442,7 @@ __arm922_proc_info:
|
||||||
PMD_BIT4 | \
|
PMD_BIT4 | \
|
||||||
PMD_SECT_AP_WRITE | \
|
PMD_SECT_AP_WRITE | \
|
||||||
PMD_SECT_AP_READ
|
PMD_SECT_AP_READ
|
||||||
b __arm922_setup
|
initfn __arm922_setup, __arm922_proc_info
|
||||||
.long cpu_arch_name
|
.long cpu_arch_name
|
||||||
.long cpu_elf_name
|
.long cpu_elf_name
|
||||||
.long HWCAP_SWP | HWCAP_HALF | HWCAP_THUMB
|
.long HWCAP_SWP | HWCAP_HALF | HWCAP_THUMB
|
||||||
|
|
|
@ -494,7 +494,7 @@ arm925_crval:
|
||||||
|
|
||||||
.align
|
.align
|
||||||
|
|
||||||
.section ".proc.info.init", #alloc, #execinstr
|
.section ".proc.info.init", #alloc
|
||||||
|
|
||||||
.macro arm925_proc_info name:req, cpu_val:req, cpu_mask:req, cpu_name:req, cache
|
.macro arm925_proc_info name:req, cpu_val:req, cpu_mask:req, cpu_name:req, cache
|
||||||
.type __\name\()_proc_info,#object
|
.type __\name\()_proc_info,#object
|
||||||
|
@ -510,7 +510,7 @@ __\name\()_proc_info:
|
||||||
PMD_BIT4 | \
|
PMD_BIT4 | \
|
||||||
PMD_SECT_AP_WRITE | \
|
PMD_SECT_AP_WRITE | \
|
||||||
PMD_SECT_AP_READ
|
PMD_SECT_AP_READ
|
||||||
b __arm925_setup
|
initfn __arm925_setup, __\name\()_proc_info
|
||||||
.long cpu_arch_name
|
.long cpu_arch_name
|
||||||
.long cpu_elf_name
|
.long cpu_elf_name
|
||||||
.long HWCAP_SWP | HWCAP_HALF | HWCAP_THUMB
|
.long HWCAP_SWP | HWCAP_HALF | HWCAP_THUMB
|
||||||
|
|
|
@ -474,7 +474,7 @@ arm926_crval:
|
||||||
|
|
||||||
.align
|
.align
|
||||||
|
|
||||||
.section ".proc.info.init", #alloc, #execinstr
|
.section ".proc.info.init", #alloc
|
||||||
|
|
||||||
.type __arm926_proc_info,#object
|
.type __arm926_proc_info,#object
|
||||||
__arm926_proc_info:
|
__arm926_proc_info:
|
||||||
|
@ -490,7 +490,7 @@ __arm926_proc_info:
|
||||||
PMD_BIT4 | \
|
PMD_BIT4 | \
|
||||||
PMD_SECT_AP_WRITE | \
|
PMD_SECT_AP_WRITE | \
|
||||||
PMD_SECT_AP_READ
|
PMD_SECT_AP_READ
|
||||||
b __arm926_setup
|
initfn __arm926_setup, __arm926_proc_info
|
||||||
.long cpu_arch_name
|
.long cpu_arch_name
|
||||||
.long cpu_elf_name
|
.long cpu_elf_name
|
||||||
.long HWCAP_SWP|HWCAP_HALF|HWCAP_THUMB|HWCAP_FAST_MULT|HWCAP_EDSP|HWCAP_JAVA
|
.long HWCAP_SWP|HWCAP_HALF|HWCAP_THUMB|HWCAP_FAST_MULT|HWCAP_EDSP|HWCAP_JAVA
|
||||||
|
|
|
@ -354,14 +354,14 @@ __arm940_setup:
|
||||||
|
|
||||||
.align
|
.align
|
||||||
|
|
||||||
.section ".proc.info.init", #alloc, #execinstr
|
.section ".proc.info.init", #alloc
|
||||||
|
|
||||||
.type __arm940_proc_info,#object
|
.type __arm940_proc_info,#object
|
||||||
__arm940_proc_info:
|
__arm940_proc_info:
|
||||||
.long 0x41009400
|
.long 0x41009400
|
||||||
.long 0xff00fff0
|
.long 0xff00fff0
|
||||||
.long 0
|
.long 0
|
||||||
b __arm940_setup
|
initfn __arm940_setup, __arm940_proc_info
|
||||||
.long cpu_arch_name
|
.long cpu_arch_name
|
||||||
.long cpu_elf_name
|
.long cpu_elf_name
|
||||||
.long HWCAP_SWP | HWCAP_HALF | HWCAP_THUMB
|
.long HWCAP_SWP | HWCAP_HALF | HWCAP_THUMB
|
||||||
|
|
|
@ -409,14 +409,14 @@ __arm946_setup:
|
||||||
|
|
||||||
.align
|
.align
|
||||||
|
|
||||||
.section ".proc.info.init", #alloc, #execinstr
|
.section ".proc.info.init", #alloc
|
||||||
.type __arm946_proc_info,#object
|
.type __arm946_proc_info,#object
|
||||||
__arm946_proc_info:
|
__arm946_proc_info:
|
||||||
.long 0x41009460
|
.long 0x41009460
|
||||||
.long 0xff00fff0
|
.long 0xff00fff0
|
||||||
.long 0
|
.long 0
|
||||||
.long 0
|
.long 0
|
||||||
b __arm946_setup
|
initfn __arm946_setup, __arm946_proc_info
|
||||||
.long cpu_arch_name
|
.long cpu_arch_name
|
||||||
.long cpu_elf_name
|
.long cpu_elf_name
|
||||||
.long HWCAP_SWP | HWCAP_HALF | HWCAP_THUMB
|
.long HWCAP_SWP | HWCAP_HALF | HWCAP_THUMB
|
||||||
|
|
|
@ -70,7 +70,7 @@ __arm9tdmi_setup:
|
||||||
|
|
||||||
.align
|
.align
|
||||||
|
|
||||||
.section ".proc.info.init", #alloc, #execinstr
|
.section ".proc.info.init", #alloc
|
||||||
|
|
||||||
.macro arm9tdmi_proc_info name:req, cpu_val:req, cpu_mask:req, cpu_name:req
|
.macro arm9tdmi_proc_info name:req, cpu_val:req, cpu_mask:req, cpu_name:req
|
||||||
.type __\name\()_proc_info, #object
|
.type __\name\()_proc_info, #object
|
||||||
|
@ -79,7 +79,7 @@ __\name\()_proc_info:
|
||||||
.long \cpu_mask
|
.long \cpu_mask
|
||||||
.long 0
|
.long 0
|
||||||
.long 0
|
.long 0
|
||||||
b __arm9tdmi_setup
|
initfn __arm9tdmi_setup, __\name\()_proc_info
|
||||||
.long cpu_arch_name
|
.long cpu_arch_name
|
||||||
.long cpu_elf_name
|
.long cpu_elf_name
|
||||||
.long HWCAP_SWP | HWCAP_THUMB | HWCAP_26BIT
|
.long HWCAP_SWP | HWCAP_THUMB | HWCAP_26BIT
|
||||||
|
|
|
@ -190,7 +190,7 @@ fa526_cr1_set:
|
||||||
|
|
||||||
.align
|
.align
|
||||||
|
|
||||||
.section ".proc.info.init", #alloc, #execinstr
|
.section ".proc.info.init", #alloc
|
||||||
|
|
||||||
.type __fa526_proc_info,#object
|
.type __fa526_proc_info,#object
|
||||||
__fa526_proc_info:
|
__fa526_proc_info:
|
||||||
|
@ -206,7 +206,7 @@ __fa526_proc_info:
|
||||||
PMD_BIT4 | \
|
PMD_BIT4 | \
|
||||||
PMD_SECT_AP_WRITE | \
|
PMD_SECT_AP_WRITE | \
|
||||||
PMD_SECT_AP_READ
|
PMD_SECT_AP_READ
|
||||||
b __fa526_setup
|
initfn __fa526_setup, __fa526_proc_info
|
||||||
.long cpu_arch_name
|
.long cpu_arch_name
|
||||||
.long cpu_elf_name
|
.long cpu_elf_name
|
||||||
.long HWCAP_SWP | HWCAP_HALF
|
.long HWCAP_SWP | HWCAP_HALF
|
||||||
|
|
|
@ -584,7 +584,7 @@ feroceon_crval:
|
||||||
|
|
||||||
.align
|
.align
|
||||||
|
|
||||||
.section ".proc.info.init", #alloc, #execinstr
|
.section ".proc.info.init", #alloc
|
||||||
|
|
||||||
.macro feroceon_proc_info name:req, cpu_val:req, cpu_mask:req, cpu_name:req, cache:req
|
.macro feroceon_proc_info name:req, cpu_val:req, cpu_mask:req, cpu_name:req, cache:req
|
||||||
.type __\name\()_proc_info,#object
|
.type __\name\()_proc_info,#object
|
||||||
|
@ -601,7 +601,8 @@ __\name\()_proc_info:
|
||||||
PMD_BIT4 | \
|
PMD_BIT4 | \
|
||||||
PMD_SECT_AP_WRITE | \
|
PMD_SECT_AP_WRITE | \
|
||||||
PMD_SECT_AP_READ
|
PMD_SECT_AP_READ
|
||||||
b __feroceon_setup
|
initfn __feroceon_setup, __\name\()_proc_info
|
||||||
|
.long __feroceon_setup
|
||||||
.long cpu_arch_name
|
.long cpu_arch_name
|
||||||
.long cpu_elf_name
|
.long cpu_elf_name
|
||||||
.long HWCAP_SWP|HWCAP_HALF|HWCAP_THUMB|HWCAP_FAST_MULT|HWCAP_EDSP
|
.long HWCAP_SWP|HWCAP_HALF|HWCAP_THUMB|HWCAP_FAST_MULT|HWCAP_EDSP
|
||||||
|
|
|
@ -331,3 +331,7 @@ ENTRY(\name\()_tlb_fns)
|
||||||
.globl \x
|
.globl \x
|
||||||
.equ \x, \y
|
.equ \x, \y
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
|
.macro initfn, func, base
|
||||||
|
.long \func - \base
|
||||||
|
.endm
|
||||||
|
|
|
@ -427,7 +427,7 @@ mohawk_crval:
|
||||||
|
|
||||||
.align
|
.align
|
||||||
|
|
||||||
.section ".proc.info.init", #alloc, #execinstr
|
.section ".proc.info.init", #alloc
|
||||||
|
|
||||||
.type __88sv331x_proc_info,#object
|
.type __88sv331x_proc_info,#object
|
||||||
__88sv331x_proc_info:
|
__88sv331x_proc_info:
|
||||||
|
@ -443,7 +443,7 @@ __88sv331x_proc_info:
|
||||||
PMD_BIT4 | \
|
PMD_BIT4 | \
|
||||||
PMD_SECT_AP_WRITE | \
|
PMD_SECT_AP_WRITE | \
|
||||||
PMD_SECT_AP_READ
|
PMD_SECT_AP_READ
|
||||||
b __mohawk_setup
|
initfn __mohawk_setup, __88sv331x_proc_info
|
||||||
.long cpu_arch_name
|
.long cpu_arch_name
|
||||||
.long cpu_elf_name
|
.long cpu_elf_name
|
||||||
.long HWCAP_SWP|HWCAP_HALF|HWCAP_THUMB|HWCAP_FAST_MULT|HWCAP_EDSP
|
.long HWCAP_SWP|HWCAP_HALF|HWCAP_THUMB|HWCAP_FAST_MULT|HWCAP_EDSP
|
||||||
|
|
|
@ -199,7 +199,7 @@ sa110_crval:
|
||||||
|
|
||||||
.align
|
.align
|
||||||
|
|
||||||
.section ".proc.info.init", #alloc, #execinstr
|
.section ".proc.info.init", #alloc
|
||||||
|
|
||||||
.type __sa110_proc_info,#object
|
.type __sa110_proc_info,#object
|
||||||
__sa110_proc_info:
|
__sa110_proc_info:
|
||||||
|
@ -213,7 +213,7 @@ __sa110_proc_info:
|
||||||
.long PMD_TYPE_SECT | \
|
.long PMD_TYPE_SECT | \
|
||||||
PMD_SECT_AP_WRITE | \
|
PMD_SECT_AP_WRITE | \
|
||||||
PMD_SECT_AP_READ
|
PMD_SECT_AP_READ
|
||||||
b __sa110_setup
|
initfn __sa110_setup, __sa110_proc_info
|
||||||
.long cpu_arch_name
|
.long cpu_arch_name
|
||||||
.long cpu_elf_name
|
.long cpu_elf_name
|
||||||
.long HWCAP_SWP | HWCAP_HALF | HWCAP_26BIT | HWCAP_FAST_MULT
|
.long HWCAP_SWP | HWCAP_HALF | HWCAP_26BIT | HWCAP_FAST_MULT
|
||||||
|
|
|
@ -242,7 +242,7 @@ sa1100_crval:
|
||||||
|
|
||||||
.align
|
.align
|
||||||
|
|
||||||
.section ".proc.info.init", #alloc, #execinstr
|
.section ".proc.info.init", #alloc
|
||||||
|
|
||||||
.macro sa1100_proc_info name:req, cpu_val:req, cpu_mask:req, cpu_name:req
|
.macro sa1100_proc_info name:req, cpu_val:req, cpu_mask:req, cpu_name:req
|
||||||
.type __\name\()_proc_info,#object
|
.type __\name\()_proc_info,#object
|
||||||
|
@ -257,7 +257,7 @@ __\name\()_proc_info:
|
||||||
.long PMD_TYPE_SECT | \
|
.long PMD_TYPE_SECT | \
|
||||||
PMD_SECT_AP_WRITE | \
|
PMD_SECT_AP_WRITE | \
|
||||||
PMD_SECT_AP_READ
|
PMD_SECT_AP_READ
|
||||||
b __sa1100_setup
|
initfn __sa1100_setup, __\name\()_proc_info
|
||||||
.long cpu_arch_name
|
.long cpu_arch_name
|
||||||
.long cpu_elf_name
|
.long cpu_elf_name
|
||||||
.long HWCAP_SWP | HWCAP_HALF | HWCAP_26BIT | HWCAP_FAST_MULT
|
.long HWCAP_SWP | HWCAP_HALF | HWCAP_26BIT | HWCAP_FAST_MULT
|
||||||
|
|
|
@ -264,7 +264,7 @@ v6_crval:
|
||||||
string cpu_elf_name, "v6"
|
string cpu_elf_name, "v6"
|
||||||
.align
|
.align
|
||||||
|
|
||||||
.section ".proc.info.init", #alloc, #execinstr
|
.section ".proc.info.init", #alloc
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Match any ARMv6 processor core.
|
* Match any ARMv6 processor core.
|
||||||
|
@ -287,7 +287,7 @@ __v6_proc_info:
|
||||||
PMD_SECT_XN | \
|
PMD_SECT_XN | \
|
||||||
PMD_SECT_AP_WRITE | \
|
PMD_SECT_AP_WRITE | \
|
||||||
PMD_SECT_AP_READ
|
PMD_SECT_AP_READ
|
||||||
b __v6_setup
|
initfn __v6_setup, __v6_proc_info
|
||||||
.long cpu_arch_name
|
.long cpu_arch_name
|
||||||
.long cpu_elf_name
|
.long cpu_elf_name
|
||||||
/* See also feat_v6_fixup() for HWCAP_TLS */
|
/* See also feat_v6_fixup() for HWCAP_TLS */
|
||||||
|
|
|
@ -462,19 +462,19 @@ __v7_setup_stack:
|
||||||
string cpu_elf_name, "v7"
|
string cpu_elf_name, "v7"
|
||||||
.align
|
.align
|
||||||
|
|
||||||
.section ".proc.info.init", #alloc, #execinstr
|
.section ".proc.info.init", #alloc
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Standard v7 proc info content
|
* Standard v7 proc info content
|
||||||
*/
|
*/
|
||||||
.macro __v7_proc initfunc, mm_mmuflags = 0, io_mmuflags = 0, hwcaps = 0, proc_fns = v7_processor_functions
|
.macro __v7_proc name, initfunc, mm_mmuflags = 0, io_mmuflags = 0, hwcaps = 0, proc_fns = v7_processor_functions
|
||||||
ALT_SMP(.long PMD_TYPE_SECT | PMD_SECT_AP_WRITE | PMD_SECT_AP_READ | \
|
ALT_SMP(.long PMD_TYPE_SECT | PMD_SECT_AP_WRITE | PMD_SECT_AP_READ | \
|
||||||
PMD_SECT_AF | PMD_FLAGS_SMP | \mm_mmuflags)
|
PMD_SECT_AF | PMD_FLAGS_SMP | \mm_mmuflags)
|
||||||
ALT_UP(.long PMD_TYPE_SECT | PMD_SECT_AP_WRITE | PMD_SECT_AP_READ | \
|
ALT_UP(.long PMD_TYPE_SECT | PMD_SECT_AP_WRITE | PMD_SECT_AP_READ | \
|
||||||
PMD_SECT_AF | PMD_FLAGS_UP | \mm_mmuflags)
|
PMD_SECT_AF | PMD_FLAGS_UP | \mm_mmuflags)
|
||||||
.long PMD_TYPE_SECT | PMD_SECT_AP_WRITE | \
|
.long PMD_TYPE_SECT | PMD_SECT_AP_WRITE | \
|
||||||
PMD_SECT_AP_READ | PMD_SECT_AF | \io_mmuflags
|
PMD_SECT_AP_READ | PMD_SECT_AF | \io_mmuflags
|
||||||
W(b) \initfunc
|
initfn \initfunc, \name
|
||||||
.long cpu_arch_name
|
.long cpu_arch_name
|
||||||
.long cpu_elf_name
|
.long cpu_elf_name
|
||||||
.long HWCAP_SWP | HWCAP_HALF | HWCAP_THUMB | HWCAP_FAST_MULT | \
|
.long HWCAP_SWP | HWCAP_HALF | HWCAP_THUMB | HWCAP_FAST_MULT | \
|
||||||
|
@ -494,7 +494,7 @@ __v7_setup_stack:
|
||||||
__v7_ca5mp_proc_info:
|
__v7_ca5mp_proc_info:
|
||||||
.long 0x410fc050
|
.long 0x410fc050
|
||||||
.long 0xff0ffff0
|
.long 0xff0ffff0
|
||||||
__v7_proc __v7_ca5mp_setup
|
__v7_proc __v7_ca5mp_proc_info, __v7_ca5mp_setup
|
||||||
.size __v7_ca5mp_proc_info, . - __v7_ca5mp_proc_info
|
.size __v7_ca5mp_proc_info, . - __v7_ca5mp_proc_info
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -504,7 +504,7 @@ __v7_ca5mp_proc_info:
|
||||||
__v7_ca9mp_proc_info:
|
__v7_ca9mp_proc_info:
|
||||||
.long 0x410fc090
|
.long 0x410fc090
|
||||||
.long 0xff0ffff0
|
.long 0xff0ffff0
|
||||||
__v7_proc __v7_ca9mp_setup, proc_fns = ca9mp_processor_functions
|
__v7_proc __v7_ca9mp_proc_info, __v7_ca9mp_setup, proc_fns = ca9mp_processor_functions
|
||||||
.size __v7_ca9mp_proc_info, . - __v7_ca9mp_proc_info
|
.size __v7_ca9mp_proc_info, . - __v7_ca9mp_proc_info
|
||||||
|
|
||||||
#endif /* CONFIG_ARM_LPAE */
|
#endif /* CONFIG_ARM_LPAE */
|
||||||
|
@ -517,7 +517,7 @@ __v7_ca9mp_proc_info:
|
||||||
__v7_pj4b_proc_info:
|
__v7_pj4b_proc_info:
|
||||||
.long 0x560f5800
|
.long 0x560f5800
|
||||||
.long 0xff0fff00
|
.long 0xff0fff00
|
||||||
__v7_proc __v7_pj4b_setup, proc_fns = pj4b_processor_functions
|
__v7_proc __v7_pj4b_proc_info, __v7_pj4b_setup, proc_fns = pj4b_processor_functions
|
||||||
.size __v7_pj4b_proc_info, . - __v7_pj4b_proc_info
|
.size __v7_pj4b_proc_info, . - __v7_pj4b_proc_info
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -528,7 +528,7 @@ __v7_pj4b_proc_info:
|
||||||
__v7_cr7mp_proc_info:
|
__v7_cr7mp_proc_info:
|
||||||
.long 0x410fc170
|
.long 0x410fc170
|
||||||
.long 0xff0ffff0
|
.long 0xff0ffff0
|
||||||
__v7_proc __v7_cr7mp_setup
|
__v7_proc __v7_cr7mp_proc_info, __v7_cr7mp_setup
|
||||||
.size __v7_cr7mp_proc_info, . - __v7_cr7mp_proc_info
|
.size __v7_cr7mp_proc_info, . - __v7_cr7mp_proc_info
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -538,7 +538,7 @@ __v7_cr7mp_proc_info:
|
||||||
__v7_ca7mp_proc_info:
|
__v7_ca7mp_proc_info:
|
||||||
.long 0x410fc070
|
.long 0x410fc070
|
||||||
.long 0xff0ffff0
|
.long 0xff0ffff0
|
||||||
__v7_proc __v7_ca7mp_setup
|
__v7_proc __v7_ca7mp_proc_info, __v7_ca7mp_setup
|
||||||
.size __v7_ca7mp_proc_info, . - __v7_ca7mp_proc_info
|
.size __v7_ca7mp_proc_info, . - __v7_ca7mp_proc_info
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -548,7 +548,7 @@ __v7_ca7mp_proc_info:
|
||||||
__v7_ca12mp_proc_info:
|
__v7_ca12mp_proc_info:
|
||||||
.long 0x410fc0d0
|
.long 0x410fc0d0
|
||||||
.long 0xff0ffff0
|
.long 0xff0ffff0
|
||||||
__v7_proc __v7_ca12mp_setup
|
__v7_proc __v7_ca12mp_proc_info, __v7_ca12mp_setup
|
||||||
.size __v7_ca12mp_proc_info, . - __v7_ca12mp_proc_info
|
.size __v7_ca12mp_proc_info, . - __v7_ca12mp_proc_info
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -558,7 +558,7 @@ __v7_ca12mp_proc_info:
|
||||||
__v7_ca15mp_proc_info:
|
__v7_ca15mp_proc_info:
|
||||||
.long 0x410fc0f0
|
.long 0x410fc0f0
|
||||||
.long 0xff0ffff0
|
.long 0xff0ffff0
|
||||||
__v7_proc __v7_ca15mp_setup
|
__v7_proc __v7_ca15mp_proc_info, __v7_ca15mp_setup
|
||||||
.size __v7_ca15mp_proc_info, . - __v7_ca15mp_proc_info
|
.size __v7_ca15mp_proc_info, . - __v7_ca15mp_proc_info
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -568,7 +568,7 @@ __v7_ca15mp_proc_info:
|
||||||
__v7_b15mp_proc_info:
|
__v7_b15mp_proc_info:
|
||||||
.long 0x420f00f0
|
.long 0x420f00f0
|
||||||
.long 0xff0ffff0
|
.long 0xff0ffff0
|
||||||
__v7_proc __v7_b15mp_setup
|
__v7_proc __v7_b15mp_proc_info, __v7_b15mp_setup
|
||||||
.size __v7_b15mp_proc_info, . - __v7_b15mp_proc_info
|
.size __v7_b15mp_proc_info, . - __v7_b15mp_proc_info
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -578,7 +578,7 @@ __v7_b15mp_proc_info:
|
||||||
__v7_ca17mp_proc_info:
|
__v7_ca17mp_proc_info:
|
||||||
.long 0x410fc0e0
|
.long 0x410fc0e0
|
||||||
.long 0xff0ffff0
|
.long 0xff0ffff0
|
||||||
__v7_proc __v7_ca17mp_setup
|
__v7_proc __v7_ca17mp_proc_info, __v7_ca17mp_setup
|
||||||
.size __v7_ca17mp_proc_info, . - __v7_ca17mp_proc_info
|
.size __v7_ca17mp_proc_info, . - __v7_ca17mp_proc_info
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -594,7 +594,7 @@ __krait_proc_info:
|
||||||
* do support them. They also don't indicate support for fused multiply
|
* do support them. They also don't indicate support for fused multiply
|
||||||
* instructions even though they actually do support them.
|
* instructions even though they actually do support them.
|
||||||
*/
|
*/
|
||||||
__v7_proc __v7_setup, hwcaps = HWCAP_IDIV | HWCAP_VFPv4
|
__v7_proc __krait_proc_info, __v7_setup, hwcaps = HWCAP_IDIV | HWCAP_VFPv4
|
||||||
.size __krait_proc_info, . - __krait_proc_info
|
.size __krait_proc_info, . - __krait_proc_info
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -604,5 +604,5 @@ __krait_proc_info:
|
||||||
__v7_proc_info:
|
__v7_proc_info:
|
||||||
.long 0x000f0000 @ Required ID value
|
.long 0x000f0000 @ Required ID value
|
||||||
.long 0x000f0000 @ Mask for ID
|
.long 0x000f0000 @ Mask for ID
|
||||||
__v7_proc __v7_setup
|
__v7_proc __v7_proc_info, __v7_setup
|
||||||
.size __v7_proc_info, . - __v7_proc_info
|
.size __v7_proc_info, . - __v7_proc_info
|
||||||
|
|
|
@ -135,7 +135,7 @@ __v7m_setup_stack_top:
|
||||||
string cpu_elf_name "v7m"
|
string cpu_elf_name "v7m"
|
||||||
string cpu_v7m_name "ARMv7-M"
|
string cpu_v7m_name "ARMv7-M"
|
||||||
|
|
||||||
.section ".proc.info.init", #alloc, #execinstr
|
.section ".proc.info.init", #alloc
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Match any ARMv7-M processor core.
|
* Match any ARMv7-M processor core.
|
||||||
|
@ -146,7 +146,7 @@ __v7m_proc_info:
|
||||||
.long 0x000f0000 @ Mask for ID
|
.long 0x000f0000 @ Mask for ID
|
||||||
.long 0 @ proc_info_list.__cpu_mm_mmu_flags
|
.long 0 @ proc_info_list.__cpu_mm_mmu_flags
|
||||||
.long 0 @ proc_info_list.__cpu_io_mmu_flags
|
.long 0 @ proc_info_list.__cpu_io_mmu_flags
|
||||||
b __v7m_setup @ proc_info_list.__cpu_flush
|
initfn __v7m_setup, __v7m_proc_info @ proc_info_list.__cpu_flush
|
||||||
.long cpu_arch_name
|
.long cpu_arch_name
|
||||||
.long cpu_elf_name
|
.long cpu_elf_name
|
||||||
.long HWCAP_HALF|HWCAP_THUMB|HWCAP_FAST_MULT
|
.long HWCAP_HALF|HWCAP_THUMB|HWCAP_FAST_MULT
|
||||||
|
|
|
@ -499,7 +499,7 @@ xsc3_crval:
|
||||||
|
|
||||||
.align
|
.align
|
||||||
|
|
||||||
.section ".proc.info.init", #alloc, #execinstr
|
.section ".proc.info.init", #alloc
|
||||||
|
|
||||||
.macro xsc3_proc_info name:req, cpu_val:req, cpu_mask:req
|
.macro xsc3_proc_info name:req, cpu_val:req, cpu_mask:req
|
||||||
.type __\name\()_proc_info,#object
|
.type __\name\()_proc_info,#object
|
||||||
|
@ -514,7 +514,7 @@ __\name\()_proc_info:
|
||||||
.long PMD_TYPE_SECT | \
|
.long PMD_TYPE_SECT | \
|
||||||
PMD_SECT_AP_WRITE | \
|
PMD_SECT_AP_WRITE | \
|
||||||
PMD_SECT_AP_READ
|
PMD_SECT_AP_READ
|
||||||
b __xsc3_setup
|
initfn __xsc3_setup, __\name\()_proc_info
|
||||||
.long cpu_arch_name
|
.long cpu_arch_name
|
||||||
.long cpu_elf_name
|
.long cpu_elf_name
|
||||||
.long HWCAP_SWP|HWCAP_HALF|HWCAP_THUMB|HWCAP_FAST_MULT|HWCAP_EDSP
|
.long HWCAP_SWP|HWCAP_HALF|HWCAP_THUMB|HWCAP_FAST_MULT|HWCAP_EDSP
|
||||||
|
|
|
@ -612,7 +612,7 @@ xscale_crval:
|
||||||
|
|
||||||
.align
|
.align
|
||||||
|
|
||||||
.section ".proc.info.init", #alloc, #execinstr
|
.section ".proc.info.init", #alloc
|
||||||
|
|
||||||
.macro xscale_proc_info name:req, cpu_val:req, cpu_mask:req, cpu_name:req, cache
|
.macro xscale_proc_info name:req, cpu_val:req, cpu_mask:req, cpu_name:req, cache
|
||||||
.type __\name\()_proc_info,#object
|
.type __\name\()_proc_info,#object
|
||||||
|
@ -627,7 +627,7 @@ __\name\()_proc_info:
|
||||||
.long PMD_TYPE_SECT | \
|
.long PMD_TYPE_SECT | \
|
||||||
PMD_SECT_AP_WRITE | \
|
PMD_SECT_AP_WRITE | \
|
||||||
PMD_SECT_AP_READ
|
PMD_SECT_AP_READ
|
||||||
b __xscale_setup
|
initfn __xscale_setup, __\name\()_proc_info
|
||||||
.long cpu_arch_name
|
.long cpu_arch_name
|
||||||
.long cpu_elf_name
|
.long cpu_elf_name
|
||||||
.long HWCAP_SWP|HWCAP_HALF|HWCAP_THUMB|HWCAP_FAST_MULT|HWCAP_EDSP
|
.long HWCAP_SWP|HWCAP_HALF|HWCAP_THUMB|HWCAP_FAST_MULT|HWCAP_EDSP
|
||||||
|
|
Loading…
Reference in a new issue