Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 7 Dec 2009 06:41:27 +0000 (UTC)
From:      Marcel Moolenaar <marcel@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r200207 - in head/sys/ia64: ia64 include
Message-ID:  <200912070641.nB76fRW7044146@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: marcel
Date: Mon Dec  7 06:41:27 2009
New Revision: 200207
URL: http://svn.freebsd.org/changeset/base/200207

Log:
  Define struct pcpu_md as the only MD field of struct pcpu (pc_acpi_id
  excluded, as it's used by MI code) and mode the sysctl variables from
  pcpu_stats to pcpu_md.
  Adjust all references accordingly.
  
  While nearby, change the PCPU sysctl tree so that they match the CPU
  device sysctl tree -- they are now children of a static node called
  "machdep.cpu" and are named only with their cpu ID.

Modified:
  head/sys/ia64/ia64/clock.c
  head/sys/ia64/ia64/genassym.c
  head/sys/ia64/ia64/interrupt.c
  head/sys/ia64/ia64/machdep.c
  head/sys/ia64/ia64/mp_machdep.c
  head/sys/ia64/ia64/pmap.c
  head/sys/ia64/include/kdb.h
  head/sys/ia64/include/pcpu.h

Modified: head/sys/ia64/ia64/clock.c
==============================================================================
--- head/sys/ia64/ia64/clock.c	Mon Dec  7 06:27:47 2009	(r200206)
+++ head/sys/ia64/ia64/clock.c	Mon Dec  7 06:41:27 2009	(r200207)
@@ -64,9 +64,9 @@ void
 pcpu_initclock(void)
 {
 
-	PCPU_SET(clockadj, 0);
-	PCPU_SET(clock, ia64_get_itc());
-	ia64_set_itm(PCPU_GET(clock) + ia64_clock_reload);
+	PCPU_SET(md.clockadj, 0);
+	PCPU_SET(md.clock, ia64_get_itc());
+	ia64_set_itm(PCPU_GET(md.clock) + ia64_clock_reload);
 	ia64_set_itv(CLOCK_VECTOR);	/* highest priority class */
 	ia64_srlz_d();
 }

Modified: head/sys/ia64/ia64/genassym.c
==============================================================================
--- head/sys/ia64/ia64/genassym.c	Mon Dec  7 06:27:47 2009	(r200206)
+++ head/sys/ia64/ia64/genassym.c	Mon Dec  7 06:41:27 2009	(r200207)
@@ -91,7 +91,7 @@ ASSYM(MC_SPECIAL_RNAT,	offsetof(mcontext
 ASSYM(PAGE_SHIFT,	PAGE_SHIFT);
 ASSYM(PAGE_SIZE,	PAGE_SIZE);
 
-ASSYM(PC_CURRENT_PMAP,	offsetof(struct pcpu, pc_current_pmap));
+ASSYM(PC_CURRENT_PMAP,	offsetof(struct pcpu, pc_md.current_pmap));
 ASSYM(PC_CURTHREAD,	offsetof(struct pcpu, pc_curthread));
 ASSYM(PC_IDLETHREAD,	offsetof(struct pcpu, pc_idlethread));
 

Modified: head/sys/ia64/ia64/interrupt.c
==============================================================================
--- head/sys/ia64/ia64/interrupt.c	Mon Dec  7 06:27:47 2009	(r200206)
+++ head/sys/ia64/ia64/interrupt.c	Mon Dec  7 06:41:27 2009	(r200207)
@@ -127,16 +127,16 @@ interrupt(struct trapframe *tf)
 	 * read the vector.
 	 */
 	if (vector == 0) {
-		PCPU_INC(stats.pcs_nextints);
+		PCPU_INC(md.stats.pcs_nextints);
 		inta = ib->ib_inta;
 		if (inta == 15) {
-			PCPU_INC(stats.pcs_nstrays);
+			PCPU_INC(md.stats.pcs_nstrays);
 			__asm __volatile("mov cr.eoi = r0;; srlz.d");
 			goto stray;
 		}
 		vector = (int)inta;
 	} else if (vector == 15) {
-		PCPU_INC(stats.pcs_nstrays);
+		PCPU_INC(md.stats.pcs_nstrays);
 		goto stray;
 	}
 
@@ -145,7 +145,7 @@ interrupt(struct trapframe *tf)
 
 		itc = ia64_get_itc();
 
-		PCPU_INC(stats.pcs_nclks);
+		PCPU_INC(md.stats.pcs_nclks);
 #ifdef EVCNT_COUNTERS
 		clock_intr_evcnt.ev_count++;
 #else
@@ -154,8 +154,8 @@ interrupt(struct trapframe *tf)
 
 		critical_enter();
 
-		adj = PCPU_GET(clockadj);
-		clk = PCPU_GET(clock);
+		adj = PCPU_GET(md.clockadj);
+		clk = PCPU_GET(md.clock);
 		delta = itc - clk;
 		count = 0;
 		while (delta >= ia64_clock_reload) {
@@ -186,40 +186,40 @@ interrupt(struct trapframe *tf)
 			adj = 0;
 			adjust_excess++;
 		}
-		PCPU_SET(clock, clk);
-		PCPU_SET(clockadj, adj);
+		PCPU_SET(md.clock, clk);
+		PCPU_SET(md.clockadj, adj);
 		critical_exit();
 		ia64_srlz_d();
 
 #ifdef SMP
 	} else if (vector == ipi_vector[IPI_AST]) {
-		PCPU_INC(stats.pcs_nasts);
+		PCPU_INC(md.stats.pcs_nasts);
 		CTR1(KTR_SMP, "IPI_AST, cpuid=%d", PCPU_GET(cpuid));
 	} else if (vector == ipi_vector[IPI_HIGH_FP]) {
-		PCPU_INC(stats.pcs_nhighfps);
+		PCPU_INC(md.stats.pcs_nhighfps);
 		ia64_highfp_save_ipi();
 	} else if (vector == ipi_vector[IPI_RENDEZVOUS]) {
-		PCPU_INC(stats.pcs_nrdvs);
+		PCPU_INC(md.stats.pcs_nrdvs);
 		CTR1(KTR_SMP, "IPI_RENDEZVOUS, cpuid=%d", PCPU_GET(cpuid));
 		enable_intr();
 		smp_rendezvous_action();
 		disable_intr();
 	} else if (vector == ipi_vector[IPI_STOP]) {
-		PCPU_INC(stats.pcs_nstops);
+		PCPU_INC(md.stats.pcs_nstops);
 		cpumask_t mybit = PCPU_GET(cpumask);
 
 		/* Make sure IPI_STOP_HARD is mapped to IPI_STOP. */
 		KASSERT(IPI_STOP == IPI_STOP_HARD,
 		    ("%s: IPI_STOP_HARD not handled.", __func__));
 
-		savectx(PCPU_PTR(pcb));
+		savectx(PCPU_PTR(md.pcb));
 		atomic_set_int(&stopped_cpus, mybit);
 		while ((started_cpus & mybit) == 0)
 			cpu_spinwait();
 		atomic_clear_int(&started_cpus, mybit);
 		atomic_clear_int(&stopped_cpus, mybit);
 	} else if (vector == ipi_vector[IPI_PREEMPT]) {
-		PCPU_INC(stats.pcs_npreempts);
+		PCPU_INC(md.stats.pcs_npreempts);
 		CTR1(KTR_SMP, "IPI_PREEMPT, cpuid=%d", PCPU_GET(cpuid));
 		__asm __volatile("mov cr.eoi = r0;; srlz.d");
 		enable_intr();
@@ -228,7 +228,7 @@ interrupt(struct trapframe *tf)
 		goto stray;
 #endif
 	} else {
-		PCPU_INC(stats.pcs_nhwints);
+		PCPU_INC(md.stats.pcs_nhwints);
 		atomic_add_int(&td->td_intr_nesting_level, 1);
 		ia64_dispatch_intr(tf, vector);
 		atomic_subtract_int(&td->td_intr_nesting_level, 1);

Modified: head/sys/ia64/ia64/machdep.c
==============================================================================
--- head/sys/ia64/ia64/machdep.c	Mon Dec  7 06:27:47 2009	(r200206)
+++ head/sys/ia64/ia64/machdep.c	Mon Dec  7 06:41:27 2009	(r200207)
@@ -101,6 +101,8 @@ __FBSDID("$FreeBSD$");
 
 #include <i386/include/specialreg.h>
 
+SYSCTL_NODE(_machdep, OID_AUTO, cpu, CTLFLAG_RD, 0, "");
+
 u_int64_t processor_frequency;
 u_int64_t bus_frequency;
 u_int64_t itc_frequency;
@@ -307,57 +309,58 @@ cpu_startup(void *dummy)
 	 * Create sysctl tree for per-CPU information.
 	 */
 	SLIST_FOREACH(pc, &cpuhead, pc_allcpu) {
-		pcs = &pc->pc_stats;
-		snprintf(nodename, sizeof(nodename), "cpu%u", pc->pc_cpuid);
-		sysctl_ctx_init(&pcs->pcs_sysctl_ctx);
-		pcs->pcs_sysctl_tree = SYSCTL_ADD_NODE(&pcs->pcs_sysctl_ctx,
-		    SYSCTL_STATIC_CHILDREN(_machdep), OID_AUTO, nodename,
+		snprintf(nodename, sizeof(nodename), "%u", pc->pc_cpuid);
+		sysctl_ctx_init(&pc->pc_md.sysctl_ctx);
+		pc->pc_md.sysctl_tree = SYSCTL_ADD_NODE(&pc->pc_md.sysctl_ctx,
+		    SYSCTL_STATIC_CHILDREN(_machdep_cpu), OID_AUTO, nodename,
 		    CTLFLAG_RD, NULL, "");
-		if (pcs->pcs_sysctl_tree == NULL)
+		if (pc->pc_md.sysctl_tree == NULL)
 			continue;
 
-		SYSCTL_ADD_ULONG(&pcs->pcs_sysctl_ctx,
-		    SYSCTL_CHILDREN(pcs->pcs_sysctl_tree), OID_AUTO,
+		pcs = &pc->pc_md.stats;
+
+		SYSCTL_ADD_ULONG(&pc->pc_md.sysctl_ctx,
+		    SYSCTL_CHILDREN(pc->pc_md.sysctl_tree), OID_AUTO,
 		    "nasts", CTLFLAG_RD, &pcs->pcs_nasts,
 		    "Number of IPI_AST interrupts");
 
-		SYSCTL_ADD_ULONG(&pcs->pcs_sysctl_ctx,
-		    SYSCTL_CHILDREN(pcs->pcs_sysctl_tree), OID_AUTO,
+		SYSCTL_ADD_ULONG(&pc->pc_md.sysctl_ctx,
+		    SYSCTL_CHILDREN(pc->pc_md.sysctl_tree), OID_AUTO,
 		    "nclks", CTLFLAG_RD, &pcs->pcs_nclks,
 		    "Number of clock interrupts");
 
-		SYSCTL_ADD_ULONG(&pcs->pcs_sysctl_ctx,
-		    SYSCTL_CHILDREN(pcs->pcs_sysctl_tree), OID_AUTO,
+		SYSCTL_ADD_ULONG(&pc->pc_md.sysctl_ctx,
+		    SYSCTL_CHILDREN(pc->pc_md.sysctl_tree), OID_AUTO,
 		    "nextints", CTLFLAG_RD, &pcs->pcs_nextints,
 		    "Number of ExtINT interrupts");
 
-		SYSCTL_ADD_ULONG(&pcs->pcs_sysctl_ctx,
-		    SYSCTL_CHILDREN(pcs->pcs_sysctl_tree), OID_AUTO,
+		SYSCTL_ADD_ULONG(&pc->pc_md.sysctl_ctx,
+		    SYSCTL_CHILDREN(pc->pc_md.sysctl_tree), OID_AUTO,
 		    "nhighfps", CTLFLAG_RD, &pcs->pcs_nhighfps,
 		    "Number of IPI_HIGH_FP interrupts");
 
-		SYSCTL_ADD_ULONG(&pcs->pcs_sysctl_ctx,
-		    SYSCTL_CHILDREN(pcs->pcs_sysctl_tree), OID_AUTO,
+		SYSCTL_ADD_ULONG(&pc->pc_md.sysctl_ctx,
+		    SYSCTL_CHILDREN(pc->pc_md.sysctl_tree), OID_AUTO,
 		    "nhwints", CTLFLAG_RD, &pcs->pcs_nhwints,
 		    "Number of hardware (device) interrupts");
 
-		SYSCTL_ADD_ULONG(&pcs->pcs_sysctl_ctx,
-		    SYSCTL_CHILDREN(pcs->pcs_sysctl_tree), OID_AUTO,
+		SYSCTL_ADD_ULONG(&pc->pc_md.sysctl_ctx,
+		    SYSCTL_CHILDREN(pc->pc_md.sysctl_tree), OID_AUTO,
 		    "npreempts", CTLFLAG_RD, &pcs->pcs_npreempts,
 		    "Number of IPI_PREEMPT interrupts");
 
-		SYSCTL_ADD_ULONG(&pcs->pcs_sysctl_ctx,
-		    SYSCTL_CHILDREN(pcs->pcs_sysctl_tree), OID_AUTO,
+		SYSCTL_ADD_ULONG(&pc->pc_md.sysctl_ctx,
+		    SYSCTL_CHILDREN(pc->pc_md.sysctl_tree), OID_AUTO,
 		    "nrdvs", CTLFLAG_RD, &pcs->pcs_nrdvs,
 		    "Number of IPI_RENDEZVOUS interrupts");
 
-		SYSCTL_ADD_ULONG(&pcs->pcs_sysctl_ctx,
-		    SYSCTL_CHILDREN(pcs->pcs_sysctl_tree), OID_AUTO,
+		SYSCTL_ADD_ULONG(&pc->pc_md.sysctl_ctx,
+		    SYSCTL_CHILDREN(pc->pc_md.sysctl_tree), OID_AUTO,
 		    "nstops", CTLFLAG_RD, &pcs->pcs_nstops,
 		    "Number of IPI_STOP interrupts");
 
-		SYSCTL_ADD_ULONG(&pcs->pcs_sysctl_ctx,
-		    SYSCTL_CHILDREN(pcs->pcs_sysctl_tree), OID_AUTO,
+		SYSCTL_ADD_ULONG(&pc->pc_md.sysctl_ctx,
+		    SYSCTL_CHILDREN(pc->pc_md.sysctl_tree), OID_AUTO,
 		    "nstrays", CTLFLAG_RD, &pcs->pcs_nstrays,
 		    "Number of stray vectors");
 	}

Modified: head/sys/ia64/ia64/mp_machdep.c
==============================================================================
--- head/sys/ia64/ia64/mp_machdep.c	Mon Dec  7 06:27:47 2009	(r200206)
+++ head/sys/ia64/ia64/mp_machdep.c	Mon Dec  7 06:41:27 2009	(r200207)
@@ -121,7 +121,7 @@ ia64_ap_startup(void)
 	pcpup = ap_pcpu;
 	ia64_set_k4((intptr_t)pcpup);
 
-	vhpt = PCPU_GET(vhpt);
+	vhpt = PCPU_GET(md.vhpt);
 	map_vhpt(vhpt);
 	ia64_set_pta(vhpt + (1 << 8) + (pmap_vhpt_log2size << 2) + 1);
 	ia64_srlz_i();
@@ -226,7 +226,7 @@ cpu_mp_add(u_int acpiid, u_int apicid, u
 		pc = pcpup;
 
 	pc->pc_acpi_id = acpiid;
-	pc->pc_lid = lid;
+	pc->pc_md.lid = lid;
 	all_cpus |= (1UL << cpuid);
 }
 
@@ -240,8 +240,8 @@ cpu_mp_announce()
 		pc = pcpu_find(i);
 		if (pc != NULL) {
 			printf("cpu%d: ACPI Id=%x, SAPIC Id=%x, SAPIC Eid=%x",
-			    i, pc->pc_acpi_id, LID_SAPIC_ID(pc->pc_lid),
-			    LID_SAPIC_EID(pc->pc_lid));
+			    i, pc->pc_acpi_id, LID_SAPIC_ID(pc->pc_md.lid),
+			    LID_SAPIC_EID(pc->pc_md.lid));
 			if (i == 0)
 				printf(" (BSP)\n");
 			else
@@ -258,12 +258,12 @@ cpu_mp_start()
 	ap_spin = 1;
 
 	SLIST_FOREACH(pc, &cpuhead, pc_allcpu) {
-		pc->pc_current_pmap = kernel_pmap;
+		pc->pc_md.current_pmap = kernel_pmap;
 		pc->pc_other_cpus = all_cpus & ~pc->pc_cpumask;
 		if (pc->pc_cpuid > 0) {
 			ap_pcpu = pc;
-			pc->pc_vhpt = pmap_alloc_vhpt();
-			if (pc->pc_vhpt == 0) {
+			pc->pc_md.vhpt = pmap_alloc_vhpt();
+			if (pc->pc_md.vhpt == 0) {
 				printf("SMP: WARNING: unable to allocate VHPT"
 				    " for cpu%d", pc->pc_cpuid);
 				continue;
@@ -281,13 +281,13 @@ cpu_mp_start()
 			do {
 				DELAY(1000);
 			} while (--ap_delay > 0);
-			pc->pc_awake = ap_awake;
+			pc->pc_md.awake = ap_awake;
 
 			if (!ap_awake)
 				printf("SMP: WARNING: cpu%d did not wake up\n",
 				    pc->pc_cpuid);
 		} else
-			pc->pc_awake = 1;
+			pc->pc_md.awake = 1;
 	}
 }
 
@@ -304,7 +304,7 @@ cpu_mp_unleash(void *dummy)
 	smp_cpus = 0;
 	SLIST_FOREACH(pc, &cpuhead, pc_allcpu) {
 		cpus++;
-		if (pc->pc_awake) {
+		if (pc->pc_md.awake) {
 			kproc_create(ia64_store_mca_state,
 			    (void*)((uintptr_t)pc->pc_cpuid), NULL, 0, 0,
 			    "mca %u", pc->pc_cpuid);
@@ -367,7 +367,7 @@ ipi_send(struct pcpu *cpu, int ipi)
 	uint64_t vector;
 
 	pipi = __MEMIO_ADDR(ia64_lapic_address |
-	    ((cpu->pc_lid & LID_SAPIC_MASK) >> 12));
+	    ((cpu->pc_md.lid & LID_SAPIC_MASK) >> 12));
 	vector = (uint64_t)(ipi_vector[ipi] & 0xff);
 	KASSERT(vector != 0, ("IPI %d is not assigned a vector", ipi));
 	*pipi = vector;

Modified: head/sys/ia64/ia64/pmap.c
==============================================================================
--- head/sys/ia64/ia64/pmap.c	Mon Dec  7 06:27:47 2009	(r200206)
+++ head/sys/ia64/ia64/pmap.c	Mon Dec  7 06:41:27 2009	(r200207)
@@ -426,7 +426,7 @@ pmap_bootstrap()
 		phys_avail[i] = base + size;
 
 	base = IA64_PHYS_TO_RR7(base);
-	PCPU_SET(vhpt, base);
+	PCPU_SET(md.vhpt, base);
 	if (bootverbose)
 		printf("VHPT: address=%#lx, size=%#lx\n", base, size);
 
@@ -455,7 +455,7 @@ pmap_bootstrap()
 		kernel_pmap->pm_rid[i] = 0;
 	kernel_pmap->pm_active = 1;
 	TAILQ_INIT(&kernel_pmap->pm_pvlist);
-	PCPU_SET(current_pmap, kernel_pmap);
+	PCPU_SET(md.current_pmap, kernel_pmap);
 
 	/*
 	 * Region 5 is mapped via the vhpt.
@@ -543,13 +543,13 @@ pmap_invalidate_page(pmap_t pmap, vm_off
 	struct pcpu *pc;
 	u_int vhpt_ofs;
 
-	KASSERT((pmap == kernel_pmap || pmap == PCPU_GET(current_pmap)),
+	KASSERT((pmap == kernel_pmap || pmap == PCPU_GET(md.current_pmap)),
 		("invalidating TLB for non-current pmap"));
 
-	vhpt_ofs = ia64_thash(va) - PCPU_GET(vhpt);
+	vhpt_ofs = ia64_thash(va) - PCPU_GET(md.vhpt);
 	critical_enter();
 	SLIST_FOREACH(pc, &cpuhead, pc_allcpu) {
-		pte = (struct ia64_lpte *)(pc->pc_vhpt + vhpt_ofs);
+		pte = (struct ia64_lpte *)(pc->pc_md.vhpt + vhpt_ofs);
 		if (pte->tag == ia64_ttag(va))
 			pte->tag = 1UL << 63;
 	}
@@ -581,7 +581,7 @@ static void
 pmap_invalidate_all(pmap_t pmap)
 {
 
-	KASSERT((pmap == kernel_pmap || pmap == PCPU_GET(current_pmap)),
+	KASSERT((pmap == kernel_pmap || pmap == PCPU_GET(md.current_pmap)),
 		("invalidating TLB for non-current pmap"));
 
 #ifdef SMP
@@ -1162,7 +1162,7 @@ pmap_remove_pte(pmap_t pmap, struct ia64
 	int error;
 	vm_page_t m;
 
-	KASSERT((pmap == kernel_pmap || pmap == PCPU_GET(current_pmap)),
+	KASSERT((pmap == kernel_pmap || pmap == PCPU_GET(md.current_pmap)),
 		("removing pte for non-current pmap"));
 
 	/*
@@ -1330,7 +1330,7 @@ pmap_remove_page(pmap_t pmap, vm_offset_
 {
 	struct ia64_lpte *pte;
 
-	KASSERT((pmap == kernel_pmap || pmap == PCPU_GET(current_pmap)),
+	KASSERT((pmap == kernel_pmap || pmap == PCPU_GET(md.current_pmap)),
 		("removing page for non-current pmap"));
 
 	pte = pmap_find_vhpt(va);
@@ -2241,7 +2241,7 @@ pmap_switch(pmap_t pm)
 	int i;
 
 	critical_enter();
-	prevpm = PCPU_GET(current_pmap);
+	prevpm = PCPU_GET(md.current_pmap);
 	if (prevpm == pm)
 		goto out;
 	if (prevpm != NULL)
@@ -2258,7 +2258,7 @@ pmap_switch(pmap_t pm)
 		}
 		atomic_set_32(&pm->pm_active, PCPU_GET(cpumask));
 	}
-	PCPU_SET(current_pmap, pm);
+	PCPU_SET(md.current_pmap, pm);
 	ia64_srlz_d();
 
 out:

Modified: head/sys/ia64/include/kdb.h
==============================================================================
--- head/sys/ia64/include/kdb.h	Mon Dec  7 06:27:47 2009	(r200206)
+++ head/sys/ia64/include/kdb.h	Mon Dec  7 06:41:27 2009	(r200207)
@@ -33,7 +33,7 @@
 #include <machine/frame.h>
 #include <machine/ia64_cpu.h>
 
-#define	KDB_STOPPEDPCB(pc)	(&(pc)->pc_pcb)
+#define	KDB_STOPPEDPCB(pc)	(&(pc)->pc_md.pcb)
 
 static __inline void
 kdb_cpu_clear_singlestep(void)

Modified: head/sys/ia64/include/pcpu.h
==============================================================================
--- head/sys/ia64/include/pcpu.h	Mon Dec  7 06:27:47 2009	(r200206)
+++ head/sys/ia64/include/pcpu.h	Mon Dec  7 06:41:27 2009	(r200207)
@@ -43,23 +43,26 @@ struct pcpu_stats {
 	u_long		pcs_nrdvs;		/* IPI_RENDEZVOUS counter. */
 	u_long		pcs_nstops;		/* IPI_STOP counter. */
 	u_long		pcs_nstrays;		/* Stray interrupt counter. */
+};
 
+struct pcpu_md {
+	struct pcb	pcb;			/* Used by IPI_STOP */
+	struct pmap	*current_pmap;		/* active pmap */
+	vm_offset_t	vhpt;			/* Address of VHPT */
+	uint64_t	lid;			/* local CPU ID */
+	uint64_t	clock;			/* Clock counter. */
+	uint64_t	clockadj;		/* Clock adjust. */
+	uint32_t	awake:1;		/* CPU is awake? */
+	struct pcpu_stats stats;		/* Interrupt stats. */
 #ifdef _KERNEL
-	struct sysctl_ctx_list pcs_sysctl_ctx;
-	struct sysctl_oid *pcs_sysctl_tree;
+	struct sysctl_ctx_list sysctl_ctx;
+	struct sysctl_oid *sysctl_tree;
 #endif
 };
 
 #define	PCPU_MD_FIELDS							\
-	struct pcb	pc_pcb;			/* Used by IPI_STOP */	\
-	struct pmap	*pc_current_pmap;	/* active pmap */	\
-	vm_offset_t	pc_vhpt;		/* Address of VHPT */	\
-	uint64_t	pc_lid;			/* local CPU ID */	\
-	uint64_t	pc_clock;		/* Clock counter. */	\
-	uint64_t	pc_clockadj;		/* Clock adjust. */	\
-	uint32_t	pc_awake:1;		/* CPU is awake? */	\
 	uint32_t	pc_acpi_id;		/* ACPI CPU id. */	\
-	struct pcpu_stats pc_stats
+	struct pcpu_md	pc_md			/* MD fields. */
 
 #ifdef _KERNEL
 



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