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

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
obj-y += irq.o time.o obj-y += irq.o time.o
obj-y += nlm-dma.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 obj-$(CONFIG_EARLY_PRINTK) += earlycons.o
...@@ -254,15 +254,9 @@ static int nlm_parse_cpumask(cpumask_t *wakeup_mask) ...@@ -254,15 +254,9 @@ static int nlm_parse_cpumask(cpumask_t *wakeup_mask)
int __cpuinit nlm_wakeup_secondary_cpus(void) int __cpuinit nlm_wakeup_secondary_cpus(void)
{ {
unsigned long reset_vec;
char *reset_data; char *reset_data;
int threadmode; 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 */ /* verify the mask and setup core config variables */
threadmode = nlm_parse_cpumask(&nlm_cpumask); threadmode = nlm_parse_cpumask(&nlm_cpumask);
......
...@@ -98,11 +98,19 @@ void nlm_percpu_init(int hwcpuid) ...@@ -98,11 +98,19 @@ void nlm_percpu_init(int hwcpuid)
void __init prom_init(void) void __init prom_init(void)
{ {
void *reset_vec;
nlm_io_base = CKSEG1ADDR(XLP_DEFAULT_IO_BASE); nlm_io_base = CKSEG1ADDR(XLP_DEFAULT_IO_BASE);
nlm_init_boot_cpu();
xlp_mmu_init(); xlp_mmu_init();
nlm_node_init(0); nlm_node_init(0);
xlp_dt_init((void *)(long)fw_arg0); 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 #ifdef CONFIG_SMP
cpumask_setall(&nlm_cpumask); cpumask_setall(&nlm_cpumask);
nlm_wakeup_secondary_cpus(); nlm_wakeup_secondary_cpus();
......
...@@ -137,7 +137,6 @@ void xlp_wakeup_secondary_cpus() ...@@ -137,7 +137,6 @@ void xlp_wakeup_secondary_cpus()
* In case of u-boot, the secondaries are in reset * In case of u-boot, the secondaries are in reset
* first wakeup core 0 threads * first wakeup core 0 threads
*/ */
nlm_init_boot_cpu();
xlp_boot_core0_siblings(); xlp_boot_core0_siblings();
/* now get other cores out of reset */ /* now get other cores out of reset */
......
...@@ -196,6 +196,7 @@ void __init prom_init(void) ...@@ -196,6 +196,7 @@ void __init prom_init(void)
{ {
int *argv, *envp; /* passed as 32 bit ptrs */ int *argv, *envp; /* passed as 32 bit ptrs */
struct psb_info *prom_infop; struct psb_info *prom_infop;
void *reset_vec;
#ifdef CONFIG_SMP #ifdef CONFIG_SMP
int i; int i;
#endif #endif
...@@ -208,6 +209,11 @@ void __init prom_init(void) ...@@ -208,6 +209,11 @@ void __init prom_init(void)
nlm_prom_info = *prom_infop; nlm_prom_info = *prom_infop;
nlm_init_node(); 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(); nlm_early_serial_setup();
build_arcs_cmdline(argv); build_arcs_cmdline(argv);
prom_add_memory(); prom_add_memory();
......
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