xref: /plan9-contrib/sys/src/9k/k10/map.c (revision 9ef1f84b659abcb917c5c090acbce0772e494f21)
1*9ef1f84bSDavid du Colombier #include "u.h"
2*9ef1f84bSDavid du Colombier #include "../port/lib.h"
3*9ef1f84bSDavid du Colombier #include "mem.h"
4*9ef1f84bSDavid du Colombier #include "dat.h"
5*9ef1f84bSDavid du Colombier #include "fns.h"
6*9ef1f84bSDavid du Colombier 
7*9ef1f84bSDavid du Colombier #define _KADDR(pa)	UINT2PTR(kseg0+((uintptr)(pa)))
8*9ef1f84bSDavid du Colombier #define _PADDR(va)	PTR2UINT(((uintptr)(va)) - kseg0)
9*9ef1f84bSDavid du Colombier 
10*9ef1f84bSDavid du Colombier void*
KADDR(uintptr pa)11*9ef1f84bSDavid du Colombier KADDR(uintptr pa)
12*9ef1f84bSDavid du Colombier {
13*9ef1f84bSDavid du Colombier 	u8int* va;
14*9ef1f84bSDavid du Colombier 
15*9ef1f84bSDavid du Colombier 	va = UINT2PTR(pa);
16*9ef1f84bSDavid du Colombier 	if(pa < TMFM)
17*9ef1f84bSDavid du Colombier 		return KSEG0+va;
18*9ef1f84bSDavid du Colombier 	return KSEG2+va;
19*9ef1f84bSDavid du Colombier }
20*9ef1f84bSDavid du Colombier 
21*9ef1f84bSDavid du Colombier uintmem
PADDR(void * va)22*9ef1f84bSDavid du Colombier PADDR(void* va)
23*9ef1f84bSDavid du Colombier {
24*9ef1f84bSDavid du Colombier 	uintmem pa;
25*9ef1f84bSDavid du Colombier 
26*9ef1f84bSDavid du Colombier 	pa = PTR2UINT(va);
27*9ef1f84bSDavid du Colombier 	if(pa >= KSEG0 && pa < KSEG0+TMFM)
28*9ef1f84bSDavid du Colombier 		return pa-KSEG0;
29*9ef1f84bSDavid du Colombier 	if(pa > KSEG2)
30*9ef1f84bSDavid du Colombier 		return pa-KSEG2;
31*9ef1f84bSDavid du Colombier 
32*9ef1f84bSDavid du Colombier 	panic("PADDR: va %#p pa #%p @ %#p\n", va, _PADDR(va), getcallerpc(&va));
33*9ef1f84bSDavid du Colombier 	return 0;
34*9ef1f84bSDavid du Colombier }
35*9ef1f84bSDavid du Colombier 
36*9ef1f84bSDavid du Colombier KMap*
kmap(Page * page)37*9ef1f84bSDavid du Colombier kmap(Page* page)
38*9ef1f84bSDavid du Colombier {
39*9ef1f84bSDavid du Colombier //	print("kmap(%#llux) @ %#p: %#p %#p\n",
40*9ef1f84bSDavid du Colombier //		page->pa, getcallerpc(&page),
41*9ef1f84bSDavid du Colombier //		page->pa, KADDR(page->pa));
42*9ef1f84bSDavid du Colombier 
43*9ef1f84bSDavid du Colombier 	return KADDR(page->pa);
44*9ef1f84bSDavid du Colombier }
45