diff options
author | Arnon Gilboa <agilboa@redhat.com> | 2013-06-05 09:06:13 +0300 |
---|---|---|
committer | Yonit Halperin <yhalperi@redhat.com> | 2013-06-05 01:58:20 -0400 |
commit | e506ebc05de54e3caa485d5b83a3b7e08dd597c9 (patch) | |
tree | 5b80824958745628132527e3e1eb8fe9f3d7e952 | |
parent | defd02b8a4f18ac5fab92657706009a7122e7e37 (diff) |
add PA/VA funcsres-change.v1
-rw-r--r-- | C++/bdd.cxx | 20 | ||||
-rw-r--r-- | C++/bdd.hxx | 4 |
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); + };
//
|