Module Name:    src
Committed By:   matt
Date:           Mon Jun 20 17:15:38 UTC 2011

Modified Files:
        src/sys/arch/powerpc/booke: genassym.cf
        src/sys/arch/powerpc/ibm4xx: genassym.cf
        src/sys/arch/powerpc/include: cpu.h
        src/sys/arch/powerpc/oea: genassym.cf

Log Message:
Make struct cpu_info the same size if building MODULAR
kernels or compiling a module.


To generate a diff of this commit:
cvs rdiff -u -r1.6 -r1.7 src/sys/arch/powerpc/booke/genassym.cf
cvs rdiff -u -r1.21 -r1.22 src/sys/arch/powerpc/ibm4xx/genassym.cf
cvs rdiff -u -r1.83 -r1.84 src/sys/arch/powerpc/include/cpu.h
cvs rdiff -u -r1.23 -r1.24 src/sys/arch/powerpc/oea/genassym.cf

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/powerpc/booke/genassym.cf
diff -u src/sys/arch/powerpc/booke/genassym.cf:1.6 src/sys/arch/powerpc/booke/genassym.cf:1.7
--- src/sys/arch/powerpc/booke/genassym.cf:1.6	Sat Jun 18 21:17:29 2011
+++ src/sys/arch/powerpc/booke/genassym.cf	Mon Jun 20 17:15:38 2011
@@ -1,4 +1,4 @@
-#	$NetBSD: genassym.cf,v 1.6 2011/06/18 21:17:29 matt Exp $
+#	$NetBSD: genassym.cf,v 1.7 2011/06/20 17:15:38 matt Exp $
 
 #-
 # Copyright (c) 2010, 2011 The NetBSD Foundation, Inc.
@@ -60,7 +60,7 @@
 define	FRAME_SPRG1	offsetof(struct ktrapframe, ktf_tf.tf_sprg1)
 define	FRAME_SPEFSCR	offsetof(struct ktrapframe, ktf_tf.tf_spefscr)
 
-define	CI_SAVELIFO	offsetof(struct cpu_info, ci_savelifo)
+define	CI_SAVELIFO	offsetof(struct cpu_info, ci_savearea[0])
 define	CI_PMAP_SEGTAB	offsetof(struct cpu_info, ci_pmap_segtabs[0])
 define	CI_EV_TLBMISS_SOFT offsetof(struct cpu_info, ci_ev_tlbmiss_soft.ev_count)
 

Index: src/sys/arch/powerpc/ibm4xx/genassym.cf
diff -u src/sys/arch/powerpc/ibm4xx/genassym.cf:1.21 src/sys/arch/powerpc/ibm4xx/genassym.cf:1.22
--- src/sys/arch/powerpc/ibm4xx/genassym.cf:1.21	Sat Jun 18 21:17:29 2011
+++ src/sys/arch/powerpc/ibm4xx/genassym.cf	Mon Jun 20 17:15:38 2011
@@ -1,4 +1,4 @@
-#	$NetBSD: genassym.cf,v 1.21 2011/06/18 21:17:29 matt Exp $
+#	$NetBSD: genassym.cf,v 1.22 2011/06/20 17:15:38 matt Exp $
 
 #
 # Copyright (C) 1995, 1996 Wolfgang Solfrank.
@@ -43,10 +43,10 @@
 define	PM_CTX		offsetof(struct pmap, pm_ctx)
 
 define	CI_INTSTK	offsetof(struct cpu_info, ci_intstk)
-define	CI_TEMPSAVE	offsetof(struct cpu_info, ci_tempsave)
-define	CI_DDBSAVE	offsetof(struct cpu_info, ci_ddbsave)
-define	CI_IPKDBSAVE	offsetof(struct cpu_info, ci_ipkdbsave)
-define	CI_TLBMISSSAVE	offsetof(struct cpu_info, ci_tlbmisssave)
+define	CI_TEMPSAVE	offsetof(struct cpu_info, ci_savearea[CI_SAVETEMP])
+define	CI_DDBSAVE	offsetof(struct cpu_info, ci_savearea[CI_SAVEDDB])
+define	CI_IPKDBSAVE	offsetof(struct cpu_info, ci_savearea[CI_SAVEIPKDB])
+define	CI_TLBMISSSAVE	offsetof(struct cpu_info, ci_savearea[CI_SAVEMMU])
 
 define	CPUSAVE_R28	CPUSAVE_R28*sizeof(register_t)
 define	CPUSAVE_R29	CPUSAVE_R29*sizeof(register_t)

