Commit bf35706f authored by Ard Biesheuvel's avatar Ard Biesheuvel Committed by Russell King

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: default avatarNicolas Pitre <nico@linaro.org>
Signed-off-by: default avatarArd Biesheuvel <ard.biesheuvel@linaro.org>
Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
parent 0a6a78b8
...@@ -138,9 +138,9 @@ ENTRY(stext) ...@@ -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) ...@@ -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: ...@@ -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: ...@@ -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: ...@@ -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: ...@@ -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: ...@@ -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: ...@@ -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: ...@@ -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: ...@@ -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: ...@@ -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: ...@@ -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: ...@@ -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: ...@@ -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: ...@@ -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: ...@@ -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: ...@@ -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: ...@@ -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: ...@@ -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: ...@@ -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: ...@@ -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: ...@@ -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: ...@@ -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: ...@@ -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: ...@@ -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: ...@@ -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: ...@@ -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: ...@@ -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: ...@@ -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: ...@@ -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: ...@@ -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) ...@@ -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: ...@@ -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: ...@@ -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: ...@@ -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: ...@@ -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: ...@@ -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: ...@@ -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: ...@@ -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: ...@@ -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: ...@@ -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: ...@@ -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: ...@@ -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: ...@@ -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: ...@@ -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: ...@@ -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: ...@@ -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: ...@@ -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: ...@@ -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: ...@@ -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: ...@@ -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: ...@@ -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: ...@@ -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: ...@@ -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: ...@@ -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: ...@@ -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: ...@@ -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: ...@@ -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
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment