Lines Matching refs:physmem
147 struct physmem { struct
163 w32skrnl_physical_address_mapping(struct physmem *physmem, DWORD phys_addr, DWORD size, DWORD *virt… in w32skrnl_physical_address_mapping() argument
203 …: "r" (physmem->w32skrnl_dpmi_lcall_ptr), "a" (DPMI_PHYSICAL_ADDRESS_MAPPING), "S" (size_hi), "D" … in w32skrnl_physical_address_mapping()
214 mov edx, physmem in w32skrnl_physical_address_mapping()
215 mov edx, [edx]physmem.w32skrnl_dpmi_lcall_ptr in w32skrnl_physical_address_mapping()
249 vdxcall_physical_address_mapping(struct physmem *physmem, DWORD phys_addr, DWORD size, DWORD *virt_… in vdxcall_physical_address_mapping() argument
291 … : "rmi" (physmem->VxDCall2), "rmi" (VWIN32_Int31Dispatch), "rmi" (DPMI_PHYSICAL_ADDRESS_MAPPING), in vdxcall_physical_address_mapping()
319 mov eax, physmem in vdxcall_physical_address_mapping()
320 call [eax]physmem.VxDCall2 in vdxcall_physical_address_mapping()
523 init_physmem_w32skrnl(struct physmem *physmem, struct pci_access *a) in init_physmem_w32skrnl() argument
563 if (!win32_get_physmem_offset(&physmem->base_addr_offset)) in init_physmem_w32skrnl()
585 physmem->w32skrnl_dpmi_lcall_ptr = (LPVOID)((BYTE *)buf_ptr + 0xa4); in init_physmem_w32skrnl()
587 physmem->w32skrnl_dpmi_lcall_ptr = (LPVOID)((BYTE *)buf_ptr + 0xa0); in init_physmem_w32skrnl()
594 init_physmem_vxdcall(struct physmem *physmem, struct pci_access *a) in init_physmem_vxdcall() argument
617 physmem->VxDCall2 = (LPVOID)GetProcAddress(kernel32, "VxDCall2"); in init_physmem_vxdcall()
618 if (!physmem->VxDCall2) in init_physmem_vxdcall()
619 physmem->VxDCall2 = (LPVOID)win32_get_proc_address_by_ordinal(kernel32, 3, TRUE); in init_physmem_vxdcall()
621 if (!physmem->VxDCall2) in init_physmem_vxdcall()
635 success = vdxcall_physical_address_mapping(physmem, 0x0, 0x0, &addr); in init_physmem_vxdcall()
639 physmem->VxDCall2 = NULL; in init_physmem_vxdcall()
646 physmem->VxDCall2 = NULL; in init_physmem_vxdcall()
652 if (!win32_get_physmem_offset(&physmem->base_addr_offset)) in init_physmem_vxdcall()
655 physmem->VxDCall2 = NULL; in init_physmem_vxdcall()
667 init_physmem_ntdll(struct physmem *physmem, struct pci_access *a, const char *filename, int w) in init_physmem_ntdll() argument
685 physmem->RtlNtStatusToDosError = (LPVOID)GetProcAddress(ntdll, "RtlNtStatusToDosError"); in init_physmem_ntdll()
687 physmem->NtOpenSection = (LPVOID)GetProcAddress(ntdll, "NtOpenSection"); in init_physmem_ntdll()
688 if (!physmem->NtOpenSection) in init_physmem_ntdll()
695 physmem->NtMapViewOfSection = (LPVOID)GetProcAddress(ntdll, "NtMapViewOfSection"); in init_physmem_ntdll()
696 if (!physmem->NtMapViewOfSection) in init_physmem_ntdll()
703 physmem->NtUnmapViewOfSection = (LPVOID)GetProcAddress(ntdll, "NtUnmapViewOfSection"); in init_physmem_ntdll()
704 if (!physmem->NtUnmapViewOfSection) in init_physmem_ntdll()
748 physmem->section_handle = INVALID_HANDLE_VALUE; in init_physmem_ntdll()
749 …status = physmem->NtOpenSection(&physmem->section_handle, SECTION_MAP_READ | (w ? SECTION_MAP_WRIT… in init_physmem_ntdll()
753 if (status < 0 || physmem->section_handle == INVALID_HANDLE_VALUE) in init_physmem_ntdll()
755 physmem->section_handle = INVALID_HANDLE_VALUE; in init_physmem_ntdll()
758 else if (physmem->RtlNtStatusToDosError) in init_physmem_ntdll()
759 … a->debug("failed: %s (0x%lx).", win32_strerror(physmem->RtlNtStatusToDosError(status)), status); in init_physmem_ntdll()
797 struct physmem *physmem = physmem_open(a, w); in physmem_access() local
798 if (!physmem) in physmem_access()
800 physmem_close(physmem); in physmem_access()
804 struct physmem *
812 struct physmem *physmem = pci_malloc(a, sizeof(*physmem)); in physmem_open() local
814 memset(physmem, 0, sizeof(*physmem)); in physmem_open()
815 physmem->section_handle = INVALID_HANDLE_VALUE; in physmem_open()
823 init_physmem_ntdll(physmem, a, devmem, w)) in physmem_open()
824 return physmem; in physmem_open()
827 if (!force_w32skrnl && init_physmem_vxdcall(physmem, a)) in physmem_open()
828 return physmem; in physmem_open()
830 if (!force_vxdcall && init_physmem_w32skrnl(physmem, a)) in physmem_open()
831 return physmem; in physmem_open()
835 pci_mfree(physmem); in physmem_open()
840 physmem_close(struct physmem *physmem) in physmem_close() argument
842 if (physmem->section_handle != INVALID_HANDLE_VALUE) in physmem_close()
843 CloseHandle(physmem->section_handle); in physmem_close()
844 pci_mfree(physmem); in physmem_close()
848 physmem_get_pagesize(struct physmem *physmem UNUSED) in physmem_get_pagesize()
857 physmem_map(struct physmem *physmem, u64 addr, size_t length, int w) in physmem_map() argument
864 if (physmem->section_handle != INVALID_HANDLE_VALUE) in physmem_map()
877 …status = physmem->NtMapViewOfSection(physmem->section_handle, GetCurrentProcess(), &ptr, 0, 0, &se… in physmem_map()
914 else if (physmem->VxDCall2 || physmem->w32skrnl_dpmi_lcall_ptr) in physmem_map()
930 if (physmem->VxDCall2) in physmem_map()
931 success = vdxcall_physical_address_mapping(physmem, (DWORD)addr, length, &virt); in physmem_map()
933 success = w32skrnl_physical_address_mapping(physmem, (DWORD)addr, length, &virt); in physmem_map()
940 ptr = (VOID *)(virt - physmem->base_addr_offset); in physmem_map()
952 physmem_unmap(struct physmem *physmem, void *ptr, size_t length) in physmem_unmap() argument
954 long pagesize = physmem_get_pagesize(physmem); in physmem_unmap()
958 if (physmem->section_handle != INVALID_HANDLE_VALUE) in physmem_unmap()
982 status = physmem->NtUnmapViewOfSection(GetCurrentProcess(), ptr); in physmem_unmap()
1003 else if (physmem->VxDCall2 || physmem->w32skrnl_dpmi_lcall_ptr) in physmem_unmap()