+unsigned long v2p(void *virt)
+{
+ unsigned long _virt = (unsigned long)virt;
+
+ if (!paging_enb)
+ return _virt;
+
+ if (_virt >= 0xA0000 && _virt < 0xC0000)
+ return _virt;
+ if (_virt >= 0x200000 && _virt < 0x300000)
+ return _virt - 0x200000 + /* XXX */ 0x1FF82000;
+ if (_virt >= 0x1F0000 && _virt < 0x1F2000)
+ return _virt - 0x1F0000 + 0x1FF80000;
+ if ((_virt & ~0xFFF) == 0x4000)
+ return _virt - 0x4000 + curmapped;
+
+ outputf("WARNING: v2p(%08x)", _virt);
+ return 0xFFFFFFFF;
+}
+
+void *p2v(unsigned long phys)
+{
+ if (!paging_enb)
+ return (void*)phys;
+
+ if (phys >= 0xA0000 && phys < 0xC0000)
+ return (void*)phys;
+ if (phys >= 0x1FF82000 && phys < 0x20000000)
+ return (void*)(phys - 0x1FF82000 + 0x200000);
+ if (phys >= 0x1FF80000 && phys < 0x1FF82000)
+ return (void*)(phys - 0x1FF80000 + 0x1F0000);
+
+ if ((phys & ~0xFFF) != curmapped) /* If it's not mapped, map it in. */