svn commit: r201845 - in projects/mips/sys/mips: adm5120 alchemy
atheros idt mips octeon1 rmi sentry5 sibyte
Warner Losh
imp at FreeBSD.org
Fri Jan 8 22:48:21 UTC 2010
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
More information about the svn-src-projects
mailing list