Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 31 Aug 2011 07:46:36 +0000 (UTC)
From:      Grzegorz Bernacki <gber@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject:   svn commit: r225285 - in projects/armv6/sys/arm: arm at91 econa include mv s3c2xx0 sa11x0 xscale/i80321 xscale/i8134x xscale/ixp425 xscale/pxa
Message-ID:  <201108310746.p7V7karn088792@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: gber
Date: Wed Aug 31 07:46:36 2011
New Revision: 225285
URL: http://svn.freebsd.org/changeset/base/225285

Log:
  Make __pcpu variable an array.
  
  Obtained from:	Marvell, Semihalf

Modified:
  projects/armv6/sys/arm/arm/machdep.c
  projects/armv6/sys/arm/at91/at91_machdep.c
  projects/armv6/sys/arm/econa/econa_machdep.c
  projects/armv6/sys/arm/include/pcpu.h
  projects/armv6/sys/arm/mv/mv_machdep.c
  projects/armv6/sys/arm/s3c2xx0/s3c24x0_machdep.c
  projects/armv6/sys/arm/sa11x0/assabet_machdep.c
  projects/armv6/sys/arm/xscale/i80321/ep80219_machdep.c
  projects/armv6/sys/arm/xscale/i80321/iq31244_machdep.c
  projects/armv6/sys/arm/xscale/i8134x/crb_machdep.c
  projects/armv6/sys/arm/xscale/ixp425/avila_machdep.c
  projects/armv6/sys/arm/xscale/pxa/pxa_machdep.c

Modified: projects/armv6/sys/arm/arm/machdep.c
==============================================================================
--- projects/armv6/sys/arm/arm/machdep.c	Wed Aug 31 07:20:43 2011	(r225284)
+++ projects/armv6/sys/arm/arm/machdep.c	Wed Aug 31 07:46:36 2011	(r225285)
@@ -92,6 +92,9 @@ __FBSDID("$FreeBSD$");
 #include <machine/vmparam.h>
 #include <machine/sysarch.h>
 
+struct pcpu __pcpu[MAXCPU];
+struct pcpu *pcpup = &__pcpu[0];
+
 uint32_t cpu_reset_address = 0;
 int cold = 1;
 vm_offset_t vector_page;
@@ -707,3 +710,11 @@ fake_preload_metadata(void)
 
 	return (lastaddr);
 }
+
+void
+pcpu0_init(void)
+{
+
+	pcpu_init(pcpup, 0, sizeof(struct pcpu));
+	PCPU_SET(curthread, &thread0);
+}

Modified: projects/armv6/sys/arm/at91/at91_machdep.c
==============================================================================
--- projects/armv6/sys/arm/at91/at91_machdep.c	Wed Aug 31 07:20:43 2011	(r225284)
+++ projects/armv6/sys/arm/at91/at91_machdep.c	Wed Aug 31 07:46:36 2011	(r225285)
@@ -116,9 +116,6 @@ extern void *_end;
 
 extern int *end;
 
-struct pcpu __pcpu;
-struct pcpu *pcpup = &__pcpu;
-
 /* Physical and virtual addresses for some global pages */
 
 vm_paddr_t phys_avail[10];
@@ -252,8 +249,7 @@ initarm(void *arg, void *arg2)
 	boot_arg2 = arg2;
 	set_cpufuncs();
 	lastaddr = fake_preload_metadata();
-	pcpu_init(pcpup, 0, sizeof(struct pcpu));
-	PCPU_SET(curthread, &thread0);
+	pcpu0_init();
 
 	/* Do basic tuning, hz etc */
 	init_param1();

Modified: projects/armv6/sys/arm/econa/econa_machdep.c
==============================================================================
--- projects/armv6/sys/arm/econa/econa_machdep.c	Wed Aug 31 07:20:43 2011	(r225284)
+++ projects/armv6/sys/arm/econa/econa_machdep.c	Wed Aug 31 07:46:36 2011	(r225285)
@@ -107,9 +107,6 @@ extern void *_end;
 
 extern int *end;
 