Index: src/sys/arch/powerpc/include/cpu.h
diff -u src/sys/arch/powerpc/include/cpu.h:1.83 src/sys/arch/powerpc/include/cpu.h:1.84
--- src/sys/arch/powerpc/include/cpu.h:1.83	Mon Jun 20 08:47:12 2011
+++ src/sys/arch/powerpc/include/cpu.h	Mon Jun 20 17:15:38 2011
@@ -1,4 +1,4 @@
-/*	$NetBSD: cpu.h,v 1.83 2011/06/20 08:47:12 matt Exp $	*/
+/*	$NetBSD: cpu.h,v 1.84 2011/06/20 17:15:38 matt Exp $	*/
 
 /*
  * Copyright (C) 1999 Wolfgang Solfrank.
@@ -77,55 +77,56 @@
 	volatile int ci_cpl;
 	volatile int ci_iactive;
 	volatile int ci_idepth;
-#ifndef PPC_BOOKE
-	volatile imask_t ci_ipending;
+	union {
+#if !defined(PPC_BOOKE) && !defined(_MODULE)
+		volatile imask_t un1_ipending;
+#define	ci_ipending	ci_un1.un1_ipending
 #endif
+		uint64_t un1_pad64;
+	} ci_un1;
 	volatile uint32_t ci_pending_ipis;
 	int ci_mtx_oldspl;
 	int ci_mtx_count;
-#ifdef PPC_IBM4XX
+#if defined(PPC_IBM4XX) || defined(MODULAR) || defined(_MODULE)
 	char *ci_intstk;
 #endif
-#ifndef PPC_BOOKE
+#define	CI_SAVETEMP	(0*CPUSAVE_LEN)
+#define	CI_SAVEDDB	(1*CPUSAVE_LEN)
+#define	CI_SAVEIPKDB	(2*CPUSAVE_LEN)
+#define	CI_SAVEMMU	(3*CPUSAVE_LEN)
+#define	CI_SAVEMAX	(4*CPUSAVE_LEN)
 #define	CPUSAVE_LEN	8
-	register_t ci_tempsave[CPUSAVE_LEN];
-	register_t ci_ddbsave[CPUSAVE_LEN];
-	register_t ci_ipkdbsave[CPUSAVE_LEN];
+#if !defined(PPC_BOOKE) && !defined(MODULAR) && !defined(_MODULE)
+#define	CPUSAVE_SIZE	(CI_SAVEMAX*CPUSAVE_LEN)
+#else
+#define	CPUSAVE_SIZE	128
+#endif
 #define	CPUSAVE_R28	0		/* where r28 gets saved */
 #define	CPUSAVE_R29	1		/* where r29 gets saved */
 #define	CPUSAVE_R30	2		/* where r30 gets saved */
 #define	CPUSAVE_R31	3		/* where r31 gets saved */
-#if defined(PPC_IBM4XX)
-#define	CPUSAVE_DEAR	4		/* where SPR_DEAR gets saved */
-#define	CPUSAVE_ESR	5		/* where SPR_ESR gets saved */
-	register_t ci_tlbmisssave[CPUSAVE_LEN];
-#else
-#define	CPUSAVE_DAR	4		/* where SPR_DAR gets saved */
-#define	CPUSAVE_DSISR	5		/* where SPR_DSISR gets saved */
-#define	DISISAVE_LEN	4
-	register_t ci_disisave[DISISAVE_LEN];
-#endif
+#define	CPUSAVE_DEAR	4		/* where IBM4XX SPR_DEAR gets saved */
+#define	CPUSAVE_DAR	4		/* where OEA SPR_DAR gets saved */
+#define	CPUSAVE_ESR	5		/* where IBM4XX SPR_ESR gets saved */
+#define	CPUSAVE_DSISR	5		/* where OEA SPR_DSISR gets saved */
 #define	CPUSAVE_SRR0	6		/* where SRR0 gets saved */
 #define	CPUSAVE_SRR1	7		/* where SRR1 gets saved */
