Module Name:    src
Committed By:   matt
Date:           Mon Jun 20 08:47:13 UTC 2011

Modified Files:
        src/sys/arch/powerpc/include: cpu.h
        src/sys/arch/powerpc/powerpc: powerpc_machdep.c

Log Message:
Make more module friendly (part 1).
Don't export frame.h and psl.h to all of the kernel.
add lwp_pc and clkf accessor functions.
whitespace cleanup.


To generate a diff of this commit:
cvs rdiff -u -r1.82 -r1.83 src/sys/arch/powerpc/include/cpu.h
cvs rdiff -u -r1.55 -r1.56 src/sys/arch/powerpc/powerpc/powerpc_machdep.c

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/include/cpu.h
diff -u src/sys/arch/powerpc/include/cpu.h:1.82 src/sys/arch/powerpc/include/cpu.h:1.83
--- src/sys/arch/powerpc/include/cpu.h:1.82	Fri Jun 17 19:04:00 2011
+++ src/sys/arch/powerpc/include/cpu.h	Mon Jun 20 08:47:12 2011
@@ -1,4 +1,4 @@
-/*	$NetBSD: cpu.h,v 1.82 2011/06/17 19:04:00 matt Exp $	*/
+/*	$NetBSD: cpu.h,v 1.83 2011/06/20 08:47:12 matt Exp $	*/
 
 /*
  * Copyright (C) 1999 Wolfgang Solfrank.
@@ -45,13 +45,12 @@
 #if defined(_KERNEL) || defined(_KMEMUSER)
 #if defined(_KERNEL_OPT)
 #include "opt_lockdebug.h"
+#include "opt_modular.h"
 #include "opt_multiprocessor.h"
 #include "opt_ppcarch.h"
 #endif
 
 #ifdef _KERNEL
-#include <machine/frame.h>
-#include <machine/psl.h>
 #include <machine/intr.h>
 #include <sys/device_if.h>
 #include <sys/evcnt.h>
@@ -154,8 +153,7 @@
 
 #ifdef _KERNEL
 
-#ifdef MULTIPROCESSOR
-
+#if defined(MULTIPROCESSOR) && !defined(_MODULE)
 struct cpu_hatch_data {
 	device_t self;
 	struct cpu_info *ci;
@@ -168,33 +166,25 @@
 	int batu[4], batl[4];
 	int tbu, tbl;
 };
+#endif /* MULTIPROCESSOR && !_MODULE */
 
-static __inline int
-cpu_number(void)
-{
-	int pir;
-
-	__asm ("mfspr %0,1023" : "=r"(pir));
-	return pir;
-}
-
-void	cpu_boot_secondary_processors(void);
-
+#if defined(MULTIPROCESSOR) || defined(_MODULE)
+#define	cpu_number()		(curcpu()->ci_index + 0)
 
 #define CPU_IS_PRIMARY(ci)	((ci)->ci_cpuid == 0)
-#define CPU_INFO_ITERATOR		int
-#define CPU_INFO_FOREACH(cii, ci)					\
+#define CPU_INFO_ITERATOR	int
+#define CPU_INFO_FOREACH(cii, ci)				\
 	cii = 0, ci = &cpu_info[0]; cii < ncpu; cii++, ci++
 
 #else
-
 #define cpu_number()		0
 
-#define CPU_INFO_ITERATOR		int
-#define CPU_INFO_FOREACH(cii, ci)					\
+#define CPU_IS_PRIMARY(ci)	true
+#define CPU_INFO_ITERATOR	int
+#define CPU_INFO_FOREACH(cii, ci)				\
 	cii = 0, ci = curcpu(); ci != NULL; ci = NULL
 
-#endif /* MULTIPROCESSOR */
+#endif /* MULTIPROCESSOR || _MODULE */
 
 extern struct cpu_info cpu_info[];
 
@@ -314,88 +304,69 @@
 	return (pvr);
 }
 
-static __inline int
-cntlzw(uint32_t val)
-{
-	int 			cnt;
-
-	__asm volatile ("cntlzw %0,%1" : "=r"(cnt) : "r"(val));
-	return (cnt);
-}
-
-/*
- * functions to access the G3's cache throttling register
- * bits 1 - 9 specify additional waits on cache acess
- * bit 0 enables cache throttling
- */
-
-static __inline int
-mfictc(void)
-{
-	int reg;
-
-	__asm ("mfspr %0,1019" : "=r"(reg));
-	return reg;
-}
-
-static __inline void
-mtictc(uint32_t reg)
-{
-
-	__asm ("mtspr 1019,%0" :: "r"(reg));
-}
-
-#define	CLKF_USERMODE(frame)	(((frame)->cf_srr1 & PSL_PR) != 0)
-#define	CLKF_PC(frame)		((frame)->cf_srr0)
-#define	CLKF_INTR(frame)	((frame)->cf_idepth > 0)
-
-#define	LWP_PC(l)		(trapframe(l)->tf_srr0)
-
-#define	cpu_proc_fork(p1, p2)
-
+#if !defined(_MODULE)
 extern int powersave;
 extern int cpu_timebase;
 extern int cpu_printfataltraps;
 extern char cpu_model[];
 
