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))

Reply via email to