-#else /* PPC_BOOKE */
-#define	CPUSAVE_LEN	128
-	register_t ci_savelifo[CPUSAVE_LEN];
+	register_t ci_savearea[CPUSAVE_SIZE];
+#if defined(PPC_BOOKE) || defined(MODULAR) || defined(_MODULE)
 	struct pmap_segtab *ci_pmap_segtabs[2];
 #define	ci_pmap_kern_segtab	ci_pmap_segtabs[0]
 #define	ci_pmap_user_segtab	ci_pmap_segtabs[1]
 	struct pmap_tlb_info *ci_tlb_info;
-#endif /* PPC_BOOKE */
+#endif /* PPC_BOOKE || MODULAR || _MODULE */
 	struct cache_info ci_ci;		
 	void *ci_sysmon_cookie;
 	void (*ci_idlespin)(void);
 	uint32_t ci_khz;
 	struct evcnt ci_ev_clock;	/* clock intrs */
 	struct evcnt ci_ev_statclock; 	/* stat clock */
-#ifndef PPC_BOOKE
 	struct evcnt ci_ev_softclock;	/* softclock intrs */
 	struct evcnt ci_ev_softnet;	/* softnet intrs */
 	struct evcnt ci_ev_softserial;	/* softserial intrs */
-#endif
 	struct evcnt ci_ev_traps;	/* calls to trap() */
 	struct evcnt ci_ev_kdsi;	/* kernel DSI traps */
 	struct evcnt ci_ev_udsi;	/* user DSI traps */
@@ -220,6 +221,7 @@
 	__asm volatile ("mtmsr %0" : : "r"(msr));
 }
 
+#if !defined(_MODULE)
 static __inline uint32_t
 mftbl(void)
 {
@@ -294,6 +296,7 @@
 	    : [rtcu] "=r"(rtcp[0]), [rtcl] "=r"(rtcp[1]), [tmp] "=r"(tmp)
 	    :: "cr0");
 }
+#endif /* !_MODULE */
 
 static __inline uint32_t
 mfpvr(void)
@@ -304,6 +307,15 @@
 	return (pvr);
 }
 
+#ifdef _MODULE
+extern const char __CPU_MAXNUM;
+/*
+ * Make with 0xffff to force a R_PPC_ADDR16_LO without the
+ * corresponding R_PPC_ADDR16_HI relocation.
+ */
+#define	CPU_MAXNUM	(((uintptr_t)&__CPU_MAXNUM)&0xffff)
+#endif /* _MODULE */
+
 #if !defined(_MODULE)
 extern int powersave;
 extern int cpu_timebase;

Index: src/sys/arch/powerpc/oea/genassym.cf
diff -u src/sys/arch/powerpc/oea/genassym.cf:1.23 src/sys/arch/powerpc/oea/genassym.cf:1.24
--- src/sys/arch/powerpc/oea/genassym.cf:1.23	Sat Jun 18 21:17:29 2011
+++ src/sys/arch/powerpc/oea/genassym.cf	Mon Jun 20 17:15:38 2011
@@ -1,4 +1,4 @@
-#	$NetBSD: genassym.cf,v 1.23 2011/06/18 21:17:29 matt Exp $
+#	$NetBSD: genassym.cf,v 1.24 2011/06/20 17:15:38 matt Exp $
 
 #
 # Copyright (C) 1995, 1996 Wolfgang Solfrank.
@@ -63,10 +63,10 @@
 define	PM_KERNELSR	offsetof(struct pmap, pm_sr[KERNEL_SR])
 endif
 
-define	CI_TEMPSAVE	offsetof(struct cpu_info, ci_tempsave)
-define	CI_DDBSAVE	offsetof(struct cpu_info, ci_ddbsave)
-define	CI_IPKDBSAVE	offsetof(struct cpu_info, ci_ipkdbsave)
-define	CI_DISISAVE	offsetof(struct cpu_info, ci_disisave)
+define	CI_TEMPSAVE	offsetof(struct cpu_info, ci_savearea[CI_SAVETEMP])
+define	CI_DDBSAVE	offsetof(struct cpu_info, ci_savearea[CI_SAVEDDB])
+define	CI_IPKDBSAVE	offsetof(struct cpu_info, ci_savearea[CI_SAVEIPKDB])
+define	CI_DISISAVE	offsetof(struct cpu_info, ci_savearea[CI_SAVEMMU])
 
 define	CPUSAVE_R28	CPUSAVE_R28*sizeof(register_t)
 define	CPUSAVE_R29	CPUSAVE_R29*sizeof(register_t)

Reply via email to