-struct pcpu __pcpu;
-struct pcpu *pcpup = &__pcpu;
-
 /* Physical and virtual addresses for some global pages */
 
 vm_paddr_t phys_avail[10];
@@ -205,8 +202,7 @@ initarm(void *arg, void *arg2)
 
 	set_cpufuncs();
 	lastaddr = fake_preload_metadata();
-	pcpu_init(pcpup, 0, sizeof(struct pcpu));
-	PCPU_SET(curthread, &thread0);
+	pcpu0_init();
 
 	/* Do basic tuning, hz etc */
       	init_param1();

Modified: projects/armv6/sys/arm/include/pcpu.h
==============================================================================
--- projects/armv6/sys/arm/include/pcpu.h	Wed Aug 31 07:20:43 2011	(r225284)
+++ projects/armv6/sys/arm/include/pcpu.h	Wed Aug 31 07:46:36 2011	(r225285)
@@ -48,19 +48,19 @@ struct pcb;
 struct pcpu;
 
 extern struct pcpu *pcpup;
-extern struct pcpu __pcpu;
 
-#define	PCPU_GET(member)	(__pcpu.pc_ ## member)
+#define	PCPU_GET(member)	(pcpup->pc_ ## member)
 
 /*
  * XXX The implementation of this operation should be made atomic
  * with respect to preemption.
  */
-#define	PCPU_ADD(member, value)	(__pcpu.pc_ ## member += (value))
+#define	PCPU_ADD(member, value)	(pcpup->pc_ ## member += (value))
 #define	PCPU_INC(member)	PCPU_ADD(member, 1)
-#define	PCPU_PTR(member)	(&__pcpu.pc_ ## member)
-#define	PCPU_SET(member,value)	(__pcpu.pc_ ## member = (value))
+#define	PCPU_PTR(member)	(&pcpup->pc_ ## member)
+#define	PCPU_SET(member,value)	(pcpup->pc_ ## member = (value))
 
+void pcpu0_init(void);
 #endif	/* _KERNEL */
 
 #endif	/* !_MACHINE_PCPU_H_ */

Modified: projects/armv6/sys/arm/mv/mv_machdep.c
==============================================================================
--- projects/armv6/sys/arm/mv/mv_machdep.c	Wed Aug 31 07:20:43 2011	(r225284)
+++ projects/armv6/sys/arm/mv/mv_machdep.c	Wed Aug 31 07:46:36 2011	(r225285)
@@ -130,11 +130,8 @@ extern vm_offset_t pmap_bootstrap_lastad
 extern int *end;
 
 struct pv_addr kernel_pt_table[KERNEL_PT_MAX];
-struct pcpu __pcpu;
-struct pcpu *pcpup = &__pcpu;
 
 /* Physical and virtual addresses for some global pages */
-
 vm_paddr_t phys_avail[10];
 vm_paddr_t dump_avail[4];
 vm_offset_t physical_pages;