-struct cpu_info *cpu_attach_common(device_t, int);
-void cpu_setup(device_t, struct cpu_info *);
-void cpu_identify(char *, size_t);
-int cpu_get_dfs(void);
-void cpu_set_dfs(int);
-void delay (unsigned int);
-void cpu_probe_cache(void);
+struct cpu_info *
+	cpu_attach_common(device_t, int);
+void	cpu_setup(device_t, struct cpu_info *);
+void	cpu_identify(char *, size_t);
+int	cpu_get_dfs(void);
+void	cpu_set_dfs(int);
+void	cpu_probe_cache(void);
 #ifndef PPC_BOOKE
-void dcache_flush_page(vaddr_t);
-void icache_flush_page(vaddr_t);
-void dcache_flush(vaddr_t, vsize_t);
-void icache_flush(vaddr_t, vsize_t);
+void	dcache_flush_page(vaddr_t);
+void	icache_flush_page(vaddr_t);
+void	dcache_flush(vaddr_t, vsize_t);
+void	icache_flush(vaddr_t, vsize_t);
 #else
-void dcache_wb_page(vaddr_t);
-void dcache_wbinv_page(vaddr_t);
-void dcache_inv_page(vaddr_t);
-void dcache_zero_page(vaddr_t);
-void icache_inv_page(vaddr_t);
-void dcache_wb(vaddr_t, vsize_t);
-void dcache_wbinv(vaddr_t, vsize_t);
-void dcache_inv(vaddr_t, vsize_t);
-void icache_inv(vaddr_t, vsize_t);
+void	dcache_wb_page(vaddr_t);
+void	dcache_wbinv_page(vaddr_t);
+void	dcache_inv_page(vaddr_t);
+void	dcache_zero_page(vaddr_t);
+void	icache_inv_page(vaddr_t);
+void	dcache_wb(vaddr_t, vsize_t);
+void	dcache_wbinv(vaddr_t, vsize_t);
+void	dcache_inv(vaddr_t, vsize_t);
+void	icache_inv(vaddr_t, vsize_t);
 #endif
-void *mapiodev(paddr_t, psize_t);
-void unmapiodev(vaddr_t, vsize_t);
+void *	mapiodev(paddr_t, psize_t);
+void	unmapiodev(vaddr_t, vsize_t);
 
 #ifdef MULTIPROCESSOR
-int md_setup_trampoline(volatile struct cpu_hatch_data *, struct cpu_info *);
-void md_presync_timebase(volatile struct cpu_hatch_data *);
-void md_start_timebase(volatile struct cpu_hatch_data *);
-void md_sync_timebase(volatile struct cpu_hatch_data *);
-void md_setup_interrupts(void);
-int cpu_spinup(device_t, struct cpu_info *);
-register_t cpu_hatch(void);
-void cpu_spinup_trampoline(void);
-#endif
+int	md_setup_trampoline(volatile struct cpu_hatch_data *,
+	    struct cpu_info *);
+void	md_presync_timebase(volatile struct cpu_hatch_data *);
+void	md_start_timebase(volatile struct cpu_hatch_data *);
+void	md_sync_timebase(volatile struct cpu_hatch_data *);
+void	md_setup_interrupts(void);
+int	cpu_spinup(device_t, struct cpu_info *);
+register_t
+	cpu_hatch(void);
+void	cpu_spinup_trampoline(void);
+void	cpu_boot_secondary_processors(void);
+#endif /* MULTIPROCESSOR */
+#endif /* !_MODULE */
+
+#define	cpu_proc_fork(p1, p2)
 
 #define	DELAY(n)		delay(n)
+void	delay(unsigned int);
+
+#define	CLKF_USERMODE(cf)	cpu_clkf_usermode(cf)
+#define	CLKF_PC(cf)		cpu_clkf_pc(cf)
+#define	CLKF_INTR(cf)		cpu_clkf_intr(cf)
+
+bool	cpu_clkf_usermode(const struct clockframe *);
+vaddr_t	cpu_clkf_pc(const struct clockframe *);
+bool	cpu_clkf_intr(const struct clockframe *);
+
+#define	LWP_PC(l)		cpu_lwp_pc(l)
+
+vaddr_t	cpu_lwp_pc(struct lwp *);
 
 void *	cpu_uarea_alloc(bool);
 bool	cpu_uarea_free(void *);
