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