emit_arm64: Passthrough pagetable information

This commit is contained in:
merry 2022-12-06 14:53:14 +00:00
parent f69ae1c672
commit f8d8618af1
3 changed files with 25 additions and 0 deletions

View file

@ -276,6 +276,14 @@ EmitConfig A32AddressSpace::GetEmitConfig() {
.tpidrro_el0{}, .tpidrro_el0{},
.tpidr_el0{}, .tpidr_el0{},
.page_table_pointer = mcl::bit_cast<u64>(conf.page_table),
.page_table_address_space_bits = 32,
.page_table_pointer_mask_bits = conf.page_table_pointer_mask_bits,
.silently_mirror_page_table = true,
.absolute_offset_page_table = conf.absolute_offset_page_table,
.detect_misaligned_access_via_page_table = conf.detect_misaligned_access_via_page_table,
.only_detect_misalignment_via_page_table_on_page_boundary = conf.only_detect_misalignment_via_page_table_on_page_boundary,
.wall_clock_cntpct = conf.wall_clock_cntpct, .wall_clock_cntpct = conf.wall_clock_cntpct,
.enable_cycle_counting = conf.enable_cycle_counting, .enable_cycle_counting = conf.enable_cycle_counting,

View file

@ -396,6 +396,14 @@ EmitConfig A64AddressSpace::GetEmitConfig() {
.tpidrro_el0 = conf.tpidrro_el0, .tpidrro_el0 = conf.tpidrro_el0,
.tpidr_el0 = conf.tpidr_el0, .tpidr_el0 = conf.tpidr_el0,
.page_table_pointer = mcl::bit_cast<u64>(conf.page_table),
.page_table_address_space_bits = conf.page_table_address_space_bits,
.page_table_pointer_mask_bits = conf.page_table_pointer_mask_bits,
.silently_mirror_page_table = conf.silently_mirror_page_table,
.absolute_offset_page_table = conf.absolute_offset_page_table,
.detect_misaligned_access_via_page_table = conf.detect_misaligned_access_via_page_table,
.only_detect_misalignment_via_page_table_on_page_boundary = conf.only_detect_misalignment_via_page_table_on_page_boundary,
.wall_clock_cntpct = conf.wall_clock_cntpct, .wall_clock_cntpct = conf.wall_clock_cntpct,
.enable_cycle_counting = conf.enable_cycle_counting, .enable_cycle_counting = conf.enable_cycle_counting,

View file

@ -104,6 +104,15 @@ struct EmitConfig {
const u64* tpidrro_el0; const u64* tpidrro_el0;
u64* tpidr_el0; u64* tpidr_el0;
// Page table
u64 page_table_pointer;
size_t page_table_address_space_bits;
int page_table_pointer_mask_bits;
bool silently_mirror_page_table;
bool absolute_offset_page_table;
u8 detect_misaligned_access_via_page_table;
bool only_detect_misalignment_via_page_table_on_page_boundary;
// Timing // Timing
bool wall_clock_cntpct; bool wall_clock_cntpct;
bool enable_cycle_counting; bool enable_cycle_counting;