| 379 | |
| 380 | |
| 381 | void memMapVUmicro() |
| 382 | { |
| 383 | // VU0/VU1 micro mem (instructions) |
| 384 | // (Like IOP memory, these are generally only used by the EE Bios kernel during |
| 385 | // boot-up. Applications/games are "supposed" to use the thread-safe VIF instead; |
| 386 | // or must ensure all VIF/GIF transfers are finished and all VUmicro execution stopped |
| 387 | // prior to accessing VU memory directly). |
| 388 | |
| 389 | // The VU0 mapping actually repeats 4 times across the mapped range, but we don't bother |
| 390 | // to manually mirror it here because the indirect memory handler for it (see vuMicroRead* |
| 391 | // functions below) automatically mask and wrap the address for us. |
| 392 | |
| 393 | vtlb_MapHandler(vu0_micro_mem,0x11000000,0x00004000); |
| 394 | vtlb_MapHandler(vu1_micro_mem,0x11008000,0x00004000); |
| 395 | |
| 396 | // VU0/VU1 memory (data) |
| 397 | // VU0 is 4k, mirrored 4 times across a 16k area. |
| 398 | vtlb_MapBlock(VU0.Mem,0x11004000,0x00004000,0x1000); |
| 399 | // Note: In order for the below conditional to work correctly |
| 400 | // support needs to be coded to reset the memMappings when MTVU is |
| 401 | // turned off/on. For now we just always use the vu data handlers... |
| 402 | if (1||THREAD_VU1) vtlb_MapHandler(vu1_data_mem,0x1100c000,0x00004000); |
| 403 | else vtlb_MapBlock (VU1.Mem, 0x1100c000,0x00004000); |
| 404 | } |
| 405 | |
| 406 | void memMapPhy() |
| 407 | { |
no test coverage detected