@@ -241,8 +241,10 @@ void mmu_t::load_slow_path(reg_t original_addr, reg_t len, uint8_t* bytes, xlate
241241
242242 reg_t len_page0 = std::min (len, PGSIZE - transformed_addr % PGSIZE);
243243 load_slow_path_intrapage (len_page0, bytes, access_info);
244- if (len_page0 != len)
245- load_slow_path_intrapage (len - len_page0, bytes + len_page0, access_info.split_misaligned_access (len_page0));
244+ if (len_page0 != len) {
245+ auto tail_access_info = generate_access_info (original_addr + len_page0, LOAD, xlate_flags);
246+ load_slow_path_intrapage (len - len_page0, bytes + len_page0, tail_access_info);
247+ }
246248 }
247249
248250 while (len > sizeof (reg_t )) {
@@ -306,8 +308,10 @@ void mmu_t::store_slow_path(reg_t original_addr, reg_t len, const uint8_t* bytes
306308
307309 reg_t len_page0 = std::min (len, PGSIZE - transformed_addr % PGSIZE);
308310 store_slow_path_intrapage (len_page0, bytes, access_info, actually_store);
309- if (len_page0 != len)
310- store_slow_path_intrapage (len - len_page0, bytes + len_page0, access_info.split_misaligned_access (len_page0), actually_store);
311+ if (len_page0 != len) {
312+ auto tail_access_info = generate_access_info (original_addr + len_page0, STORE, xlate_flags);
313+ store_slow_path_intrapage (len - len_page0, bytes + len_page0, tail_access_info, actually_store);
314+ }
311315 } else {
312316 store_slow_path_intrapage (len, bytes, access_info, actually_store);
313317 }
0 commit comments