mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2025-01-15 06:46:49 +07:00
951c39cd3b
If the paravirt machine is compiles without CONFIG_SMP, the following linker error occurs arch/mips/kernel/head.o: In function `kernel_entry': (.ref.text+0x10): undefined reference to `smp_bootstrap' due to the kernel entry macro always including SMP startup code. Wrap this code in CONFIG_SMP to fix the error. Signed-off-by: Matt Redfearn <matt.redfearn@imgtec.com> Cc: linux-mips@linux-mips.org Cc: linux-kernel@vger.kernel.org Cc: stable@vger.kernel.org # 3.16+ Patchwork: https://patchwork.linux-mips.org/patch/14212/ Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
53 lines
1.0 KiB
C
53 lines
1.0 KiB
C
/*
|
|
* This file is subject to the terms and conditions of the GNU General Public
|
|
* License. See the file "COPYING" in the main directory of this archive
|
|
* for more details.
|
|
*
|
|
* Copyright (C) 2013 Cavium, Inc
|
|
*/
|
|
#ifndef __ASM_MACH_PARAVIRT_KERNEL_ENTRY_H
|
|
#define __ASM_MACH_PARAVIRT_KERNEL_ENTRY_H
|
|
|
|
#define CP0_EBASE $15, 1
|
|
|
|
.macro kernel_entry_setup
|
|
#ifdef CONFIG_SMP
|
|
mfc0 t0, CP0_EBASE
|
|
andi t0, t0, 0x3ff # CPUNum
|
|
beqz t0, 1f
|
|
# CPUs other than zero goto smp_bootstrap
|
|
j smp_bootstrap
|
|
#endif /* CONFIG_SMP */
|
|
|
|
1:
|
|
.endm
|
|
|
|
/*
|
|
* Do SMP slave processor setup necessary before we can safely execute
|
|
* C code.
|
|
*/
|
|
.macro smp_slave_setup
|
|
mfc0 t0, CP0_EBASE
|
|
andi t0, t0, 0x3ff # CPUNum
|
|
slti t1, t0, NR_CPUS
|
|
bnez t1, 1f
|
|
2:
|
|
di
|
|
wait
|
|
b 2b # Unknown CPU, loop forever.
|
|
1:
|
|
PTR_LA t1, paravirt_smp_sp
|
|
PTR_SLL t0, PTR_SCALESHIFT
|
|
PTR_ADDU t1, t1, t0
|
|
3:
|
|
PTR_L sp, 0(t1)
|
|
beqz sp, 3b # Spin until told to proceed.
|
|
|
|
PTR_LA t1, paravirt_smp_gp
|
|
PTR_ADDU t1, t1, t0
|
|
sync
|
|
PTR_L gp, 0(t1)
|
|
.endm
|
|
|
|
#endif /* __ASM_MACH_PARAVIRT_KERNEL_ENTRY_H */
|