MCPcopy Create free account
hub / github.com/BlitterStudio/amiberry / memwatch_func

Function memwatch_func

src/debug.cpp:4386–4556  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

4384}
4385
4386static int memwatch_func (uaecptr addr, int rwi, int size, uae_u32 *valp, uae_u32 accessmask, uae_u32 reg)
4387{
4388 uae_u32 val = *valp;
4389
4390 if (inside_debugger)
4391 return 1;
4392
4393 if (mungwall)
4394 mungwall_memwatch(addr, rwi, size, val);
4395
4396 if (illgdebug)
4397 illg_debug_do (addr, rwi, size, val);
4398
4399 if (heatmap)
4400 memwatch_heatmap (addr, rwi, size, accessmask);
4401
4402 addr = munge24 (addr);
4403
4404 if (smc_table && (rwi >= 2))
4405 smc_detector (addr, rwi, size, valp);
4406
4407 for (int i = mwnodes_start; i <= mwnodes_end; i++) {
4408 struct memwatch_node *m = &mwnodes[i];
4409 uaecptr addr2 = m->addr;
4410 uaecptr addr3 = addr2 + m->size;
4411 int rwi2 = m->rwi;
4412 uae_u32 oldval = 0;
4413 int isoldval = 0;
4414 int brk = 0;
4415 uae_u32 newval = 0;
4416
4417 if (m->size == 0)
4418 continue;
4419 if (!(rwi & rwi2))
4420 continue;
4421 if (!(m->access_mask & accessmask))
4422 continue;
4423
4424 if (addr >= addr2 && addr < addr3)
4425 brk = 1;
4426 if (!brk && size == 2 && (addr + 1 >= addr2 && addr + 1 < addr3))
4427 brk = 1;
4428 if (!brk && size == 4 && ((addr + 2 >= addr2 && addr + 2 < addr3) || (addr + 3 >= addr2 && addr + 3 < addr3)))
4429 brk = 1;
4430
4431 if (!brk)
4432 continue;
4433
4434 if (m->bus_error) {
4435 if (((m->bus_error & 1) && (rwi & 1)) || ((m->bus_error & 4) && (rwi & 4)) || ((m->bus_error & 2) && (rwi & 2))) {
4436 hardware_exception2(addr, val, (rwi & 2) != 0, (rwi & 4) != 0, size == 4 ? sz_long : (size == 2 ? sz_word : sz_byte));
4437 }
4438 continue;
4439 }
4440
4441 if (mem_banks[addr >> 16]->check (addr, size)) {
4442 uae_u8 *p = mem_banks[addr >> 16]->xlateaddr (addr);
4443 if (size == 1) {

Callers 15

debug_lgetFunction · 0.85
debug_wgetFunction · 0.85
debug_bgetFunction · 0.85
debug_lgetiFunction · 0.85
debug_wgetiFunction · 0.85
debug_lputFunction · 0.85
debug_wputFunction · 0.85
debug_bputFunction · 0.85
debug_getpeekdma_valueFunction · 0.85
debug_putpeekdma_chipsetFunction · 0.85
debug_putpeekdma_chipramFunction · 0.85

Calls 9

mungwall_memwatchFunction · 0.85
illg_debug_doFunction · 0.85
memwatch_heatmapFunction · 0.85
munge24Function · 0.85
smc_detectorFunction · 0.85
hardware_exception2Function · 0.85
memwatch_hit_msgFunction · 0.85
debug_cyclesFunction · 0.85
set_specialFunction · 0.85

Tested by

no test coverage detected