summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArnon Gilboa <agilboa@redhat.com>2013-06-05 09:06:13 +0300
committerYonit Halperin <yhalperi@redhat.com>2013-06-05 01:58:20 -0400
commite506ebc05de54e3caa485d5b83a3b7e08dd597c9 (patch)
tree5b80824958745628132527e3e1eb8fe9f3d7e952
parentdefd02b8a4f18ac5fab92657706009a7122e7e37 (diff)
add PA/VA funcsres-change.v1
-rw-r--r--C++/bdd.cxx20
-rw-r--r--C++/bdd.hxx4
2 files changed, 24 insertions, 0 deletions
diff --git a/C++/bdd.cxx b/C++/bdd.cxx
index 2b763d7..b203408 100644
--- a/C++/bdd.cxx
+++ b/C++/bdd.cxx
@@ -66,6 +66,26 @@ VOID BASIC_DISPLAY_DRIVER::wait_for_cursor_cmd()
}
}
+QXLPHYSICAL BASIC_DISPLAY_DRIVER::PA(PVOID virt, UINT8 region_id)
+{
+ QxlMemRegionInfo *mem_region = &m_mem_regions[region_id];
+
+ return mem_region->high_bits | ((UINT64)virt - (UINT64)mem_region->mapped_start);
+}
+
+UINT64 BASIC_DISPLAY_DRIVER::VA(QXLPHYSICAL paddr, UINT8 region_id)
+{
+ UINT64 virt;
+ QxlMemRegionInfo *mem_region = &m_mem_regions[region_id];
+
+ //TODO: ASSERT(pdev, (paddr >> (64 - pdev->slot_id_bits)) == slot_id);
+ //TODO: ASSERT(pdev, ((paddr << pdev->slot_id_bits) >> (64 - pdev->slot_gen_bits)) == p_slot->slot.generation);
+
+ virt = paddr & m_va_slot_mask;
+ virt += (UINT64)mem_region->mapped_start;
+
+ return virt;
+}
BASIC_DISPLAY_DRIVER::BASIC_DISPLAY_DRIVER(_In_ DEVICE_OBJECT* pPhysicalDeviceObject) : m_pPhysicalDevice(pPhysicalDeviceObject),
m_MonitorPowerState(PowerDeviceD0),
diff --git a/C++/bdd.hxx b/C++/bdd.hxx
index 2086a49..7958fcb 100644
--- a/C++/bdd.hxx
+++ b/C++/bdd.hxx
@@ -456,6 +456,10 @@ private:
VOID push_cursor_cmd();
VOID wait_for_display_cmd();
VOID wait_for_cursor_cmd();
+
+ _inline QXLPHYSICAL PA(PVOID virt, UINT8 region_id);
+ _inline UINT64 VA(QXLPHYSICAL paddr, UINT8 region_id);
+
};
//