Commit 571886b2 authored by Jayachandran C's avatar Jayachandran C Committed by Ralf Baechle
Browse files

MIPS: Netlogic: Initialization when !CONFIG_SMP



The core initialization and reset vector setup needs to be done
even when booting uniprocessor. Move this code from smp.c to setup.c

Signed-off-by: default avatarJayachandran C <jchandra@broadcom.com>
Cc: linux-mips@linux-mips.org
Patchwork: https://patchwork.linux-mips.org/patch/5428/


Signed-off-by: default avatarRalf Baechle <ralf@linux-mips.org>
parent 9584c55a
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
obj-y				+= irq.o time.o
obj-y				+= nlm-dma.o
obj-$(CONFIG_SMP)		+= smp.o smpboot.o reset.o
obj-y				+= reset.o
obj-$(CONFIG_SMP)		+= smp.o smpboot.o
obj-$(CONFIG_EARLY_PRINTK)	+= earlycons.o
+0 −6
Original line number Diff line number Diff line
@@ -254,15 +254,9 @@ unsupp:

int __cpuinit nlm_wakeup_secondary_cpus(void)
{
	unsigned long reset_vec;
	char *reset_data;
	int threadmode;

	/* Update reset entry point with CPU init code */
	reset_vec = CKSEG1ADDR(RESET_VEC_PHYS);
	memcpy((void *)reset_vec, (void *)nlm_reset_entry,
			(nlm_reset_entry_end - nlm_reset_entry));

	/* verify the mask and setup core config variables */
	threadmode = nlm_parse_cpumask(&nlm_cpumask);

+8 −0
Original line number Diff line number Diff line
@@ -98,11 +98,19 @@ void nlm_percpu_init(int hwcpuid)

void __init prom_init(void)
{
	void *reset_vec;

	nlm_io_base = CKSEG1ADDR(XLP_DEFAULT_IO_BASE);
	nlm_init_boot_cpu();
	xlp_mmu_init();
	nlm_node_init(0);
	xlp_dt_init((void *)(long)fw_arg0);

	/* Update reset entry point with CPU init code */
	reset_vec = (void *)CKSEG1ADDR(RESET_VEC_PHYS);
	memcpy(reset_vec, (void *)nlm_reset_entry,
			(nlm_reset_entry_end - nlm_reset_entry));

#ifdef CONFIG_SMP
	cpumask_setall(&nlm_cpumask);
	nlm_wakeup_secondary_cpus();
+0 −1
Original line number Diff line number Diff line
@@ -137,7 +137,6 @@ void xlp_wakeup_secondary_cpus()
	 * In case of u-boot, the secondaries are in reset
	 * first wakeup core 0 threads
	 */
	nlm_init_boot_cpu();
	xlp_boot_core0_siblings();

	/* now get other cores out of reset */
+6 −0
Original line number Diff line number Diff line
@@ -196,6 +196,7 @@ void __init prom_init(void)
{
	int *argv, *envp;		/* passed as 32 bit ptrs */
	struct psb_info *prom_infop;
	void *reset_vec;
#ifdef CONFIG_SMP
	int i;
#endif
@@ -208,6 +209,11 @@ void __init prom_init(void)
	nlm_prom_info = *prom_infop;
	nlm_init_node();

	/* Update reset entry point with CPU init code */
	reset_vec = (void *)CKSEG1ADDR(RESET_VEC_PHYS);
	memcpy(reset_vec, (void *)nlm_reset_entry,
			(nlm_reset_entry_end - nlm_reset_entry));

	nlm_early_serial_setup();
	build_arcs_cmdline(argv);
	prom_add_memory();