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: Jayachandran C <jchandra@broadcom.com> Cc: linux-mips@linux-mips.org Patchwork: https://patchwork.linux-mips.org/patch/5428/ Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
This commit is contained in:
parent
9584c55a5c
commit
571886b2a5
@ -1,4 +1,5 @@
|
|||||||
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 @@ unsupp:
|
|||||||
|
|
||||||
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)
|
|||||||
|
|
||||||
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()
|
|||||||
* 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)
|
|||||||
{
|
{
|
||||||
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)
|
|||||||
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();
|
||||||
|
Loading…
Reference in New Issue
Block a user