void __init prom_init(void) { int *argv, *envp; /* passed as 32 bit ptrs */ struct psb_info *prom_infop; /* truncate to 32 bit and sign extend all args */ argv = (int *)(long)(int)fw_arg1; envp = (int *)(long)(int)fw_arg2; prom_infop = (struct psb_info *)(long)(int)fw_arg3; nlm_prom_info = *prom_infop; nlm_early_serial_setup(); build_arcs_cmdline(argv); nlm_common_ebase = read_c0_ebase() & (~((1 << 12) - 1)); prom_add_memory(); #ifdef CONFIG_SMP nlm_wakeup_secondary_cpus(nlm_prom_info.online_cpu_map); register_smp_ops(&nlm_smp_ops); #endif }
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 /* truncate to 32 bit and sign extend all args */ argv = (int *)(long)(int)fw_arg1; envp = (int *)(long)(int)fw_arg2; prom_infop = (struct psb_info *)(long)(int)fw_arg3; nlm_prom_info = *prom_infop; nlm_init_node(); /* Update reset entry point with CPU init code */ reset_vec = (void *)CKSEG1ADDR(RESET_VEC_PHYS); memset(reset_vec, 0, RESET_VEC_SIZE); 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(); #ifdef CONFIG_SMP for (i = 0; i < 32; i++) if (nlm_prom_info.online_cpu_map & (1 << i)) cpumask_set_cpu(i, &nlm_cpumask); nlm_wakeup_secondary_cpus(); register_smp_ops(&nlm_smp_ops); #endif xlr_board_info_setup(); xlr_percpu_fmn_init(); }