Date: Fri, 8 Jan 2010 22:48:21 +0000 (UTC) From: Warner Losh <imp@FreeBSD.org> To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r201845 - in projects/mips/sys/mips: adm5120 alchemy atheros idt mips octeon1 rmi sentry5 sibyte Message-ID: <201001082248.o08MmLL8015227@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: imp Date: Fri Jan 8 22:48:21 2010 New Revision: 201845 URL: http://svn.freebsd.org/changeset/base/201845 Log: Centralize initialization of pcpu, and set curthread early... Modified: projects/mips/sys/mips/adm5120/adm5120_machdep.c projects/mips/sys/mips/alchemy/alchemy_machdep.c projects/mips/sys/mips/atheros/ar71xx_machdep.c projects/mips/sys/mips/idt/idt_machdep.c projects/mips/sys/mips/mips/machdep.c projects/mips/sys/mips/octeon1/octeon_machdep.c projects/mips/sys/mips/rmi/xlr_machdep.c projects/mips/sys/mips/sentry5/s5_machdep.c projects/mips/sys/mips/sibyte/sb_machdep.c Modified: projects/mips/sys/mips/adm5120/adm5120_machdep.c ============================================================================== --- projects/mips/sys/mips/adm5120/adm5120_machdep.c Fri Jan 8 22:37:52 2010 (r201844) +++ projects/mips/sys/mips/adm5120/adm5120_machdep.c Fri Jan 8 22:48:21 2010 (r201845) @@ -154,6 +154,9 @@ platform_start(__register_t a0 __unused, kernend = round_page((vm_offset_t)&end); memset(&edata, 0, kernend - (vm_offset_t)(&edata)); + /* Initialize pcpu stuff */ + mips_pcpu_init(); + cninit(); mips_init(); mips_timer_init_params(platform_counter_freq, 0); Modified: projects/mips/sys/mips/alchemy/alchemy_machdep.c ============================================================================== --- projects/mips/sys/mips/alchemy/alchemy_machdep.c Fri Jan 8 22:37:52 2010 (r201844) +++ projects/mips/sys/mips/alchemy/alchemy_machdep.c Fri Jan 8 22:48:21 2010 (r201845) @@ -154,6 +154,9 @@ platform_start(__register_t a0 __unused, kernend = round_page((vm_offset_t)&end); memset(&edata, 0, kernend - (vm_offset_t)(&edata)); + /* Initialize pcpu stuff */ + mips_pcpu_init(); + cninit(); mips_init(); /* Set counter_freq for tick_init_params() */ Modified: projects/mips/sys/mips/atheros/ar71xx_machdep.c ============================================================================== --- projects/mips/sys/mips/atheros/ar71xx_machdep.c Fri Jan 8 22:37:52 2010 (r201844) +++ projects/mips/sys/mips/atheros/ar71xx_machdep.c Fri Jan 8 22:48:21 2010 (r201845) @@ -152,6 +152,9 @@ platform_start(__register_t a0 __unused, kernend = round_page((vm_offset_t)&end); memset(&edata, 0, kernend - (vm_offset_t)(&edata)); + /* Initialize pcpu stuff */ + mips_pcpu_init(); + argc = a0; argv = (char**)a1; envp = (char**)a2; Modified: projects/mips/sys/mips/idt/idt_machdep.c ============================================================================== --- projects/mips/sys/mips/idt/idt_machdep.c Fri Jan 8 22:37:52 2010 (r201844) +++ projects/mips/sys/mips/idt/idt_machdep.c Fri Jan 8 22:48:21 2010 (r201845) @@ -137,6 +137,9 @@ platform_start(__register_t a0, __regist kernend = round_page((vm_offset_t)&end); memset(&edata, 0, kernend - (vm_offset_t)(&edata)); + /* Initialize pcpu stuff */ + mips_pcpu_init(); + /* * Looking for mem=XXM argument */ Modified: projects/mips/sys/mips/mips/machdep.c ============================================================================== --- projects/mips/sys/mips/mips/machdep.c Fri Jan 8 22:37:52 2010 (r201844) +++ projects/mips/sys/mips/mips/machdep.c Fri Jan 8 22:48:21 2010 (r201845) @@ -253,6 +253,21 @@ SYSCTL_INT(_machdep, CPU_WALLCLOCK, wall #endif /* PORT_TO_JMIPS */ /* + * Initialize per cpu data structures, include curthread. + */ +void +mips_pcpu_init() +{ + /* Initialize pcpu info of cpu-zero */ +#ifdef SMP + pcpu_init(&__pcpu[0], 0, sizeof(struct pcpu)); +#else + pcpu_init(pcpup, 0, sizeof(struct pcpu)); +#endif + PCPU_SET(curthread, &thread0); +} + +/* * Initialize mips and configure to run kernel */ void @@ -275,24 +290,15 @@ mips_proc0_init(void) (thread0.td_kstack_pages - 1) * PAGE_SIZE) - 1; thread0.td_frame = &thread0.td_pcb->pcb_regs; - /* Initialize pcpu info of cpu-zero */ -#ifdef SMP - pcpu_init(&__pcpu[0], 0, sizeof(struct pcpu)); -#else - pcpu_init(pcpup, 0, sizeof(struct pcpu)); -#endif - /* Steal memory for the dynamic per-cpu area. */ dpcpu_init((void *)pmap_steal_memory(DPCPU_SIZE), 0); + PCPU_SET(curpcb, thread0.td_pcb); /* * There is no need to initialize md_upte array for thread0 as it's * located in .bss section and should be explicitly zeroed during * kernel initialization. */ - - PCPU_SET(curthread, &thread0); - PCPU_SET(curpcb, thread0.td_pcb); } void Modified: projects/mips/sys/mips/octeon1/octeon_machdep.c ============================================================================== --- projects/mips/sys/mips/octeon1/octeon_machdep.c Fri Jan 8 22:37:52 2010 (r201844) +++ projects/mips/sys/mips/octeon1/octeon_machdep.c Fri Jan 8 22:48:21 2010 (r201845) @@ -652,6 +652,9 @@ platform_start(__register_t a0, __regist kernend = round_page((vm_offset_t)&end); memset(&edata, 0, kernend - (vm_offset_t)(&edata)); + /* Initialize pcpu stuff */ + mips_pcpu_init(); + octeon_boot_params_init(a3); /* XXX octeon boot decriptor has args in it... */ octeon_ciu_reset(); Modified: projects/mips/sys/mips/rmi/xlr_machdep.c ============================================================================== --- projects/mips/sys/mips/rmi/xlr_machdep.c Fri Jan 8 22:37:52 2010 (r201844) +++ projects/mips/sys/mips/rmi/xlr_machdep.c Fri Jan 8 22:48:21 2010 (r201845) @@ -385,7 +385,10 @@ platform_start(__register_t a0 __unused, void (*wakeup) (void *, void *, unsigned int); #endif + /* XXX no zeroing of BSS? */ + /* Initialize pcpu stuff */ + mips_pcpu_init(); /* XXX FIXME the code below is not 64 bit clean */ /* Save boot loader and other stuff from scratch regs */ Modified: projects/mips/sys/mips/sentry5/s5_machdep.c ============================================================================== --- projects/mips/sys/mips/sentry5/s5_machdep.c Fri Jan 8 22:37:52 2010 (r201844) +++ projects/mips/sys/mips/sentry5/s5_machdep.c Fri Jan 8 22:48:21 2010 (r201845) @@ -188,6 +188,9 @@ platform_start(__register_t a0, __regist kernend = round_page((vm_offset_t)&end); memset(&edata, 0, kernend - (vm_offset_t)(&edata)); + /* Initialize pcpu stuff */ + mips_pcpu_init(); + #ifdef CFE /* * Initialize CFE firmware trampolines before Modified: projects/mips/sys/mips/sibyte/sb_machdep.c ============================================================================== --- projects/mips/sys/mips/sibyte/sb_machdep.c Fri Jan 8 22:37:52 2010 (r201844) +++ projects/mips/sys/mips/sibyte/sb_machdep.c Fri Jan 8 22:48:21 2010 (r201845) @@ -240,6 +240,9 @@ platform_start(__register_t a0, __regist memset(&edata, 0, (vm_offset_t)&end - (vm_offset_t)&edata); kernend = round_page((vm_offset_t)&end); + /* Initialize pcpu stuff */ + mips_pcpu_init(); + #ifdef CFE /* * Initialize CFE firmware trampolines before
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201001082248.o08MmLL8015227>