Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/sys/arch/powerpc Make struct cpu_info the same size if build...



details:   https://anonhg.NetBSD.org/src/rev/20d9dc237c6c
branches:  trunk
changeset: 766314:20d9dc237c6c
user:      matt <matt%NetBSD.org@localhost>
date:      Mon Jun 20 17:15:38 2011 +0000

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

diffstat:

 sys/arch/powerpc/booke/genassym.cf  |   4 +-
 sys/arch/powerpc/ibm4xx/genassym.cf |  10 +++---
 sys/arch/powerpc/include/cpu.h      |  60 ++++++++++++++++++++++--------------
 sys/arch/powerpc/oea/genassym.cf    |  10 +++---
 4 files changed, 48 insertions(+), 36 deletions(-)

diffs (187 lines):

diff -r 22c9bc3cf130 -r 20d9dc237c6c sys/arch/powerpc/booke/genassym.cf
--- a/sys/arch/powerpc/booke/genassym.cf        Mon Jun 20 17:07:21 2011 +0000
+++ b/sys/arch/powerpc/booke/genassym.cf        Mon Jun 20 17:15:38 2011 +0000
@@ -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)
 
diff -r 22c9bc3cf130 -r 20d9dc237c6c sys/arch/powerpc/ibm4xx/genassym.cf
--- a/sys/arch/powerpc/ibm4xx/genassym.cf       Mon Jun 20 17:07:21 2011 +0000
+++ b/sys/arch/powerpc/ibm4xx/genassym.cf       Mon Jun 20 17:15:38 2011 +0000
@@ -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)
diff -r 22c9bc3cf130 -r 20d9dc237c6c sys/arch/powerpc/include/cpu.h
--- a/sys/arch/powerpc/include/cpu.h    Mon Jun 20 17:07:21 2011 +0000
+++ b/sys/arch/powerpc/include/cpu.h    Mon Jun 20 17:15:38 2011 +0000
@@ -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;
diff -r 22c9bc3cf130 -r 20d9dc237c6c sys/arch/powerpc/oea/genassym.cf
--- a/sys/arch/powerpc/oea/genassym.cf  Mon Jun 20 17:07:21 2011 +0000
+++ b/sys/arch/powerpc/oea/genassym.cf  Mon Jun 20 17:15:38 2011 +0000
@@ -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)



Home | Main Index | Thread Index | Old Index