view: take into account the pre-offsetting when expanding handlers

This commit is contained in:
Olivier Galibert 2021-09-22 07:49:59 +02:00
parent c83fb1b2fa
commit cc66d8797b
2 changed files with 6 additions and 4 deletions

View File

@ -593,10 +593,11 @@ template<int HighBits, int Width, int AddrShift> void handler_entry_read_dispatc
} else if(lowbits != LowBits) {
u32 dt = lowbits - LowBits;
u32 ne = 1 << dt;
u32 ee = end_entry - start_entry;
if(m_view) {
auto filter = [s = m_view->m_addrstart, e = m_view->m_addrend] (handler_entry::range r) { r.intersect(s, e); return r; };
for(offs_t entry = start_entry; entry <= end_entry; entry++) {
for(offs_t entry = 0; entry <= ee; entry++) {
dispatch[entry]->ref(ne);
u32 e0 = (entry << dt) & BITMASK;
for(offs_t e = 0; e != ne; e++) {
@ -609,7 +610,7 @@ template<int HighBits, int Width, int AddrShift> void handler_entry_read_dispatc
}
}
} else {
for(offs_t entry = start_entry; entry <= end_entry; entry++) {
for(offs_t entry = 0; entry <= ee; entry++) {
dispatch[entry]->ref(ne);
u32 e0 = (entry << dt) & BITMASK;
for(offs_t e = 0; e != ne; e++) {

View File

@ -592,10 +592,11 @@ template<int HighBits, int Width, int AddrShift> void handler_entry_write_dispat
} else if(lowbits != LowBits) {
u32 dt = lowbits - LowBits;
u32 ne = 1 << dt;
u32 ee = end_entry - start_entry;
if(m_view) {
auto filter = [s = m_view->m_addrstart, e = m_view->m_addrend] (handler_entry::range r) { r.intersect(s, e); return r; };
for(offs_t entry = start_entry; entry <= end_entry; entry++) {
for(offs_t entry = 0; entry <= ee; entry++) {
dispatch[entry]->ref(ne);
u32 e0 = (entry << dt) & BITMASK;
for(offs_t e = 0; e != ne; e++) {
@ -608,7 +609,7 @@ template<int HighBits, int Width, int AddrShift> void handler_entry_write_dispat
}
}
} else {
for(offs_t entry = start_entry; entry <= end_entry; entry++) {
for(offs_t entry = 0; entry <= ee; entry++) {
dispatch[entry]->ref(ne);
u32 e0 = (entry << dt) & BITMASK;
for(offs_t e = 0; e != ne; e++) {