Skip site navigation (1)Skip section navigation (2)
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>