Commit 4e991e3c authored by Nicholas Piggin's avatar Nicholas Piggin Committed by Michael Ellerman

powerpc: add CFUNC assembly label annotation

This macro is to be used in assembly where C functions are called.
pcrel addressing mode requires branches to functions with a
localentry value of 1 to have either a trailing nop or @notoc.
This macro permits the latter without changing callers.
Signed-off-by: default avatarNicholas Piggin <npiggin@gmail.com>
[mpe: Add dummy definitions to fix selftests build]
Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
Link: https://msgid.link/20230408021752.862660-5-npiggin@gmail.com
parent dc5dac74
...@@ -180,6 +180,11 @@ ...@@ -180,6 +180,11 @@
#ifdef __KERNEL__ #ifdef __KERNEL__
/*
* Used to name C functions called from asm
*/
#define CFUNC(name) name
/* /*
* We use __powerpc64__ here because we want the compat VDSO to use the 32-bit * We use __powerpc64__ here because we want the compat VDSO to use the 32-bit
* version below in the else case of the ifdef. * version below in the else case of the ifdef.
......
...@@ -1075,7 +1075,7 @@ EXC_COMMON_BEGIN(system_reset_common) ...@@ -1075,7 +1075,7 @@ EXC_COMMON_BEGIN(system_reset_common)
__GEN_COMMON_BODY system_reset __GEN_COMMON_BODY system_reset
addi r3,r1,STACK_INT_FRAME_REGS addi r3,r1,STACK_INT_FRAME_REGS
bl system_reset_exception bl CFUNC(system_reset_exception)
/* Clear MSR_RI before setting SRR0 and SRR1. */ /* Clear MSR_RI before setting SRR0 and SRR1. */
li r9,0 li r9,0
...@@ -1223,9 +1223,9 @@ BEGIN_FTR_SECTION ...@@ -1223,9 +1223,9 @@ BEGIN_FTR_SECTION
END_FTR_SECTION_IFSET(CPU_FTR_HVMODE) END_FTR_SECTION_IFSET(CPU_FTR_HVMODE)
addi r3,r1,STACK_INT_FRAME_REGS addi r3,r1,STACK_INT_FRAME_REGS
BEGIN_FTR_SECTION BEGIN_FTR_SECTION
bl machine_check_early_boot bl CFUNC(machine_check_early_boot)
END_FTR_SECTION(0, 1) // nop out after boot END_FTR_SECTION(0, 1) // nop out after boot
bl machine_check_early bl CFUNC(machine_check_early)
std r3,RESULT(r1) /* Save result */ std r3,RESULT(r1) /* Save result */
ld r12,_MSR(r1) ld r12,_MSR(r1)
...@@ -1286,7 +1286,7 @@ END_FTR_SECTION_IFSET(CPU_FTR_HVMODE | CPU_FTR_ARCH_206) ...@@ -1286,7 +1286,7 @@ END_FTR_SECTION_IFSET(CPU_FTR_HVMODE | CPU_FTR_ARCH_206)
* Queue up the MCE event so that we can log it later, while * Queue up the MCE event so that we can log it later, while
* returning from kernel or opal call. * returning from kernel or opal call.
*/ */
bl machine_check_queue_event bl CFUNC(machine_check_queue_event)
MACHINE_CHECK_HANDLER_WINDUP MACHINE_CHECK_HANDLER_WINDUP
RFI_TO_KERNEL RFI_TO_KERNEL
...@@ -1312,7 +1312,7 @@ EXC_COMMON_BEGIN(machine_check_common) ...@@ -1312,7 +1312,7 @@ EXC_COMMON_BEGIN(machine_check_common)
*/ */
GEN_COMMON machine_check GEN_COMMON machine_check
addi r3,r1,STACK_INT_FRAME_REGS addi r3,r1,STACK_INT_FRAME_REGS
bl machine_check_exception_async bl CFUNC(machine_check_exception_async)
b interrupt_return_srr b interrupt_return_srr
...@@ -1322,7 +1322,7 @@ EXC_COMMON_BEGIN(machine_check_common) ...@@ -1322,7 +1322,7 @@ EXC_COMMON_BEGIN(machine_check_common)
* done. Queue the event then call the idle code to do the wake up. * done. Queue the event then call the idle code to do the wake up.
*/ */
EXC_COMMON_BEGIN(machine_check_idle_common) EXC_COMMON_BEGIN(machine_check_idle_common)
bl machine_check_queue_event bl CFUNC(machine_check_queue_event)
/* /*
* GPR-loss wakeups are relatively straightforward, because the * GPR-loss wakeups are relatively straightforward, because the
...@@ -1361,7 +1361,7 @@ EXC_COMMON_BEGIN(unrecoverable_mce) ...@@ -1361,7 +1361,7 @@ EXC_COMMON_BEGIN(unrecoverable_mce)
BEGIN_FTR_SECTION BEGIN_FTR_SECTION
li r10,0 /* clear MSR_RI */ li r10,0 /* clear MSR_RI */
mtmsrd r10,1 mtmsrd r10,1
bl disable_machine_check bl CFUNC(disable_machine_check)
END_FTR_SECTION_IFSET(CPU_FTR_HVMODE) END_FTR_SECTION_IFSET(CPU_FTR_HVMODE)
ld r10,PACAKMSR(r13) ld r10,PACAKMSR(r13)
li r3,MSR_ME li r3,MSR_ME
...@@ -1378,14 +1378,14 @@ END_FTR_SECTION_IFSET(CPU_FTR_HVMODE) ...@@ -1378,14 +1378,14 @@ END_FTR_SECTION_IFSET(CPU_FTR_HVMODE)
* the early handler which is a true NMI. * the early handler which is a true NMI.
*/ */
addi r3,r1,STACK_INT_FRAME_REGS addi r3,r1,STACK_INT_FRAME_REGS
bl machine_check_exception bl CFUNC(machine_check_exception)
/* /*
* We will not reach here. Even if we did, there is no way out. * We will not reach here. Even if we did, there is no way out.
* Call unrecoverable_exception and die. * Call unrecoverable_exception and die.
*/ */
addi r3,r1,STACK_INT_FRAME_REGS addi r3,r1,STACK_INT_FRAME_REGS
bl unrecoverable_exception bl CFUNC(unrecoverable_exception)
b . b .
...@@ -1440,16 +1440,16 @@ EXC_COMMON_BEGIN(data_access_common) ...@@ -1440,16 +1440,16 @@ EXC_COMMON_BEGIN(data_access_common)
bne- 1f bne- 1f
#ifdef CONFIG_PPC_64S_HASH_MMU #ifdef CONFIG_PPC_64S_HASH_MMU
BEGIN_MMU_FTR_SECTION BEGIN_MMU_FTR_SECTION
bl do_hash_fault bl CFUNC(do_hash_fault)
MMU_FTR_SECTION_ELSE MMU_FTR_SECTION_ELSE
bl do_page_fault bl CFUNC(do_page_fault)
ALT_MMU_FTR_SECTION_END_IFCLR(MMU_FTR_TYPE_RADIX) ALT_MMU_FTR_SECTION_END_IFCLR(MMU_FTR_TYPE_RADIX)
#else #else
bl do_page_fault bl CFUNC(do_page_fault)
#endif #endif
b interrupt_return_srr b interrupt_return_srr
1: bl do_break 1: bl CFUNC(do_break)
/* /*
* do_break() may have changed the NV GPRS while handling a breakpoint. * do_break() may have changed the NV GPRS while handling a breakpoint.
* If so, we need to restore them with their updated values. * If so, we need to restore them with their updated values.
...@@ -1493,7 +1493,7 @@ EXC_COMMON_BEGIN(data_access_slb_common) ...@@ -1493,7 +1493,7 @@ EXC_COMMON_BEGIN(data_access_slb_common)
BEGIN_MMU_FTR_SECTION BEGIN_MMU_FTR_SECTION
/* HPT case, do SLB fault */ /* HPT case, do SLB fault */
addi r3,r1,STACK_INT_FRAME_REGS addi r3,r1,STACK_INT_FRAME_REGS
bl do_slb_fault bl CFUNC(do_slb_fault)
cmpdi r3,0 cmpdi r3,0
bne- 1f bne- 1f
b fast_interrupt_return_srr b fast_interrupt_return_srr
...@@ -1507,7 +1507,7 @@ ALT_MMU_FTR_SECTION_END_IFCLR(MMU_FTR_TYPE_RADIX) ...@@ -1507,7 +1507,7 @@ ALT_MMU_FTR_SECTION_END_IFCLR(MMU_FTR_TYPE_RADIX)
#endif #endif
std r3,RESULT(r1) std r3,RESULT(r1)
addi r3,r1,STACK_INT_FRAME_REGS addi r3,r1,STACK_INT_FRAME_REGS
bl do_bad_segment_interrupt bl CFUNC(do_bad_segment_interrupt)
b interrupt_return_srr b interrupt_return_srr
...@@ -1541,12 +1541,12 @@ EXC_COMMON_BEGIN(instruction_access_common) ...@@ -1541,12 +1541,12 @@ EXC_COMMON_BEGIN(instruction_access_common)
addi r3,r1,STACK_INT_FRAME_REGS addi r3,r1,STACK_INT_FRAME_REGS
#ifdef CONFIG_PPC_64S_HASH_MMU #ifdef CONFIG_PPC_64S_HASH_MMU
BEGIN_MMU_FTR_SECTION BEGIN_MMU_FTR_SECTION
bl do_hash_fault bl CFUNC(do_hash_fault)
MMU_FTR_SECTION_ELSE MMU_FTR_SECTION_ELSE
bl do_page_fault bl CFUNC(do_page_fault)
ALT_MMU_FTR_SECTION_END_IFCLR(MMU_FTR_TYPE_RADIX) ALT_MMU_FTR_SECTION_END_IFCLR(MMU_FTR_TYPE_RADIX)
#else #else
bl do_page_fault bl CFUNC(do_page_fault)
#endif #endif
b interrupt_return_srr b interrupt_return_srr
...@@ -1581,7 +1581,7 @@ EXC_COMMON_BEGIN(instruction_access_slb_common) ...@@ -1581,7 +1581,7 @@ EXC_COMMON_BEGIN(instruction_access_slb_common)
BEGIN_MMU_FTR_SECTION BEGIN_MMU_FTR_SECTION
/* HPT case, do SLB fault */ /* HPT case, do SLB fault */
addi r3,r1,STACK_INT_FRAME_REGS addi r3,r1,STACK_INT_FRAME_REGS
bl do_slb_fault bl CFUNC(do_slb_fault)
cmpdi r3,0 cmpdi r3,0
bne- 1f bne- 1f
b fast_interrupt_return_srr b fast_interrupt_return_srr
...@@ -1595,7 +1595,7 @@ ALT_MMU_FTR_SECTION_END_IFCLR(MMU_FTR_TYPE_RADIX) ...@@ -1595,7 +1595,7 @@ ALT_MMU_FTR_SECTION_END_IFCLR(MMU_FTR_TYPE_RADIX)
#endif #endif
std r3,RESULT(r1) std r3,RESULT(r1)
addi r3,r1,STACK_INT_FRAME_REGS addi r3,r1,STACK_INT_FRAME_REGS
bl do_bad_segment_interrupt bl CFUNC(do_bad_segment_interrupt)
b interrupt_return_srr b interrupt_return_srr
...@@ -1649,7 +1649,7 @@ EXC_VIRT_END(hardware_interrupt, 0x4500, 0x100) ...@@ -1649,7 +1649,7 @@ EXC_VIRT_END(hardware_interrupt, 0x4500, 0x100)
EXC_COMMON_BEGIN(hardware_interrupt_common) EXC_COMMON_BEGIN(hardware_interrupt_common)
GEN_COMMON hardware_interrupt GEN_COMMON hardware_interrupt
addi r3,r1,STACK_INT_FRAME_REGS addi r3,r1,STACK_INT_FRAME_REGS
bl do_IRQ bl CFUNC(do_IRQ)
BEGIN_FTR_SECTION BEGIN_FTR_SECTION
b interrupt_return_hsrr b interrupt_return_hsrr
FTR_SECTION_ELSE FTR_SECTION_ELSE
...@@ -1679,7 +1679,7 @@ EXC_VIRT_END(alignment, 0x4600, 0x100) ...@@ -1679,7 +1679,7 @@ EXC_VIRT_END(alignment, 0x4600, 0x100)
EXC_COMMON_BEGIN(alignment_common) EXC_COMMON_BEGIN(alignment_common)
GEN_COMMON alignment GEN_COMMON alignment
addi r3,r1,STACK_INT_FRAME_REGS addi r3,r1,STACK_INT_FRAME_REGS
bl alignment_exception bl CFUNC(alignment_exception)
HANDLER_RESTORE_NVGPRS() /* instruction emulation may change GPRs */ HANDLER_RESTORE_NVGPRS() /* instruction emulation may change GPRs */
b interrupt_return_srr b interrupt_return_srr
...@@ -1745,7 +1745,7 @@ EXC_COMMON_BEGIN(program_check_common) ...@@ -1745,7 +1745,7 @@ EXC_COMMON_BEGIN(program_check_common)
.Ldo_program_check: .Ldo_program_check:
addi r3,r1,STACK_INT_FRAME_REGS addi r3,r1,STACK_INT_FRAME_REGS
bl program_check_exception bl CFUNC(program_check_exception)
HANDLER_RESTORE_NVGPRS() /* instruction emulation may change GPRs */ HANDLER_RESTORE_NVGPRS() /* instruction emulation may change GPRs */
b interrupt_return_srr b interrupt_return_srr
...@@ -1777,7 +1777,7 @@ EXC_COMMON_BEGIN(fp_unavailable_common) ...@@ -1777,7 +1777,7 @@ EXC_COMMON_BEGIN(fp_unavailable_common)
GEN_COMMON fp_unavailable GEN_COMMON fp_unavailable
bne 1f /* if from user, just load it up */ bne 1f /* if from user, just load it up */
addi r3,r1,STACK_INT_FRAME_REGS addi r3,r1,STACK_INT_FRAME_REGS
bl kernel_fp_unavailable_exception bl CFUNC(kernel_fp_unavailable_exception)
0: trap 0: trap
EMIT_BUG_ENTRY 0b, __FILE__, __LINE__, 0 EMIT_BUG_ENTRY 0b, __FILE__, __LINE__, 0
1: 1:
...@@ -1790,12 +1790,12 @@ BEGIN_FTR_SECTION ...@@ -1790,12 +1790,12 @@ BEGIN_FTR_SECTION
bne- 2f bne- 2f
END_FTR_SECTION_IFSET(CPU_FTR_TM) END_FTR_SECTION_IFSET(CPU_FTR_TM)
#endif #endif
bl load_up_fpu bl CFUNC(load_up_fpu)
b fast_interrupt_return_srr b fast_interrupt_return_srr
#ifdef CONFIG_PPC_TRANSACTIONAL_MEM #ifdef CONFIG_PPC_TRANSACTIONAL_MEM
2: /* User process was in a transaction */ 2: /* User process was in a transaction */
addi r3,r1,STACK_INT_FRAME_REGS addi r3,r1,STACK_INT_FRAME_REGS
bl fp_unavailable_tm bl CFUNC(fp_unavailable_tm)
b interrupt_return_srr b interrupt_return_srr
#endif #endif
...@@ -1839,7 +1839,7 @@ EXC_VIRT_END(decrementer, 0x4900, 0x80) ...@@ -1839,7 +1839,7 @@ EXC_VIRT_END(decrementer, 0x4900, 0x80)
EXC_COMMON_BEGIN(decrementer_common) EXC_COMMON_BEGIN(decrementer_common)
GEN_COMMON decrementer GEN_COMMON decrementer
addi r3,r1,STACK_INT_FRAME_REGS addi r3,r1,STACK_INT_FRAME_REGS
bl timer_interrupt bl CFUNC(timer_interrupt)
b interrupt_return_srr b interrupt_return_srr
...@@ -1925,9 +1925,9 @@ EXC_COMMON_BEGIN(doorbell_super_common) ...@@ -1925,9 +1925,9 @@ EXC_COMMON_BEGIN(doorbell_super_common)
GEN_COMMON doorbell_super GEN_COMMON doorbell_super
addi r3,r1,STACK_INT_FRAME_REGS addi r3,r1,STACK_INT_FRAME_REGS
#ifdef CONFIG_PPC_DOORBELL #ifdef CONFIG_PPC_DOORBELL
bl doorbell_exception bl CFUNC(doorbell_exception)
#else #else
bl unknown_async_exception bl CFUNC(unknown_async_exception)
#endif #endif
b interrupt_return_srr b interrupt_return_srr
...@@ -2091,7 +2091,7 @@ EXC_VIRT_END(single_step, 0x4d00, 0x100) ...@@ -2091,7 +2091,7 @@ EXC_VIRT_END(single_step, 0x4d00, 0x100)
EXC_COMMON_BEGIN(single_step_common) EXC_COMMON_BEGIN(single_step_common)
GEN_COMMON single_step GEN_COMMON single_step
addi r3,r1,STACK_INT_FRAME_REGS addi r3,r1,STACK_INT_FRAME_REGS
bl single_step_exception bl CFUNC(single_step_exception)
b interrupt_return_srr b interrupt_return_srr
...@@ -2126,9 +2126,9 @@ EXC_COMMON_BEGIN(h_data_storage_common) ...@@ -2126,9 +2126,9 @@ EXC_COMMON_BEGIN(h_data_storage_common)
GEN_COMMON h_data_storage GEN_COMMON h_data_storage
addi r3,r1,STACK_INT_FRAME_REGS addi r3,r1,STACK_INT_FRAME_REGS
BEGIN_MMU_FTR_SECTION BEGIN_MMU_FTR_SECTION
bl do_bad_page_fault_segv bl CFUNC(do_bad_page_fault_segv)
MMU_FTR_SECTION_ELSE MMU_FTR_SECTION_ELSE
bl unknown_exception bl CFUNC(unknown_exception)
ALT_MMU_FTR_SECTION_END_IFSET(MMU_FTR_TYPE_RADIX) ALT_MMU_FTR_SECTION_END_IFSET(MMU_FTR_TYPE_RADIX)
b interrupt_return_hsrr b interrupt_return_hsrr
...@@ -2154,7 +2154,7 @@ EXC_VIRT_END(h_instr_storage, 0x4e20, 0x20) ...@@ -2154,7 +2154,7 @@ EXC_VIRT_END(h_instr_storage, 0x4e20, 0x20)
EXC_COMMON_BEGIN(h_instr_storage_common) EXC_COMMON_BEGIN(h_instr_storage_common)
GEN_COMMON h_instr_storage GEN_COMMON h_instr_storage
addi r3,r1,STACK_INT_FRAME_REGS addi r3,r1,STACK_INT_FRAME_REGS
bl unknown_exception bl CFUNC(unknown_exception)
b interrupt_return_hsrr b interrupt_return_hsrr
...@@ -2177,7 +2177,7 @@ EXC_VIRT_END(emulation_assist, 0x4e40, 0x20) ...@@ -2177,7 +2177,7 @@ EXC_VIRT_END(emulation_assist, 0x4e40, 0x20)
EXC_COMMON_BEGIN(emulation_assist_common) EXC_COMMON_BEGIN(emulation_assist_common)
GEN_COMMON emulation_assist GEN_COMMON emulation_assist
addi r3,r1,STACK_INT_FRAME_REGS addi r3,r1,STACK_INT_FRAME_REGS
bl emulation_assist_interrupt bl CFUNC(emulation_assist_interrupt)
HANDLER_RESTORE_NVGPRS() /* instruction emulation may change GPRs */ HANDLER_RESTORE_NVGPRS() /* instruction emulation may change GPRs */
b interrupt_return_hsrr b interrupt_return_hsrr
...@@ -2237,7 +2237,7 @@ EXC_COMMON_BEGIN(hmi_exception_early_common) ...@@ -2237,7 +2237,7 @@ EXC_COMMON_BEGIN(hmi_exception_early_common)
__GEN_COMMON_BODY hmi_exception_early __GEN_COMMON_BODY hmi_exception_early
addi r3,r1,STACK_INT_FRAME_REGS addi r3,r1,STACK_INT_FRAME_REGS
bl hmi_exception_realmode bl CFUNC(hmi_exception_realmode)
cmpdi cr0,r3,0 cmpdi cr0,r3,0
bne 1f bne 1f
...@@ -2255,7 +2255,7 @@ EXC_COMMON_BEGIN(hmi_exception_early_common) ...@@ -2255,7 +2255,7 @@ EXC_COMMON_BEGIN(hmi_exception_early_common)
EXC_COMMON_BEGIN(hmi_exception_common) EXC_COMMON_BEGIN(hmi_exception_common)
GEN_COMMON hmi_exception GEN_COMMON hmi_exception
addi r3,r1,STACK_INT_FRAME_REGS addi r3,r1,STACK_INT_FRAME_REGS
bl handle_hmi_exception bl CFUNC(handle_hmi_exception)
b interrupt_return_hsrr b interrupt_return_hsrr
...@@ -2290,9 +2290,9 @@ EXC_COMMON_BEGIN(h_doorbell_common) ...@@ -2290,9 +2290,9 @@ EXC_COMMON_BEGIN(h_doorbell_common)
GEN_COMMON h_doorbell GEN_COMMON h_doorbell
addi r3,r1,STACK_INT_FRAME_REGS addi r3,r1,STACK_INT_FRAME_REGS
#ifdef CONFIG_PPC_DOORBELL #ifdef CONFIG_PPC_DOORBELL
bl doorbell_exception bl CFUNC(doorbell_exception)
#else #else
bl unknown_async_exception bl CFUNC(unknown_async_exception)
#endif #endif
b interrupt_return_hsrr b interrupt_return_hsrr
...@@ -2325,7 +2325,7 @@ EXC_VIRT_END(h_virt_irq, 0x4ea0, 0x20) ...@@ -2325,7 +2325,7 @@ EXC_VIRT_END(h_virt_irq, 0x4ea0, 0x20)
EXC_COMMON_BEGIN(h_virt_irq_common) EXC_COMMON_BEGIN(h_virt_irq_common)
GEN_COMMON h_virt_irq GEN_COMMON h_virt_irq
addi r3,r1,STACK_INT_FRAME_REGS addi r3,r1,STACK_INT_FRAME_REGS
bl do_IRQ bl CFUNC(do_IRQ)
b interrupt_return_hsrr b interrupt_return_hsrr
...@@ -2374,10 +2374,10 @@ EXC_COMMON_BEGIN(performance_monitor_common) ...@@ -2374,10 +2374,10 @@ EXC_COMMON_BEGIN(performance_monitor_common)
lbz r4,PACAIRQSOFTMASK(r13) lbz r4,PACAIRQSOFTMASK(r13)
cmpdi r4,IRQS_ENABLED cmpdi r4,IRQS_ENABLED
bne 1f bne 1f
bl performance_monitor_exception_async bl CFUNC(performance_monitor_exception_async)
b interrupt_return_srr b interrupt_return_srr
1: 1:
bl performance_monitor_exception_nmi bl CFUNC(performance_monitor_exception_nmi)
/* Clear MSR_RI before setting SRR0 and SRR1. */ /* Clear MSR_RI before setting SRR0 and SRR1. */
li r9,0 li r9,0
mtmsrd r9,1 mtmsrd r9,1
...@@ -2421,19 +2421,19 @@ BEGIN_FTR_SECTION ...@@ -2421,19 +2421,19 @@ BEGIN_FTR_SECTION
bne- 2f bne- 2f
END_FTR_SECTION_NESTED(CPU_FTR_TM, CPU_FTR_TM, 69) END_FTR_SECTION_NESTED(CPU_FTR_TM, CPU_FTR_TM, 69)
#endif #endif
bl load_up_altivec bl CFUNC(load_up_altivec)
b fast_interrupt_return_srr b fast_interrupt_return_srr
#ifdef CONFIG_PPC_TRANSACTIONAL_MEM #ifdef CONFIG_PPC_TRANSACTIONAL_MEM
2: /* User process was in a transaction */ 2: /* User process was in a transaction */
addi r3,r1,STACK_INT_FRAME_REGS addi r3,r1,STACK_INT_FRAME_REGS
bl altivec_unavailable_tm bl CFUNC(altivec_unavailable_tm)
b interrupt_return_srr b interrupt_return_srr
#endif #endif
1: 1:
END_FTR_SECTION_IFSET(CPU_FTR_ALTIVEC) END_FTR_SECTION_IFSET(CPU_FTR_ALTIVEC)
#endif #endif
addi r3,r1,STACK_INT_FRAME_REGS addi r3,r1,STACK_INT_FRAME_REGS
bl altivec_unavailable_exception bl CFUNC(altivec_unavailable_exception)
b interrupt_return_srr b interrupt_return_srr
...@@ -2475,14 +2475,14 @@ BEGIN_FTR_SECTION ...@@ -2475,14 +2475,14 @@ BEGIN_FTR_SECTION
#ifdef CONFIG_PPC_TRANSACTIONAL_MEM #ifdef CONFIG_PPC_TRANSACTIONAL_MEM
2: /* User process was in a transaction */ 2: /* User process was in a transaction */
addi r3,r1,STACK_INT_FRAME_REGS addi r3,r1,STACK_INT_FRAME_REGS
bl vsx_unavailable_tm bl CFUNC(vsx_unavailable_tm)
b interrupt_return_srr b interrupt_return_srr
#endif #endif
1: 1:
END_FTR_SECTION_IFSET(CPU_FTR_VSX) END_FTR_SECTION_IFSET(CPU_FTR_VSX)
#endif #endif
addi r3,r1,STACK_INT_FRAME_REGS addi r3,r1,STACK_INT_FRAME_REGS
bl vsx_unavailable_exception bl CFUNC(vsx_unavailable_exception)
b interrupt_return_srr b interrupt_return_srr
...@@ -2509,7 +2509,7 @@ EXC_VIRT_END(facility_unavailable, 0x4f60, 0x20) ...@@ -2509,7 +2509,7 @@ EXC_VIRT_END(facility_unavailable, 0x4f60, 0x20)
EXC_COMMON_BEGIN(facility_unavailable_common) EXC_COMMON_BEGIN(facility_unavailable_common)
GEN_COMMON facility_unavailable GEN_COMMON facility_unavailable
addi r3,r1,STACK_INT_FRAME_REGS addi r3,r1,STACK_INT_FRAME_REGS
bl facility_unavailable_exception bl CFUNC(facility_unavailable_exception)
HANDLER_RESTORE_NVGPRS() /* instruction emulation may change GPRs */ HANDLER_RESTORE_NVGPRS() /* instruction emulation may change GPRs */
b interrupt_return_srr b interrupt_return_srr
...@@ -2537,7 +2537,7 @@ EXC_VIRT_END(h_facility_unavailable, 0x4f80, 0x20) ...@@ -2537,7 +2537,7 @@ EXC_VIRT_END(h_facility_unavailable, 0x4f80, 0x20)
EXC_COMMON_BEGIN(h_facility_unavailable_common) EXC_COMMON_BEGIN(h_facility_unavailable_common)
GEN_COMMON h_facility_unavailable GEN_COMMON h_facility_unavailable
addi r3,r1,STACK_INT_FRAME_REGS addi r3,r1,STACK_INT_FRAME_REGS
bl facility_unavailable_exception bl CFUNC(facility_unavailable_exception)
/* XXX Shouldn't be necessary in practice */ /* XXX Shouldn't be necessary in practice */
HANDLER_RESTORE_NVGPRS() HANDLER_RESTORE_NVGPRS()
b interrupt_return_hsrr b interrupt_return_hsrr
...@@ -2568,7 +2568,7 @@ EXC_VIRT_NONE(0x5200, 0x100) ...@@ -2568,7 +2568,7 @@ EXC_VIRT_NONE(0x5200, 0x100)
EXC_COMMON_BEGIN(cbe_system_error_common) EXC_COMMON_BEGIN(cbe_system_error_common)
GEN_COMMON cbe_system_error GEN_COMMON cbe_system_error
addi r3,r1,STACK_INT_FRAME_REGS addi r3,r1,STACK_INT_FRAME_REGS
bl cbe_system_error_exception bl CFUNC(cbe_system_error_exception)
b interrupt_return_hsrr b interrupt_return_hsrr
#else /* CONFIG_CBE_RAS */ #else /* CONFIG_CBE_RAS */
...@@ -2599,7 +2599,7 @@ EXC_VIRT_END(instruction_breakpoint, 0x5300, 0x100) ...@@ -2599,7 +2599,7 @@ EXC_VIRT_END(instruction_breakpoint, 0x5300, 0x100)
EXC_COMMON_BEGIN(instruction_breakpoint_common) EXC_COMMON_BEGIN(instruction_breakpoint_common)
GEN_COMMON instruction_breakpoint GEN_COMMON instruction_breakpoint
addi r3,r1,STACK_INT_FRAME_REGS addi r3,r1,STACK_INT_FRAME_REGS
bl instruction_breakpoint_exception bl CFUNC(instruction_breakpoint_exception)
b interrupt_return_srr b interrupt_return_srr
...@@ -2721,7 +2721,7 @@ END_FTR_SECTION_IFSET(CPU_FTR_CFAR) ...@@ -2721,7 +2721,7 @@ END_FTR_SECTION_IFSET(CPU_FTR_CFAR)
EXC_COMMON_BEGIN(denorm_exception_common) EXC_COMMON_BEGIN(denorm_exception_common)
GEN_COMMON denorm_exception GEN_COMMON denorm_exception
addi r3,r1,STACK_INT_FRAME_REGS addi r3,r1,STACK_INT_FRAME_REGS
bl unknown_exception bl CFUNC(unknown_exception)
b interrupt_return_hsrr b interrupt_return_hsrr
...@@ -2738,7 +2738,7 @@ EXC_VIRT_NONE(0x5600, 0x100) ...@@ -2738,7 +2738,7 @@ EXC_VIRT_NONE(0x5600, 0x100)
EXC_COMMON_BEGIN(cbe_maintenance_common) EXC_COMMON_BEGIN(cbe_maintenance_common)
GEN_COMMON cbe_maintenance GEN_COMMON cbe_maintenance
addi r3,r1,STACK_INT_FRAME_REGS addi r3,r1,STACK_INT_FRAME_REGS
bl cbe_maintenance_exception bl CFUNC(cbe_maintenance_exception)
b interrupt_return_hsrr b interrupt_return_hsrr
#else /* CONFIG_CBE_RAS */ #else /* CONFIG_CBE_RAS */
...@@ -2764,10 +2764,10 @@ EXC_COMMON_BEGIN(altivec_assist_common) ...@@ -2764,10 +2764,10 @@ EXC_COMMON_BEGIN(altivec_assist_common)
GEN_COMMON altivec_assist GEN_COMMON altivec_assist
addi r3,r1,STACK_INT_FRAME_REGS addi r3,r1,STACK_INT_FRAME_REGS
#ifdef CONFIG_ALTIVEC #ifdef CONFIG_ALTIVEC
bl altivec_assist_exception bl CFUNC(altivec_assist_exception)
HANDLER_RESTORE_NVGPRS() /* instruction emulation may change GPRs */ HANDLER_RESTORE_NVGPRS() /* instruction emulation may change GPRs */
#else #else
bl unknown_exception bl CFUNC(unknown_exception)
#endif #endif
b interrupt_return_srr b interrupt_return_srr
...@@ -2785,7 +2785,7 @@ EXC_VIRT_NONE(0x5800, 0x100) ...@@ -2785,7 +2785,7 @@ EXC_VIRT_NONE(0x5800, 0x100)
EXC_COMMON_BEGIN(cbe_thermal_common) EXC_COMMON_BEGIN(cbe_thermal_common)
GEN_COMMON cbe_thermal GEN_COMMON cbe_thermal
addi r3,r1,STACK_INT_FRAME_REGS addi r3,r1,STACK_INT_FRAME_REGS
bl cbe_thermal_exception bl CFUNC(cbe_thermal_exception)
b interrupt_return_hsrr b interrupt_return_hsrr
#else /* CONFIG_CBE_RAS */ #else /* CONFIG_CBE_RAS */
...@@ -2818,7 +2818,7 @@ EXC_COMMON_BEGIN(soft_nmi_common) ...@@ -2818,7 +2818,7 @@ EXC_COMMON_BEGIN(soft_nmi_common)
__GEN_COMMON_BODY soft_nmi __GEN_COMMON_BODY soft_nmi
addi r3,r1,STACK_INT_FRAME_REGS addi r3,r1,STACK_INT_FRAME_REGS
bl soft_nmi_interrupt bl CFUNC(soft_nmi_interrupt)
/* Clear MSR_RI before setting SRR0 and SRR1. */ /* Clear MSR_RI before setting SRR0 and SRR1. */
li r9,0 li r9,0
......
...@@ -608,7 +608,7 @@ __boot_from_prom: ...@@ -608,7 +608,7 @@ __boot_from_prom:
/* Do all of the interaction with OF client interface */ /* Do all of the interaction with OF client interface */
mr r8,r26 mr r8,r26
bl prom_init bl CFUNC(prom_init)
#endif /* #CONFIG_PPC_OF_BOOT_TRAMPOLINE */ #endif /* #CONFIG_PPC_OF_BOOT_TRAMPOLINE */
/* We never return. We also hit that trap if trying to boot /* We never return. We also hit that trap if trying to boot
...@@ -836,7 +836,7 @@ __secondary_start: ...@@ -836,7 +836,7 @@ __secondary_start:
* can turn it on below. This is a call to C, which is OK, we're still * can turn it on below. This is a call to C, which is OK, we're still
* running on the emergency stack. * running on the emergency stack.
*/ */
bl early_setup_secondary bl CFUNC(early_setup_secondary)
/* /*
* The primary has initialized our kernel stack for us in the paca, grab * The primary has initialized our kernel stack for us in the paca, grab
...@@ -875,7 +875,7 @@ start_secondary_prolog: ...@@ -875,7 +875,7 @@ start_secondary_prolog:
LOAD_PACA_TOC() LOAD_PACA_TOC()
li r3,0 li r3,0
std r3,0(r1) /* Zero the stack frame pointer */ std r3,0(r1) /* Zero the stack frame pointer */
bl start_secondary bl CFUNC(start_secondary)
b . b .
/* /*
* Reset stack pointer and call start_secondary * Reset stack pointer and call start_secondary
...@@ -886,7 +886,7 @@ _GLOBAL(start_secondary_resume) ...@@ -886,7 +886,7 @@ _GLOBAL(start_secondary_resume)
ld r1,PACAKSAVE(r13) /* Reload kernel stack pointer */ ld r1,PACAKSAVE(r13) /* Reload kernel stack pointer */
li r3,0 li r3,0
std r3,0(r1) /* Zero the stack frame pointer */ std r3,0(r1) /* Zero the stack frame pointer */
bl start_secondary bl CFUNC(start_secondary)
b . b .
#endif #endif
...@@ -991,7 +991,7 @@ start_here_multiplatform: ...@@ -991,7 +991,7 @@ start_here_multiplatform:
*/ */
#ifdef CONFIG_KASAN #ifdef CONFIG_KASAN
bl kasan_early_init bl CFUNC(kasan_early_init)
#endif #endif
/* Restore parameters passed from prom_init/kexec */ /* Restore parameters passed from prom_init/kexec */
mr r3,r31 mr r3,r31
...@@ -1024,7 +1024,7 @@ start_here_common: ...@@ -1024,7 +1024,7 @@ start_here_common:
stb r0,PACAIRQHAPPENED(r13) stb r0,PACAIRQHAPPENED(r13)
/* Generic kernel entry */ /* Generic kernel entry */
bl start_kernel bl CFUNC(start_kernel)
/* Not reached */ /* Not reached */
0: trap 0: trap
......
...@@ -101,12 +101,12 @@ END_FTR_SECTION_IFSET(CPU_FTR_HAS_PPR) ...@@ -101,12 +101,12 @@ END_FTR_SECTION_IFSET(CPU_FTR_HAS_PPR)
* state of kernel code. * state of kernel code.
*/ */
SANITIZE_SYSCALL_GPRS() SANITIZE_SYSCALL_GPRS()
bl system_call_exception bl CFUNC(system_call_exception)
.Lsyscall_vectored_\name\()_exit: .Lsyscall_vectored_\name\()_exit:
addi r4,r1,STACK_INT_FRAME_REGS addi r4,r1,STACK_INT_FRAME_REGS
li r5,1 /* scv */ li r5,1 /* scv */
bl syscall_exit_prepare bl CFUNC(syscall_exit_prepare)
std r1,PACA_EXIT_SAVE_R1(r13) /* save r1 for restart */ std r1,PACA_EXIT_SAVE_R1(r13) /* save r1 for restart */
.Lsyscall_vectored_\name\()_rst_start: .Lsyscall_vectored_\name\()_rst_start:
lbz r11,PACAIRQHAPPENED(r13) lbz r11,PACAIRQHAPPENED(r13)
...@@ -185,7 +185,7 @@ _ASM_NOKPROBE_SYMBOL(syscall_vectored_\name\()_restart) ...@@ -185,7 +185,7 @@ _ASM_NOKPROBE_SYMBOL(syscall_vectored_\name\()_restart)
addi r4,r1,STACK_INT_FRAME_REGS addi r4,r1,STACK_INT_FRAME_REGS
li r11,IRQS_ALL_DISABLED li r11,IRQS_ALL_DISABLED
stb r11,PACAIRQSOFTMASK(r13) stb r11,PACAIRQSOFTMASK(r13)
bl syscall_exit_restart bl CFUNC(syscall_exit_restart)
std r1,PACA_EXIT_SAVE_R1(r13) /* save r1 for restart */ std r1,PACA_EXIT_SAVE_R1(r13) /* save r1 for restart */
b .Lsyscall_vectored_\name\()_rst_start b .Lsyscall_vectored_\name\()_rst_start
1: 1:
...@@ -286,12 +286,12 @@ END_BTB_FLUSH_SECTION ...@@ -286,12 +286,12 @@ END_BTB_FLUSH_SECTION
* state of kernel code. * state of kernel code.
*/ */
SANITIZE_SYSCALL_GPRS() SANITIZE_SYSCALL_GPRS()
bl system_call_exception bl CFUNC(system_call_exception)
.Lsyscall_exit: .Lsyscall_exit:
addi r4,r1,STACK_INT_FRAME_REGS addi r4,r1,STACK_INT_FRAME_REGS
li r5,0 /* !scv */ li r5,0 /* !scv */
bl syscall_exit_prepare bl CFUNC(syscall_exit_prepare)
std r1,PACA_EXIT_SAVE_R1(r13) /* save r1 for restart */ std r1,PACA_EXIT_SAVE_R1(r13) /* save r1 for restart */
#ifdef CONFIG_PPC_BOOK3S #ifdef CONFIG_PPC_BOOK3S
.Lsyscall_rst_start: .Lsyscall_rst_start:
...@@ -372,7 +372,7 @@ _ASM_NOKPROBE_SYMBOL(syscall_restart) ...@@ -372,7 +372,7 @@ _ASM_NOKPROBE_SYMBOL(syscall_restart)
addi r4,r1,STACK_INT_FRAME_REGS addi r4,r1,STACK_INT_FRAME_REGS
li r11,IRQS_ALL_DISABLED li r11,IRQS_ALL_DISABLED
stb r11,PACAIRQSOFTMASK(r13) stb r11,PACAIRQSOFTMASK(r13)
bl syscall_exit_restart bl CFUNC(syscall_exit_restart)
std r1,PACA_EXIT_SAVE_R1(r13) /* save r1 for restart */ std r1,PACA_EXIT_SAVE_R1(r13) /* save r1 for restart */
b .Lsyscall_rst_start b .Lsyscall_rst_start
1: 1:
...@@ -401,7 +401,7 @@ _ASM_NOKPROBE_SYMBOL(fast_interrupt_return_srr) ...@@ -401,7 +401,7 @@ _ASM_NOKPROBE_SYMBOL(fast_interrupt_return_srr)
li r3,0 /* 0 return value, no EMULATE_STACK_STORE */ li r3,0 /* 0 return value, no EMULATE_STACK_STORE */
bne+ .Lfast_kernel_interrupt_return_srr bne+ .Lfast_kernel_interrupt_return_srr
addi r3,r1,STACK_INT_FRAME_REGS addi r3,r1,STACK_INT_FRAME_REGS
bl unrecoverable_exception bl CFUNC(unrecoverable_exception)
b . /* should not get here */ b . /* should not get here */
#else #else
bne .Lfast_user_interrupt_return_srr bne .Lfast_user_interrupt_return_srr
...@@ -419,7 +419,7 @@ _ASM_NOKPROBE_SYMBOL(interrupt_return_\srr\()) ...@@ -419,7 +419,7 @@ _ASM_NOKPROBE_SYMBOL(interrupt_return_\srr\())
interrupt_return_\srr\()_user: /* make backtraces match the _kernel variant */ interrupt_return_\srr\()_user: /* make backtraces match the _kernel variant */
_ASM_NOKPROBE_SYMBOL(interrupt_return_\srr\()_user) _ASM_NOKPROBE_SYMBOL(interrupt_return_\srr\()_user)
addi r3,r1,STACK_INT_FRAME_REGS addi r3,r1,STACK_INT_FRAME_REGS
bl interrupt_exit_user_prepare bl CFUNC(interrupt_exit_user_prepare)
#ifndef CONFIG_INTERRUPT_SANITIZE_REGISTERS #ifndef CONFIG_INTERRUPT_SANITIZE_REGISTERS
cmpdi r3,0 cmpdi r3,0
bne- .Lrestore_nvgprs_\srr bne- .Lrestore_nvgprs_\srr
...@@ -523,7 +523,7 @@ _ASM_NOKPROBE_SYMBOL(interrupt_return_\srr\()_user_restart) ...@@ -523,7 +523,7 @@ _ASM_NOKPROBE_SYMBOL(interrupt_return_\srr\()_user_restart)
addi r3,r1,STACK_INT_FRAME_REGS addi r3,r1,STACK_INT_FRAME_REGS
li r11,IRQS_ALL_DISABLED li r11,IRQS_ALL_DISABLED
stb r11,PACAIRQSOFTMASK(r13) stb r11,PACAIRQSOFTMASK(r13)
bl interrupt_exit_user_restart bl CFUNC(interrupt_exit_user_restart)
std r1,PACA_EXIT_SAVE_R1(r13) /* save r1 for restart */ std r1,PACA_EXIT_SAVE_R1(r13) /* save r1 for restart */
b .Linterrupt_return_\srr\()_user_rst_start b .Linterrupt_return_\srr\()_user_rst_start
1: 1:
...@@ -536,7 +536,7 @@ RESTART_TABLE(.Linterrupt_return_\srr\()_user_rst_start, .Linterrupt_return_\srr ...@@ -536,7 +536,7 @@ RESTART_TABLE(.Linterrupt_return_\srr\()_user_rst_start, .Linterrupt_return_\srr
interrupt_return_\srr\()_kernel: interrupt_return_\srr\()_kernel:
_ASM_NOKPROBE_SYMBOL(interrupt_return_\srr\()_kernel) _ASM_NOKPROBE_SYMBOL(interrupt_return_\srr\()_kernel)
addi r3,r1,STACK_INT_FRAME_REGS addi r3,r1,STACK_INT_FRAME_REGS
bl interrupt_exit_kernel_prepare bl CFUNC(interrupt_exit_kernel_prepare)
std r1,PACA_EXIT_SAVE_R1(r13) /* save r1 for restart */ std r1,PACA_EXIT_SAVE_R1(r13) /* save r1 for restart */
.Linterrupt_return_\srr\()_kernel_rst_start: .Linterrupt_return_\srr\()_kernel_rst_start:
...@@ -705,7 +705,7 @@ _ASM_NOKPROBE_SYMBOL(interrupt_return_\srr\()_kernel_restart) ...@@ -705,7 +705,7 @@ _ASM_NOKPROBE_SYMBOL(interrupt_return_\srr\()_kernel_restart)
addi r3,r1,STACK_INT_FRAME_REGS addi r3,r1,STACK_INT_FRAME_REGS
li r11,IRQS_ALL_DISABLED li r11,IRQS_ALL_DISABLED
stb r11,PACAIRQSOFTMASK(r13) stb r11,PACAIRQSOFTMASK(r13)
bl interrupt_exit_kernel_restart bl CFUNC(interrupt_exit_kernel_restart)
std r1,PACA_EXIT_SAVE_R1(r13) /* save r1 for restart */ std r1,PACA_EXIT_SAVE_R1(r13) /* save r1 for restart */
b .Linterrupt_return_\srr\()_kernel_rst_start b .Linterrupt_return_\srr\()_kernel_rst_start
1: 1:
...@@ -727,20 +727,20 @@ DEFINE_FIXED_SYMBOL(__end_soft_masked, text) ...@@ -727,20 +727,20 @@ DEFINE_FIXED_SYMBOL(__end_soft_masked, text)
#ifdef CONFIG_PPC_BOOK3S #ifdef CONFIG_PPC_BOOK3S
_GLOBAL(ret_from_fork_scv) _GLOBAL(ret_from_fork_scv)
bl schedule_tail bl CFUNC(schedule_tail)
HANDLER_RESTORE_NVGPRS() HANDLER_RESTORE_NVGPRS()
li r3,0 /* fork() return value */ li r3,0 /* fork() return value */
b .Lsyscall_vectored_common_exit b .Lsyscall_vectored_common_exit
#endif #endif
_GLOBAL(ret_from_fork) _GLOBAL(ret_from_fork)
bl schedule_tail bl CFUNC(schedule_tail)
HANDLER_RESTORE_NVGPRS() HANDLER_RESTORE_NVGPRS()
li r3,0 /* fork() return value */ li r3,0 /* fork() return value */
b .Lsyscall_exit b .Lsyscall_exit
_GLOBAL(ret_from_kernel_user_thread) _GLOBAL(ret_from_kernel_user_thread)
bl schedule_tail bl CFUNC(schedule_tail)
mtctr r14 mtctr r14
mr r3,r15 mr r3,r15
#ifdef CONFIG_PPC64_ELF_ABI_V2 #ifdef CONFIG_PPC64_ELF_ABI_V2
......
...@@ -432,7 +432,7 @@ _GLOBAL(kexec_sequence) ...@@ -432,7 +432,7 @@ _GLOBAL(kexec_sequence)
1: 1:
/* copy dest pages, flush whole dest image */ /* copy dest pages, flush whole dest image */
mr r3,r29 mr r3,r29
bl kexec_copy_flush /* (image) */ bl CFUNC(kexec_copy_flush) /* (image) */
/* turn off mmu now if not done earlier */ /* turn off mmu now if not done earlier */
cmpdi r26,0 cmpdi r26,0
......
...@@ -38,7 +38,11 @@ ...@@ -38,7 +38,11 @@
.else .else
addi r4, r5, VDSO_DATA_OFFSET addi r4, r5, VDSO_DATA_OFFSET
.endif .endif
bl DOTSYM(\funct) #ifdef __powerpc64__
bl CFUNC(DOTSYM(\funct))
#else
bl \funct
#endif
PPC_LL r0, PPC_MIN_STKFRM + PPC_LR_STKOFF(r1) PPC_LL r0, PPC_MIN_STKFRM + PPC_LR_STKOFF(r1)
#ifdef __powerpc64__ #ifdef __powerpc64__
PPC_LL r2, PPC_MIN_STKFRM + STK_GOT(r1) PPC_LL r2, PPC_MIN_STKFRM + STK_GOT(r1)
......
...@@ -381,7 +381,7 @@ kvm_secondary_got_guest: ...@@ -381,7 +381,7 @@ kvm_secondary_got_guest:
bne kvm_no_guest bne kvm_no_guest
li r3,0 /* NULL argument */ li r3,0 /* NULL argument */
bl hmi_exception_realmode bl CFUNC(hmi_exception_realmode)
/* /*
* At this point we have finished executing in the guest. * At this point we have finished executing in the guest.
* We need to wait for hwthread_req to become zero, since * We need to wait for hwthread_req to become zero, since
...@@ -458,7 +458,7 @@ kvm_unsplit_nap: ...@@ -458,7 +458,7 @@ kvm_unsplit_nap:
cmpwi r12, BOOK3S_INTERRUPT_HMI cmpwi r12, BOOK3S_INTERRUPT_HMI
bne 55f bne 55f
li r3, 0 /* NULL argument */ li r3, 0 /* NULL argument */
bl hmi_exception_realmode bl CFUNC(hmi_exception_realmode)
55: 55:
/* /*
* Ensure that secondary doesn't nap when it has * Ensure that secondary doesn't nap when it has
...@@ -858,7 +858,7 @@ deliver_guest_interrupt: /* r4 = vcpu, r13 = paca */ ...@@ -858,7 +858,7 @@ deliver_guest_interrupt: /* r4 = vcpu, r13 = paca */
cmpdi r0, 0 cmpdi r0, 0
beq 71f beq 71f
mr r3, r4 mr r3, r4
bl kvmppc_guest_entry_inject_int bl CFUNC(kvmppc_guest_entry_inject_int)
ld r4, HSTATE_KVM_VCPU(r13) ld r4, HSTATE_KVM_VCPU(r13)
71: 71:
ld r6, VCPU_SRR0(r4) ld r6, VCPU_SRR0(r4)
...@@ -1544,7 +1544,7 @@ kvmppc_guest_external: ...@@ -1544,7 +1544,7 @@ kvmppc_guest_external:
/* External interrupt, first check for host_ipi. If this is /* External interrupt, first check for host_ipi. If this is
* set, we know the host wants us out so let's do it now * set, we know the host wants us out so let's do it now
*/ */
bl kvmppc_read_intr bl CFUNC(kvmppc_read_intr)
/* /*
* Restore the active volatile registers after returning from * Restore the active volatile registers after returning from
...@@ -1626,7 +1626,7 @@ kvmppc_hdsi: ...@@ -1626,7 +1626,7 @@ kvmppc_hdsi:
/* Search the hash table. */ /* Search the hash table. */
mr r3, r9 /* vcpu pointer */ mr r3, r9 /* vcpu pointer */
li r7, 1 /* data fault */ li r7, 1 /* data fault */
bl kvmppc_hpte_hv_fault bl CFUNC(kvmppc_hpte_hv_fault)
ld r9, HSTATE_KVM_VCPU(r13) ld r9, HSTATE_KVM_VCPU(r13)
ld r10, VCPU_PC(r9) ld r10, VCPU_PC(r9)
ld r11, VCPU_MSR(r9) ld r11, VCPU_MSR(r9)
...@@ -1702,7 +1702,7 @@ kvmppc_hisi: ...@@ -1702,7 +1702,7 @@ kvmppc_hisi:
mr r4, r10 mr r4, r10
mr r6, r11 mr r6, r11
li r7, 0 /* instruction fault */ li r7, 0 /* instruction fault */
bl kvmppc_hpte_hv_fault bl CFUNC(kvmppc_hpte_hv_fault)
ld r9, HSTATE_KVM_VCPU(r13) ld r9, HSTATE_KVM_VCPU(r13)
ld r10, VCPU_PC(r9) ld r10, VCPU_PC(r9)
ld r11, VCPU_MSR(r9) ld r11, VCPU_MSR(r9)
...@@ -2342,7 +2342,7 @@ hmi_realmode: ...@@ -2342,7 +2342,7 @@ hmi_realmode:
lbz r0, HSTATE_PTID(r13) lbz r0, HSTATE_PTID(r13)
cmpwi r0, 0 cmpwi r0, 0
bne guest_exit_cont bne guest_exit_cont
bl kvmppc_realmode_hmi_handler bl CFUNC(kvmppc_realmode_hmi_handler)
ld r9, HSTATE_KVM_VCPU(r13) ld r9, HSTATE_KVM_VCPU(r13)
li r12, BOOK3S_INTERRUPT_HMI li r12, BOOK3S_INTERRUPT_HMI
b guest_exit_cont b guest_exit_cont
...@@ -2413,7 +2413,7 @@ END_FTR_SECTION_IFSET(CPU_FTR_ARCH_207S) ...@@ -2413,7 +2413,7 @@ END_FTR_SECTION_IFSET(CPU_FTR_ARCH_207S)
7: mflr r0 7: mflr r0
std r0, PPC_LR_STKOFF(r1) std r0, PPC_LR_STKOFF(r1)
stdu r1, -PPC_MIN_STKFRM(r1) stdu r1, -PPC_MIN_STKFRM(r1)
bl kvmppc_read_intr bl CFUNC(kvmppc_read_intr)
nop nop
li r12, BOOK3S_INTERRUPT_EXTERNAL li r12, BOOK3S_INTERRUPT_EXTERNAL
cmpdi r3, 1 cmpdi r3, 1
......
...@@ -45,7 +45,7 @@ _GLOBAL(copypage_power7) ...@@ -45,7 +45,7 @@ _GLOBAL(copypage_power7)
std r4,-STACKFRAMESIZE+STK_REG(R30)(r1) std r4,-STACKFRAMESIZE+STK_REG(R30)(r1)
std r0,16(r1) std r0,16(r1)
stdu r1,-STACKFRAMESIZE(r1) stdu r1,-STACKFRAMESIZE(r1)
bl enter_vmx_ops bl CFUNC(enter_vmx_ops)
cmpwi r3,0 cmpwi r3,0
ld r0,STACKFRAMESIZE+16(r1) ld r0,STACKFRAMESIZE+16(r1)
ld r3,STK_REG(R31)(r1) ld r3,STK_REG(R31)(r1)
...@@ -88,7 +88,7 @@ _GLOBAL(copypage_power7) ...@@ -88,7 +88,7 @@ _GLOBAL(copypage_power7)
addi r3,r3,128 addi r3,r3,128
bdnz 1b bdnz 1b
b exit_vmx_ops /* tail call optimise */ b CFUNC(exit_vmx_ops) /* tail call optimise */
#else #else
li r0,(PAGE_SIZE/128) li r0,(PAGE_SIZE/128)
......
...@@ -47,7 +47,7 @@ ...@@ -47,7 +47,7 @@
ld r15,STK_REG(R15)(r1) ld r15,STK_REG(R15)(r1)
ld r14,STK_REG(R14)(r1) ld r14,STK_REG(R14)(r1)
.Ldo_err3: .Ldo_err3:
bl exit_vmx_usercopy bl CFUNC(exit_vmx_usercopy)
ld r0,STACKFRAMESIZE+16(r1) ld r0,STACKFRAMESIZE+16(r1)
mtlr r0 mtlr r0
b .Lexit b .Lexit
...@@ -272,7 +272,7 @@ err1; stb r0,0(r3) ...@@ -272,7 +272,7 @@ err1; stb r0,0(r3)
mflr r0 mflr r0
std r0,16(r1) std r0,16(r1)
stdu r1,-STACKFRAMESIZE(r1) stdu r1,-STACKFRAMESIZE(r1)
bl enter_vmx_usercopy bl CFUNC(enter_vmx_usercopy)
cmpwi cr1,r3,0 cmpwi cr1,r3,0
ld r0,STACKFRAMESIZE+16(r1) ld r0,STACKFRAMESIZE+16(r1)
ld r3,STK_REG(R31)(r1) ld r3,STK_REG(R31)(r1)
...@@ -488,7 +488,7 @@ err3; lbz r0,0(r4) ...@@ -488,7 +488,7 @@ err3; lbz r0,0(r4)
err3; stb r0,0(r3) err3; stb r0,0(r3)
15: addi r1,r1,STACKFRAMESIZE 15: addi r1,r1,STACKFRAMESIZE
b exit_vmx_usercopy /* tail call optimise */ b CFUNC(exit_vmx_usercopy) /* tail call optimise */
.Lvmx_unaligned_copy: .Lvmx_unaligned_copy:
/* Get the destination 16B aligned */ /* Get the destination 16B aligned */
...@@ -691,5 +691,5 @@ err3; lbz r0,0(r4) ...@@ -691,5 +691,5 @@ err3; lbz r0,0(r4)
err3; stb r0,0(r3) err3; stb r0,0(r3)
15: addi r1,r1,STACKFRAMESIZE 15: addi r1,r1,STACKFRAMESIZE
b exit_vmx_usercopy /* tail call optimise */ b CFUNC(exit_vmx_usercopy) /* tail call optimise */
#endif /* CONFIG_ALTIVEC */ #endif /* CONFIG_ALTIVEC */
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
_GLOBAL(__arch_hweight8) _GLOBAL(__arch_hweight8)
BEGIN_FTR_SECTION BEGIN_FTR_SECTION
b __sw_hweight8 b CFUNC(__sw_hweight8)
nop nop
nop nop
FTR_SECTION_ELSE FTR_SECTION_ELSE
...@@ -26,7 +26,7 @@ EXPORT_SYMBOL(__arch_hweight8) ...@@ -26,7 +26,7 @@ EXPORT_SYMBOL(__arch_hweight8)
_GLOBAL(__arch_hweight16) _GLOBAL(__arch_hweight16)
BEGIN_FTR_SECTION BEGIN_FTR_SECTION
b __sw_hweight16 b CFUNC(__sw_hweight16)
nop nop
nop nop
nop nop
...@@ -49,7 +49,7 @@ EXPORT_SYMBOL(__arch_hweight16) ...@@ -49,7 +49,7 @@ EXPORT_SYMBOL(__arch_hweight16)
_GLOBAL(__arch_hweight32) _GLOBAL(__arch_hweight32)
BEGIN_FTR_SECTION BEGIN_FTR_SECTION
b __sw_hweight32 b CFUNC(__sw_hweight32)
nop nop
nop nop
nop nop
...@@ -75,7 +75,7 @@ EXPORT_SYMBOL(__arch_hweight32) ...@@ -75,7 +75,7 @@ EXPORT_SYMBOL(__arch_hweight32)
_GLOBAL(__arch_hweight64) _GLOBAL(__arch_hweight64)
BEGIN_FTR_SECTION BEGIN_FTR_SECTION
b __sw_hweight64 b CFUNC(__sw_hweight64)
nop nop
nop nop
nop nop
......
...@@ -44,7 +44,7 @@ ...@@ -44,7 +44,7 @@
std r5,-STACKFRAMESIZE+STK_REG(R29)(r1); \ std r5,-STACKFRAMESIZE+STK_REG(R29)(r1); \
std r0,16(r1); \ std r0,16(r1); \
stdu r1,-STACKFRAMESIZE(r1); \ stdu r1,-STACKFRAMESIZE(r1); \
bl enter_vmx_ops; \ bl CFUNC(enter_vmx_ops); \
cmpwi cr1,r3,0; \ cmpwi cr1,r3,0; \
ld r0,STACKFRAMESIZE+16(r1); \ ld r0,STACKFRAMESIZE+16(r1); \
ld r3,STK_REG(R31)(r1); \ ld r3,STK_REG(R31)(r1); \
...@@ -60,7 +60,7 @@ ...@@ -60,7 +60,7 @@
std r5,-STACKFRAMESIZE+STK_REG(R29)(r1); \ std r5,-STACKFRAMESIZE+STK_REG(R29)(r1); \
std r0,16(r1); \ std r0,16(r1); \
stdu r1,-STACKFRAMESIZE(r1); \ stdu r1,-STACKFRAMESIZE(r1); \
bl exit_vmx_ops; \ bl CFUNC(exit_vmx_ops); \
ld r0,STACKFRAMESIZE+16(r1); \ ld r0,STACKFRAMESIZE+16(r1); \
ld r3,STK_REG(R31)(r1); \ ld r3,STK_REG(R31)(r1); \
ld r4,STK_REG(R30)(r1); \ ld r4,STK_REG(R30)(r1); \
......
...@@ -218,7 +218,7 @@ END_FTR_SECTION_IFSET(CPU_FTR_ALTIVEC) ...@@ -218,7 +218,7 @@ END_FTR_SECTION_IFSET(CPU_FTR_ALTIVEC)
std r5,-STACKFRAMESIZE+STK_REG(R29)(r1) std r5,-STACKFRAMESIZE+STK_REG(R29)(r1)
std r0,16(r1) std r0,16(r1)
stdu r1,-STACKFRAMESIZE(r1) stdu r1,-STACKFRAMESIZE(r1)
bl enter_vmx_ops bl CFUNC(enter_vmx_ops)
cmpwi cr1,r3,0 cmpwi cr1,r3,0
ld r0,STACKFRAMESIZE+16(r1) ld r0,STACKFRAMESIZE+16(r1)
ld r3,STK_REG(R31)(r1) ld r3,STK_REG(R31)(r1)
...@@ -433,7 +433,7 @@ END_FTR_SECTION_IFSET(CPU_FTR_ALTIVEC) ...@@ -433,7 +433,7 @@ END_FTR_SECTION_IFSET(CPU_FTR_ALTIVEC)
15: addi r1,r1,STACKFRAMESIZE 15: addi r1,r1,STACKFRAMESIZE
ld r3,-STACKFRAMESIZE+STK_REG(R31)(r1) ld r3,-STACKFRAMESIZE+STK_REG(R31)(r1)
b exit_vmx_ops /* tail call optimise */ b CFUNC(exit_vmx_ops) /* tail call optimise */
.Lvmx_unaligned_copy: .Lvmx_unaligned_copy:
/* Get the destination 16B aligned */ /* Get the destination 16B aligned */
...@@ -637,5 +637,5 @@ END_FTR_SECTION_IFSET(CPU_FTR_ALTIVEC) ...@@ -637,5 +637,5 @@ END_FTR_SECTION_IFSET(CPU_FTR_ALTIVEC)
15: addi r1,r1,STACKFRAMESIZE 15: addi r1,r1,STACKFRAMESIZE
ld r3,-STACKFRAMESIZE+STK_REG(R31)(r1) ld r3,-STACKFRAMESIZE+STK_REG(R31)(r1)
b exit_vmx_ops /* tail call optimise */ b CFUNC(exit_vmx_ops) /* tail call optimise */
#endif /* CONFIG_ALTIVEC */ #endif /* CONFIG_ALTIVEC */
...@@ -44,7 +44,7 @@ hcall_tracepoint_refcount: ...@@ -44,7 +44,7 @@ hcall_tracepoint_refcount:
std r0,16(r1); \ std r0,16(r1); \
addi r4,r1,STK_PARAM(FIRST_REG); \ addi r4,r1,STK_PARAM(FIRST_REG); \
stdu r1,-STACK_FRAME_MIN_SIZE(r1); \ stdu r1,-STACK_FRAME_MIN_SIZE(r1); \
bl __trace_hcall_entry; \ bl CFUNC(__trace_hcall_entry); \
ld r3,STACK_FRAME_MIN_SIZE+STK_PARAM(R3)(r1); \ ld r3,STACK_FRAME_MIN_SIZE+STK_PARAM(R3)(r1); \
ld r4,STACK_FRAME_MIN_SIZE+STK_PARAM(R4)(r1); \ ld r4,STACK_FRAME_MIN_SIZE+STK_PARAM(R4)(r1); \
ld r5,STACK_FRAME_MIN_SIZE+STK_PARAM(R5)(r1); \ ld r5,STACK_FRAME_MIN_SIZE+STK_PARAM(R5)(r1); \
...@@ -63,7 +63,7 @@ hcall_tracepoint_refcount: ...@@ -63,7 +63,7 @@ hcall_tracepoint_refcount:
std r3,STACK_FRAME_MIN_SIZE+STK_PARAM(R3)(r1); \ std r3,STACK_FRAME_MIN_SIZE+STK_PARAM(R3)(r1); \
mr r4,r3; \ mr r4,r3; \
mr r3,r0; \ mr r3,r0; \
bl __trace_hcall_exit; \ bl CFUNC(__trace_hcall_exit); \
ld r0,STACK_FRAME_MIN_SIZE+16(r1); \ ld r0,STACK_FRAME_MIN_SIZE+16(r1); \
addi r1,r1,STACK_FRAME_MIN_SIZE; \ addi r1,r1,STACK_FRAME_MIN_SIZE; \
ld r3,STK_PARAM(R3)(r1); \ ld r3,STK_PARAM(R3)(r1); \
......
...@@ -27,6 +27,7 @@ ...@@ -27,6 +27,7 @@
#define _GLOBAL_TOC(A) _GLOBAL(A) #define _GLOBAL_TOC(A) _GLOBAL(A)
#define _GLOBAL_TOC_KASAN(A) _GLOBAL(A) #define _GLOBAL_TOC_KASAN(A) _GLOBAL(A)
#define _GLOBAL_KASAN(A) _GLOBAL(A) #define _GLOBAL_KASAN(A) _GLOBAL(A)
#define CFUNC(name) name
#define PPC_MTOCRF(A, B) mtocrf A, B #define PPC_MTOCRF(A, B) mtocrf A, B
......
...@@ -9,6 +9,7 @@ ...@@ -9,6 +9,7 @@
#define _GLOBAL(A) FUNC_START(test_ ## A) #define _GLOBAL(A) FUNC_START(test_ ## A)
#define _GLOBAL_TOC(A) FUNC_START(test_ ## A) #define _GLOBAL_TOC(A) FUNC_START(test_ ## A)
#define CFUNC(name) name
#define CONFIG_ALTIVEC #define CONFIG_ALTIVEC
......
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