@@ -372,8 +369,7 @@ initarm(void *mdp, void *unused __unused
 	/* Platform-specific initialisation */
 	pmap_bootstrap_lastaddr = fdt_immr_va - ARM_NOCACHE_KVA_SIZE;
 
-	pcpu_init(pcpup, 0, sizeof(struct pcpu));
-	PCPU_SET(curthread, &thread0);
+	pcpu0_init();
 
 	/* Calculate number of L2 tables needed for mapping vm_page_array */
 	l2size = (memsize / PAGE_SIZE) * sizeof(struct vm_page);

Modified: projects/armv6/sys/arm/s3c2xx0/s3c24x0_machdep.c
==============================================================================
--- projects/armv6/sys/arm/s3c2xx0/s3c24x0_machdep.c	Wed Aug 31 07:20:43 2011	(r225284)
+++ projects/armv6/sys/arm/s3c2xx0/s3c24x0_machdep.c	Wed Aug 31 07:46:36 2011	(r225285)
@@ -122,9 +122,6 @@ extern void *_end;
 
 extern int *end;
 
-struct pcpu __pcpu;
-struct pcpu *pcpup = &__pcpu;
-
 /* Physical and virtual addresses for some global pages */
 
 vm_paddr_t phys_avail[10];
@@ -254,8 +251,7 @@ initarm(void *arg, void *arg2)
 	cpufuncs.cf_sleep = s3c24x0_sleep;
 	lastaddr = fake_preload_metadata();
 
-	pcpu_init(pcpup, 0, sizeof(struct pcpu));
-	PCPU_SET(curthread, &thread0);
+	pcpu0_init();
 
 	/* Do basic tuning, hz etc */
 	init_param1();

Modified: projects/armv6/sys/arm/sa11x0/assabet_machdep.c
==============================================================================
--- projects/armv6/sys/arm/sa11x0/assabet_machdep.c	Wed Aug 31 07:20:43 2011	(r225284)
+++ projects/armv6/sys/arm/sa11x0/assabet_machdep.c	Wed Aug 31 07:46:36 2011	(r225285)
@@ -127,9 +127,6 @@ extern vm_offset_t sa1_cache_clean_addr;
 
 extern int *end;
 
-struct pcpu __pcpu;
-struct pcpu *pcpup = &__pcpu;
-
 #ifndef MD_ROOT_SIZE
 #define MD_ROOT_SIZE 65535
 #endif
@@ -203,7 +200,6 @@ cpu_reset()
 void *
 initarm(void *arg, void *arg2)
 {
-	struct pcpu *pc;
 	struct pv_addr  kernel_l1pt;
 	struct pv_addr	md_addr;
 	struct pv_addr	md_bla;
@@ -221,9 +217,7 @@ initarm(void *arg, void *arg2)
 	set_cpufuncs();
 	lastaddr = fake_preload_metadata();
 	physmem = memsize / PAGE_SIZE;
-	pc = &__pcpu;
-	pcpu_init(pc, 0, sizeof(struct pcpu));
-	PCPU_SET(curthread, &thread0);
+	pcpu0_init();
 
 	/* Do basic tuning, hz etc */
 	init_param1();

Modified: projects/armv6/sys/arm/xscale/i80321/ep80219_machdep.c
==============================================================================
--- projects/armv6/sys/arm/xscale/i80321/ep80219_machdep.c	Wed Aug 31 07:20:43 2011	(r225284)
+++ projects/armv6/sys/arm/xscale/i80321/ep80219_machdep.c	Wed Aug 31 07:46:36 2011	(r225285)
@@ -119,9 +119,6 @@ extern void *_end;
 
 extern int *end;
 
-struct pcpu __pcpu;
-struct pcpu *pcpup = &__pcpu;
-
 /* Physical and virtual addresses for some global pages */
 
 vm_paddr_t phys_avail[10];
@@ -196,8 +193,7 @@ initarm(void *arg, void *arg2)
 
 	set_cpufuncs();
 	lastaddr = fake_preload_metadata();
-	pcpu_init(pcpup, 0, sizeof(struct pcpu));
-	PCPU_SET(curthread, &thread0);
+	pcpu0_init();
 
 	freemempos = 0xa0200000;
 	/* Define a macro to simplify memory allocation */

Modified: projects/armv6/sys/arm/xscale/i80321/iq31244_machdep.c
==============================================================================
--- projects/armv6/sys/arm/xscale/i80321/iq31244_machdep.c	Wed Aug 31 07:20:43 2011	(r225284)
+++ projects/armv6/sys/arm/xscale/i80321/iq31244_machdep.c	Wed Aug 31 07:46:36 2011	(r225285)
@@ -119,9 +119,6 @@ extern void *_end;
 
 extern int *end;
 
-struct pcpu __pcpu;
-struct pcpu *pcpup = &__pcpu;
-
 /* Physical and virtual addresses for some global pages */
 
 vm_paddr_t phys_avail[10];
@@ -197,8 +194,7 @@ initarm(void *arg, void *arg2)
 
 	set_cpufuncs();
 	lastaddr = fake_preload_metadata();
-	pcpu_init(pcpup, 0, sizeof(struct pcpu));
-	PCPU_SET(curthread, &thread0);
+	pcpu0_init();
 
 	/* Do basic tuning, hz etc */
 	init_param1();

Modified: projects/armv6/sys/arm/xscale/i8134x/crb_machdep.c
==============================================================================
--- projects/armv6/sys/arm/xscale/i8134x/crb_machdep.c	Wed Aug 31 07:20:43 2011	(r225284)
+++ projects/armv6/sys/arm/xscale/i8134x/crb_machdep.c	Wed Aug 31 07:46:36 2011	(r225285)
@@ -119,9 +119,6 @@ extern u_int undefined_handler_address;
 struct pv_addr kernel_pt_table[NUM_KERNEL_PTS];
 extern int *end;
 
-struct pcpu __pcpu;
-struct pcpu *pcpup = &__pcpu;
-
 /* Physical and virtual addresses for some global pages */
 
 vm_paddr_t phys_avail[10];
@@ -193,8 +190,7 @@ initarm(void *arg, void *arg2)
 
 	set_cpufuncs();
 	lastaddr = fake_preload_metadata();
-	pcpu_init(pcpup, 0, sizeof(struct pcpu));
-	PCPU_SET(curthread, &thread0);
+	pcpu0_init();
 
 	/* Do basic tuning, hz etc */
 	init_param1();

Modified: projects/armv6/sys/arm/xscale/ixp425/avila_machdep.c
==============================================================================
--- projects/armv6/sys/arm/xscale/ixp425/avila_machdep.c	Wed Aug 31 07:20:43 2011	(r225284)
+++ projects/armv6/sys/arm/xscale/ixp425/avila_machdep.c	Wed Aug 31 07:46:36 2011	(r225285)
@@ -123,9 +123,6 @@ extern void *_end;
 
 extern int *end;
 
-struct pcpu __pcpu;
-struct pcpu *pcpup = &__pcpu;
-
 /* Physical and virtual addresses for some global pages */
 
 vm_paddr_t phys_avail[10];
@@ -242,8 +239,7 @@ initarm(void *arg, void *arg2)
 
 	set_cpufuncs();		/* NB: sets cputype */
 	lastaddr = fake_preload_metadata();
-	pcpu_init(pcpup, 0, sizeof(struct pcpu));
-	PCPU_SET(curthread, &thread0);
+	pcpu0_init();
 
 	/* Do basic tuning, hz etc */
       	init_param1();

Modified: projects/armv6/sys/arm/xscale/pxa/pxa_machdep.c
==============================================================================
--- projects/armv6/sys/arm/xscale/pxa/pxa_machdep.c	Wed Aug 31 07:20:43 2011	(r225284)
+++ projects/armv6/sys/arm/xscale/pxa/pxa_machdep.c	Wed Aug 31 07:46:36 2011	(r225285)
@@ -119,9 +119,6 @@ extern void *_end;
 
 extern int *end;
 
-struct pcpu __pcpu;
-struct pcpu *pcpup = &__pcpu;
-
 /* Physical and virtual addresses for some global pages */
 
 vm_paddr_t phys_avail[PXA2X0_SDRAM_BANKS * 2 + 4];
@@ -179,8 +176,7 @@ initarm(void *arg, void *arg2)
 	set_cpufuncs();
 
 	lastaddr = fake_preload_metadata();
-	pcpu_init(pcpup, 0, sizeof(struct pcpu));
-	PCPU_SET(curthread, &thread0);
+	pcpu0_init();
 
 	/* Do basic tuning, hz etc */
 	init_param1();



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201108310746.p7V7karn088792>