@@ -406,13 +377,12 @@
 
 void	cpu_fixup_stubs(void);
 
-#if !defined(PPC_IBM4XX) && !defined(PPC_BOOKE)
-void oea_init(void (*)(void));
-void oea_startup(const char *);
-void oea_dumpsys(void);
-void oea_install_extint(void (*)(void));
-paddr_t kvtop(void *); 
-void softnet(int);
+#if !defined(PPC_IBM4XX) && !defined(PPC_BOOKE) && !defined(_MODULE)
+void	oea_init(void (*)(void));
+void	oea_startup(const char *);
+void	oea_dumpsys(void);
+void	oea_install_extint(void (*)(void));
+paddr_t	kvtop(void *); 
 
 extern paddr_t msgbuf_paddr;
 extern int cpu_altivec;
@@ -422,13 +392,12 @@
 
 /* XXX The below breaks unified pmap on ppc32 */
 
-#if defined(_KERNEL) || defined(_STANDALONE)
-#if !defined(CACHELINESIZE)
-#ifdef PPC_IBM403
+#if !defined(CACHELINESIZE) && !defined(_MODULE) \
+    && (defined(_KERNEL) || defined(_STANDALONE))
+#if defined(PPC_IBM403)
 #define	CACHELINESIZE		16
 #define MAXCACHELINESIZE	16
-#else
-#if defined (PPC_OEA64_BRIDGE)
+#elif defined (PPC_OEA64_BRIDGE)
 #define	CACHELINESIZE		128
 #define MAXCACHELINESIZE	128
 #else
@@ -436,10 +405,8 @@
 #define MAXCACHELINESIZE	32
 #endif /* PPC_OEA64_BRIDGE */
 #endif
-#endif
-#endif
 
-void __syncicache(void *, size_t);
+void	__syncicache(void *, size_t);
 
 /*
  * CTL_MACHDEP definitions.

Index: src/sys/arch/powerpc/powerpc/powerpc_machdep.c
diff -u src/sys/arch/powerpc/powerpc/powerpc_machdep.c:1.55 src/sys/arch/powerpc/powerpc/powerpc_machdep.c:1.56
--- src/sys/arch/powerpc/powerpc/powerpc_machdep.c:1.55	Fri Jun 17 19:03:01 2011
+++ src/sys/arch/powerpc/powerpc/powerpc_machdep.c	Mon Jun 20 08:47:13 2011
@@ -1,4 +1,4 @@
-/*	$NetBSD: powerpc_machdep.c,v 1.55 2011/06/17 19:03:01 matt Exp $	*/
+/*	$NetBSD: powerpc_machdep.c,v 1.56 2011/06/20 08:47:13 matt Exp $	*/
 
 /*
  * Copyright (C) 1995, 1996 Wolfgang Solfrank.
@@ -32,7 +32,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: powerpc_machdep.c,v 1.55 2011/06/17 19:03:01 matt Exp $");
+__KERNEL_RCSID(0, "$NetBSD: powerpc_machdep.c,v 1.56 2011/06/20 08:47:13 matt Exp $");
 
 #include "opt_altivec.h"
 #include "opt_modular.h"
@@ -60,9 +60,10 @@
 
 #include <dev/mm.h>
 
+#include <powerpc/fpu.h>
 #include <powerpc/pcb.h>
+#include <powerpc/psl.h>
 #include <powerpc/userret.h>
-#include <powerpc/fpu.h>
 #if defined(ALTIVEC) || defined(PPC_HAVE_SPE)
 #include <powerpc/altivec.h>
 #endif
@@ -435,6 +436,30 @@
 	l->l_md.md_astpending = 1;
 }
 
+vaddr_t
+cpu_lwp_pc(lwp_t *l)
+{
+	return l->l_md.md_utf->tf_srr0;
+}
+
+bool
+cpu_clkf_usermode(const struct clockframe *cf)
+{
+	return (cf->cf_srr1 & PSL_PR) != 0;
+}
+
+vaddr_t
+cpu_clkf_pc(const struct clockframe *cf)
+{
+	return cf->cf_srr0;
+}
+
+bool
+cpu_clkf_intr(const struct clockframe *cf)
+{
+	return cf->cf_idepth > 0;
+}
+
 #ifdef MULTIPROCESSOR
 /*
  * MD support for xcall(9) interface.

Reply via email to