| 3401 | #endif |
| 3402 | |
| 3403 | void debugmem_init(bool initmem) |
| 3404 | { |
| 3405 | debug_waiting = false; |
| 3406 | if (initmem) { |
| 3407 | if (!debugmem_bank.baseaddr) { |
| 3408 | int size = 0x10000000; |
| 3409 | for (uae_u32 mem = 0x70000000; mem < 0xf0000000; mem += size) { |
| 3410 | if (get_mem_bank_real(mem) == &dummy_bank && get_mem_bank_real(mem + size - 65536) == &dummy_bank) { |
| 3411 | debugmem_bank.reserved_size = size; |
| 3412 | debugmem_bank.mask = debugmem_bank.reserved_size - 1; |
| 3413 | debugmem_bank.start = mem; |
| 3414 | if (!mapped_malloc(&debugmem_bank)) { |
| 3415 | console_out_f(_T("Failed to automatically allocate debugmem (mapped_malloc)!\n")); |
| 3416 | return; |
| 3417 | } |
| 3418 | map_banks(&debugmem_bank, debugmem_bank.start >> 16, debugmem_bank.allocated_size >> 16, 0); |
| 3419 | console_out_f(_T("Automatically allocated debugmem location: %08x - %08x %08x\n"), |
| 3420 | debugmem_bank.start, debugmem_bank.start + debugmem_bank.allocated_size - 1, debugmem_bank.allocated_size); |
| 3421 | break; |
| 3422 | } |
| 3423 | } |
| 3424 | if (!debugmem_bank.baseaddr) { |
| 3425 | console_out_f(_T("Failed to automatically allocate debugmem (no space)!\n")); |
| 3426 | return; |
| 3427 | } |
| 3428 | } |
| 3429 | memset(debugmem_bank.baseaddr, 0xa5, debugmem_bank.allocated_size); |
| 3430 | if (!debugmem_func_lgeti) { |
| 3431 | |
| 3432 | debugmem_func_lgeti = debugmem_bank.lgeti; |
| 3433 | debugmem_func_wgeti = debugmem_bank.wgeti; |
| 3434 | debugmem_func_lget = debugmem_bank.lget; |
| 3435 | debugmem_func_wget = debugmem_bank.wget; |
| 3436 | debugmem_func_bget = debugmem_bank.bget; |
| 3437 | debugmem_func_lput = debugmem_bank.lput; |
| 3438 | debugmem_func_wput = debugmem_bank.wput; |
| 3439 | debugmem_func_bput = debugmem_bank.bput; |
| 3440 | debugmem_func_xlate = debugmem_bank.xlateaddr; |
| 3441 | |
| 3442 | debugmem_bank.lgeti = debugmem_lgeti; |
| 3443 | debugmem_bank.wgeti = debugmem_wgeti; |
| 3444 | debugmem_bank.lget = debugmem_lget; |
| 3445 | debugmem_bank.wget = debugmem_wget; |
| 3446 | debugmem_bank.bget = debugmem_bget; |
| 3447 | debugmem_bank.lput = debugmem_lput; |
| 3448 | debugmem_bank.wput = debugmem_wput; |
| 3449 | debugmem_bank.bput = debugmem_bput; |
| 3450 | debugmem_bank.xlateaddr = debugmem_xlate; |
| 3451 | } |
| 3452 | } |
| 3453 | alloccnt = 0; |
| 3454 | if (!allocs) { |
| 3455 | allocs = xcalloc(struct debugmemallocs*, MAX_DEBUGMEMALLOCS); |
| 3456 | struct debugmemallocs *a = xcalloc(struct debugmemallocs, MAX_DEBUGMEMALLOCS); |
| 3457 | for (int i = 0; i < MAX_DEBUGMEMALLOCS; i++) { |
| 3458 | allocs[i] = a + i; |
| 3459 | } |
| 3460 | } |
no test coverage detected