]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
Merge branch 'bsym' into for-next
authorRussell King <rmk+kernel@arm.linux.org.uk>
Fri, 12 Jun 2015 20:18:38 +0000 (21:18 +0100)
committerRussell King <rmk+kernel@arm.linux.org.uk>
Fri, 12 Jun 2015 20:18:38 +0000 (21:18 +0100)
Conflicts:
arch/arm/kernel/head.S

14 files changed:
arch/arm/boot/compressed/head.S
arch/arm/common/mcpm_head.S
arch/arm/include/asm/assembler.h
arch/arm/include/asm/entry-macro-multi.S
arch/arm/include/asm/unified.h
arch/arm/kernel/entry-armv.S
arch/arm/kernel/entry-common.S
arch/arm/kernel/entry-ftrace.S
arch/arm/kernel/head-nommu.S
arch/arm/kernel/head.S
arch/arm/kernel/sleep.S
arch/arm/kvm/interrupts.S
arch/arm/lib/call_with_stack.S
arch/arm/mm/proc-v7m.S

index 2c45b5709fa494828560891cde6e64926f1e1581..06e983f59980ffc4c0955891d894bbbbaa5cb5e2 100644 (file)
@@ -130,7 +130,7 @@ start:
                .endr
    ARM(                mov     r0, r0          )
    ARM(                b       1f              )
- THUMB(                adr     r12, BSYM(1f)   )
+ THUMB(                badr    r12, 1f         )
  THUMB(                bx      r12             )
 
                .word   _magic_sig      @ Magic numbers to help the loader
@@ -447,7 +447,7 @@ dtb_check_done:
 
                bl      cache_clean_flush
 
-               adr     r0, BSYM(restart)
+               badr    r0, restart
                add     r0, r0, r6
                mov     pc, r0
 
index e02db4b81a66942d307cced79e0cd6c6ae9733b5..08b3bb9bc6a25f9d90b73d284bb4536ec9287777 100644 (file)
@@ -49,7 +49,7 @@
 ENTRY(mcpm_entry_point)
 
  ARM_BE8(setend        be)
- THUMB(        adr     r12, BSYM(1f)   )
+ THUMB(        badr    r12, 1f         )
  THUMB(        bx      r12             )
  THUMB(        .thumb                  )
 1:
index 186270b3e1944351d8b168d25a379477748f9920..4abe57279c66f0ecf2c96c116ae7ce839e646b4c 100644 (file)
        restore_irqs_notrace \oldcpsr
        .endm
 
