Lines Matching +full:address +full:- +full:data
1 # SPDX-License-Identifier: GPL-2.0-only
40 def is_bit_defined_tupled(data, offset): argument
41 return offset, bool(data >> offset & 1)
43 def content_tupled(data, bit_start, bit_end): argument
44 return (bit_start, bit_end), data >> bit_start & ((1 << (1 + bit_end - bit_start)) - 1)
80 {'cr3 binary data': <30} {hex(self.cr3)}
81 {'next entry physical address': <30} {hex(self.next_entry_physical_address)}
82 ---
89 def __init__(self, address, level): argument
90 data = int.from_bytes(
91 memoryview(gdb.selected_inferior().read_memory(address, 8)),
96 self.entry_present = is_bit_defined_tupled(data, 0)
97 self.read_write = is_bit_defined_tupled(data, 1)
98 self.user_access_allowed = is_bit_defined_tupled(data, 2)
99 self.page_level_write_through = is_bit_defined_tupled(data, 3)
100 self.page_level_cache_disabled = is_bit_defined_tupled(data, 4)
101 self.entry_was_accessed = is_bit_defined_tupled(data, 5)
102 self.dirty = is_bit_defined_tupled(data, 6)
103 self.pat = is_bit_defined_tupled(data, 7)
104 self.global_translation = is_bit_defined_tupled(data, 8)
105 self.page_physical_address = data & PHYSICAL_ADDRESS_MASK & page_mask(level)
107 self.hlat_restart_with_ordinary = is_bit_defined_tupled(data, 11)
108 self.protection_key = content_tupled(data, 59, 62)
109 self.executed_disable = is_bit_defined_tupled(data, 63)
111 page_size = is_bit_defined_tupled(data, 7)
114 self.entry_present = is_bit_defined_tupled(data, 0)
115 self.read_write = is_bit_defined_tupled(data, 1)
116 self.user_access_allowed = is_bit_defined_tupled(data, 2)
117 self.page_level_write_through = is_bit_defined_tupled(data, 3)
118 self.page_level_cache_disabled = is_bit_defined_tupled(data, 4)
119 self.entry_was_accessed = is_bit_defined_tupled(data, 5)
122 data, 6) if page_size_bit else None
124 data, 8) if page_size_bit else None
126 data, 12) if page_size_bit else None
127 …self.page_physical_address = data & PHYSICAL_ADDRESS_MASK & page_mask(level) if page_size_bit else…
128 …self.next_entry_physical_address = None if page_size_bit else data & PHYSICAL_ADDRESS_MASK & page_…
129 self.hlat_restart_with_ordinary = is_bit_defined_tupled(data, 11)
130 self.protection_key = content_tupled(data, 59, 62) if page_size_bit else None
131 self.executed_disable = is_bit_defined_tupled(data, 63)
132 self.address = address
133 self.page_entry_binary_data = data
140 next_level = self.page_hierarchy_level - 1
148 {'entry address': <30} {hex(self.address)}
149 {'page entry binary data': <30} {hex(self.page_entry_binary_data)}
150 ---
159 {'entry address': <30} {hex(self.address)}
160 {'page entry binary data': <30} {hex(self.page_entry_binary_data)}
162 {'page physical address': <30} {hex(self.page_physical_address)}
163 ---
181 {'entry address': <30} {hex(self.address)}
182 {'page entry binary data': <30} {hex(self.page_entry_binary_data)}
183 {'next entry physical address': <30} {hex(self.next_entry_physical_address)}
184 ---
198 """Prints the entire paging structure used to translate a given virtual address.
200 Having an address space of the currently executed process translates the virtual address
205 super(TranslateVM, self).__init__('translate-vm', gdb.COMMAND_USER)
218 gdb.GdbError("Virtual address translation is not"