Module Name: src
Committed By: matt
Date: Mon Aug 10 08:05:33 UTC 2009
Modified Files:
src/sys/arch/vax/include: pte.h
Log Message:
Change kvtopte and kvtophys from ({ }) to static inline and while there
make them tolerable of rump.
To generate a diff of this commit:
cvs rdiff -u -r1.22 -r1.23 src/sys/arch/vax/include/pte.h
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/vax/include/pte.h
diff -u src/sys/arch/vax/include/pte.h:1.22 src/sys/arch/vax/include/pte.h:1.23
--- src/sys/arch/vax/include/pte.h:1.22 Fri Aug 29 18:25:02 2008
+++ src/sys/arch/vax/include/pte.h Mon Aug 10 08:05:32 2009
@@ -1,4 +1,4 @@
-/* $NetBSD: pte.h,v 1.22 2008/08/29 18:25:02 matt Exp $ */
+/* $NetBSD: pte.h,v 1.23 2009/08/10 08:05:32 matt Exp $ */
/*
* Copyright (c) 1994 Ludd, University of Lule}, Sweden.
@@ -77,17 +77,49 @@
#endif
#ifdef __GNUC__
-#define kvtopte(va) ({ \
- struct pte *r; \
- __asm("extzv $9,$21,%1,%0;moval *Sysmap[%0],%0" : "=r"(r) : "g"(va)); \
- r; \
-})
-#define kvtophys(va) ({ \
- paddr_t r; \
- __asm("extzv $9,$21,%1,%0;ashl $9,*Sysmap[%0],%0;insv %1,$0,$9,%0" \
- : "=&r"(r) : "g"(va) : "cc"); \
- r; \
-})
+#define kvtopte(va) kvtopte0((vaddr_t) (va))
+static inline struct pte *
+kvtopte0(vaddr_t va)
+{
+ struct pte *pt;
+#ifdef _RUMPKERNEL
+ __asm(
+ "extzv $9,$21,%1,%0\n\t"
+ "moval %2[%0],%0\n\t"
+ : "=r"(pt)
+ : "g"(va), "o"(*Sysmap));
+#else
+ __asm(
+ "extzv $9,$21,%1,%0\n\t"
+ "moval *Sysmap[%0],%0\n\t"
+ : "=r"(pt)
+ : "g"(va));
+#endif
+ return pt;
+}
+
+#define kvtophys(va) kvtophys0((vaddr_t) (va))
+static inline paddr_t
+kvtophys0(vaddr_t va)
+{
+ paddr_t pa;
+#ifdef _RUMPKERNEL
+ __asm(
+ "extzv $9,$21,%1,%0\n\t"
+ "ashl $9,%2[%0],%0\n\t"
+ "insv %1,$0,$9,%0\n\t"
+ : "=&r"(pa)
+ : "g"(va), "o"(*Sysmap) : "cc");
+#else
+ __asm(
+ "extzv $9,$21,%1,%0\n\t"
+ "ashl $9,*Sysmap[%0],%0\n\t"
+ "insv %1,$0,$9,%0\n\t"
+ : "=&r"(pa)
+ : "g"(va) : "cc");
+#endif
+ return pa;
+}
#else /* __GNUC__ */
#define kvtophys(va) \
(((kvtopte(va))->pg_pfn << VAX_PGSHIFT) | ((paddr_t)(va) & VAX_PGOFSET))