+/*
+ * Assembly version of "adr rd, BSYM(sym)".  This should only be used to
+ * reference local symbols in the same assembly file which are to be
+ * resolved by the assembler.  Other usage is undefined.
+ */
+       .irp    c,,eq,ne,cs,cc,mi,pl,vs,vc,hi,ls,ge,lt,gt,le,hs,lo
+       .macro  badr\c, rd, sym
+#ifdef CONFIG_THUMB2_KERNEL
+       adr\c   \rd, \sym + 1
+#else
+       adr\c   \rd, \sym
+#endif
+       .endm
+       .endr
+
 /*
  * Get current thread_info.
  */
 THUMB( orr     \reg , \reg , #PSR_T_BIT        )
        bne     1f
        orr     \reg, \reg, #PSR_A_BIT
-       adr     lr, BSYM(2f)
+       badr    lr, 2f
        msr     spsr_cxsf, \reg
        __MSR_ELR_HYP(14)
        __ERET
index 469a2b30fa279bbc1eb280ddb78b1952389dfc77..609184f522ee7b0881ca73076d49d9dfcf265744 100644 (file)
@@ -10,7 +10,7 @@
        @
        @ routine called with r0 = irq number, r1 = struct pt_regs *
        @
-       adrne   lr, BSYM(1b)
+       badrne  lr, 1b
        bne     asm_do_IRQ
 
 #ifdef CONFIG_SMP
@@ -23,7 +23,7 @@
        ALT_SMP(test_for_ipi r0, r2, r6, lr)
        ALT_UP_B(9997f)
        movne   r1, sp
-       adrne   lr, BSYM(1b)
+       badrne  lr, 1b
        bne     do_IPI
 #endif
 9997:
index 200f9a7cd623e613acd89a3d0fbb219b48232604..a91ae499614cbb5e1c23a646a04082026bec061f 100644 (file)
@@ -45,7 +45,6 @@
 #define THUMB(x...)    x
 #ifdef __ASSEMBLY__
 #define W(instr)       instr.w
-#define BSYM(sym)      sym + 1
 #else
 #define WASM(instr)    #instr ".w"
 #endif
@@ -59,7 +58,6 @@
 #define THUMB(x...)
 #ifdef __ASSEMBLY__
 #define W(instr)       instr
-#define BSYM(sym)      sym
 #else
 #define WASM(instr)    #instr
 #endif
index 570306c494068f2ac8f841eb3344b4f981f7a3bb..f8f7398c74c2d355d63a2bf3ef3faec225d2011c 100644 (file)
@@ -40,7 +40,7 @@
 #ifdef CONFIG_MULTI_IRQ_HANDLER
        ldr     r1, =handle_arch_irq
        mov     r0, sp
-       adr     lr, BSYM(9997f)
+       badr    lr, 9997f
        ldr     pc, [r1]
 #else
        arch_irq_handler_default
@@ -273,7 +273,7 @@ __und_svc:
        str     r4, [sp, #S_PC]
        orr     r0, r9, r0, lsl #16
 #endif
-       adr     r9, BSYM(__und_svc_finish)
+       badr    r9, __und_svc_finish
        mov     r2, r4
        bl      call_fpe
 
@@ -469,7 +469,7 @@ __und_usr:
        @ instruction, or the more conventional lr if we are to treat
        @ this as a real undefined instruction
        @
-       adr     r9, BSYM(ret_from_exception)
+       badr    r9, ret_from_exception
 
        @ IRQs must be enabled before attempting to read the instruction from
        @ user space since that could cause a page/translation fault if the
@@ -486,7 +486,7 @@ __und_usr:
        @ r2 = PC value for the following instruction (:= regs->ARM_pc)
        @ r4 = PC value for the faulting instruction
        @ lr = 32-bit undefined instruction function
-       adr     lr, BSYM(__und_usr_fault_32)
+       badr    lr, __und_usr_fault_32
        b       call_fpe
 
 __und_usr_thumb:
@@ -522,7 +522,7 @@ ARM_BE8(rev16       r0, r0)                         @ little endian instruction
        add     r2, r2, #2                      @ r2 is PC + 2, make it PC + 4
        str     r2, [sp, #S_PC]                 @ it's a 2x16bit instr, update
        orr     r0, r0, r5, lsl #16
-       adr     lr, BSYM(__und_usr_fault_32)
+       badr    lr, __und_usr_fault_32
        @ r0 = the two 16-bit Thumb instructions which caused the exception
        @ r2 = PC value for the following Thumb instruction (:= regs->ARM_pc)
        @ r4 = PC value for the first 16-bit Thumb instruction
@@ -716,7 +716,7 @@ __und_usr_fault_32:
 __und_usr_fault_16:
        mov     r1, #2
 1:     mov     r0, sp
-       adr     lr, BSYM(ret_from_exception)
+       badr    lr, ret_from_exception
        b       __und_fault
 ENDPROC(__und_usr_fault_32)
 ENDPROC(__und_usr_fault_16)
index 4e7f40c577e6e4fe9df3dd677b0d146b1ceb13c2..92828a1dec80c1c33d051d9b76063727598495d5 100644 (file)
@@ -90,7 +90,7 @@ ENTRY(ret_from_fork)
        bl      schedule_tail
        cmp     r5, #0
        movne   r0, r4
-       adrne   lr, BSYM(1f)
+       badrne  lr, 1f
        retne   r5
 1:     get_thread_info tsk
        b       ret_slow_syscall
@@ -198,7 +198,7 @@ local_restart:
        bne     __sys_trace
 
        cmp     scno, #NR_syscalls              @ check upper syscall limit
-       adr     lr, BSYM(ret_fast_syscall)      @ return address
+       badr    lr, ret_fast_syscall            @ return address
        ldrcc   pc, [tbl, scno, lsl #2]         @ call sys_* routine
 
        add     r1, sp, #S_OFF
@@ -233,7 +233,7 @@ __sys_trace:
        add     r0, sp, #S_OFF
        bl      syscall_trace_enter
 
-       adr     lr, BSYM(__sys_trace_return)    @ return address
+       badr    lr, __sys_trace_return          @ return address
        mov     scno, r0                        @ syscall number (possibly new)
        add     r1, sp, #S_R0 + S_OFF           @ pointer to regs
        cmp     scno, #NR_syscalls              @ check upper syscall limit
index fe57c73e70a4ecf92119a8bfaec653d24f59c935..c73c4030ca5dd549e3b102d4a77f493e1549e02d 100644 (file)
@@ -87,7 +87,7 @@
 
 1:     mcount_get_lr   r1                      @ lr of instrumented func
        mcount_adjust_addr      r0, lr          @ instrumented function
-       adr     lr, BSYM(2f)
+       badr    lr, 2f
        mov     pc, r2
 2:     mcount_exit
 .endm
index 84da14b7cd04b5e1905bd1f67199d68d4332c4d8..c9660167ef1aad97d5cd618fed27814f4bf102c8 100644 (file)
@@ -46,7 +46,7 @@ ENTRY(stext)
        .arm
 ENTRY(stext)
 
- THUMB(        adr     r9, BSYM(1f)    )       @ Kernel is always entered in ARM.
+ THUMB(        badr    r9, 1f          )       @ Kernel is always entered in ARM.
  THUMB(        bx      r9              )       @ If this is a Thumb-2 kernel,
  THUMB(        .thumb                  )       @ switch to Thumb now.
  THUMB(1:                      )
@@ -79,7 +79,7 @@ ENTRY(stext)
 #endif
        ldr     r13, =__mmap_switched           @ address to jump to after
                                                @ initialising sctlr
-       adr     lr, BSYM(1f)                    @ return (PIC) address
+       badr    lr, 1f                          @ return (PIC) address
        ldr     r12, [r10, #PROCINFO_INITFUNC]
        add     r12, r12, r10
        ret     r12
@@ -115,7 +115,7 @@ ENTRY(secondary_startup)
        bl      __setup_mpu                     @ Initialize the MPU
 #endif
 
-       adr     lr, BSYM(__after_proc_init)     @ return address
+       badr    lr, __after_proc_init           @ return address
        mov     r13, r12                        @ __secondary_switched address
        ldr     r12, [r10, #PROCINFO_INITFUNC]
        add     r12, r12, r10
index e13c9cb2e99fa236d2a4650228cafa182558c23f..bd755d97e459d77ff05cc8a1264f336c58c1b598 100644 (file)
@@ -80,7 +80,7 @@
 ENTRY(stext)
  ARM_BE8(setend        be )                    @ ensure we are in BE8 mode
 
- THUMB(        adr     r9, BSYM(1f)    )       @ Kernel is always entered in ARM.
+ THUMB(        badr    r9, 1f          )       @ Kernel is always entered in ARM.
  THUMB(        bx      r9              )       @ If this is a Thumb-2 kernel,
  THUMB(        .thumb                  )       @ switch to Thumb now.
  THUMB(1:                      )
@@ -148,7 +148,7 @@ ENTRY(stext)
         */
        ldr     r13, =__mmap_switched           @ address to jump to after
                                                @ mmu has been enabled
-       adr     lr, BSYM(1f)                    @ return (PIC) address
+       badr    lr, 1f                          @ return (PIC) address
 #ifdef CONFIG_ARM_LPAE
        mov     r5, #0                          @ high TTBR0
        mov     r8, r4, lsr #12                 @ TTBR1 is swapper_pg_dir pfn
@@ -364,7 +364,7 @@ __turn_mmu_on_loc:
        .text
        .arm
 ENTRY(secondary_startup_arm)
- THUMB(        adr     r9, BSYM(1f)    )       @ Kernel is entered in ARM.
+ THUMB(        badr    r9, 1f          )       @ Kernel is entered in ARM.
  THUMB(        bx      r9              )       @ If this is a Thumb-2 kernel,
  THUMB(        .thumb                  )       @ switch to Thumb now.
  THUMB(1:                      )
@@ -400,7 +400,7 @@ ENTRY(secondary_startup)
        add     r3, r7, lr
        ldrd    r4, [r3, #0]                    @ get secondary_data.pgdir
        ldr     r8, [r3, #8]                    @ get secondary_data.swapper_pg_dir
-       adr     lr, BSYM(__enable_mmu)          @ return address
+       badr    lr, __enable_mmu                @ return address
        mov     r13, r12                        @ __secondary_switched address
        ldr     r12, [r10, #PROCINFO_INITFUNC]
        add     r12, r12, r10                   @ initialise processor
index 7d37bfc508306b52a735f2de8d5c27d795bb6fa3..76bb3128e135673701a282bd0d571eb02e76e87d 100644 (file)
@@ -81,7 +81,7 @@ ENTRY(__cpu_suspend)
        mov     r1, r4                  @ size of save block
        add     r0, sp, #8              @ pointer to save block
        bl      __cpu_suspend_save
-       adr     lr, BSYM(cpu_suspend_abort)
+       badr    lr, cpu_suspend_abort
        ldmfd   sp!, {r0, pc}           @ call suspend fn
 ENDPROC(__cpu_suspend)
        .ltorg
index 79caf79b304a0ddc8999f437bae42b57809b9ff0..87847d2c5f9984cd18ab62355447be8d883f3892 100644 (file)
@@ -309,7 +309,7 @@ ENTRY(kvm_call_hyp)
 THUMB( orr     r2, r2, #PSR_T_BIT      )
        msr     spsr_cxsf, r2
        mrs     r1, ELR_hyp
-       ldr     r2, =BSYM(panic)
+       ldr     r2, =panic
        msr     ELR_hyp, r2
        ldr     r0, =\panic_str
        clrex                           @ Clear exclusive monitor
index ed1a421813cba8c4f0b83047e7457983a4faae31..bf3a4088920569399dba9e67bd44ba3699861ae3 100644 (file)
@@ -35,7 +35,7 @@ ENTRY(call_with_stack)
        mov     r2, r0
        mov     r0, r1
 
-       adr     lr, BSYM(1f)
+       badr    lr, 1f
        ret     r2
 
 1:     ldr     lr, [sp]
index e08e1f2bab76bad4926ecb4b02bbd91149e7d0a3..67d9209077c6b586debd9d745e8f3e3389c92567 100644 (file)
@@ -98,7 +98,7 @@ __v7m_setup:
        str     r5, [r0, V7M_SCB_SHPR3] @ set PendSV priority
 
        @ SVC to run the kernel in this mode
-       adr     r1, BSYM(1f)
+       badr    r1, 1f
        ldr     r5, [r12, #11 * 4]      @ read the SVC vector entry
        str     r1, [r12, #11 * 4]      @ write the temporary SVC vector entry
        mov     r6, lr                  @ save LR