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)