trunk/src/emu/cpu/mips/mips3.c
| r18763 | r18764 | |
| 337 | 337 | UINT32 tlbval = mips3.tlb_table[address >> 12]; |
| 338 | 338 | if (tlbval & VTLB_READ_ALLOWED) |
| 339 | 339 | { |
| 340 | | *result = (*mips3.core.memory.read_byte)(mips3.core.program, (tlbval & ~0xfff) | (address & 0xfff)); |
| 340 | *result = (*mips3.core.memory.read_byte)(*mips3.core.program, (tlbval & ~0xfff) | (address & 0xfff)); |
| 341 | 341 | } |
| 342 | 342 | else |
| 343 | 343 | { |
| r18763 | r18764 | |
| 361 | 361 | UINT32 tlbval = mips3.tlb_table[address >> 12]; |
| 362 | 362 | if (tlbval & VTLB_READ_ALLOWED) |
| 363 | 363 | { |
| 364 | | *result = (*mips3.core.memory.read_word)(mips3.core.program, (tlbval & ~0xfff) | (address & 0xfff)); |
| 364 | *result = (*mips3.core.memory.read_word)(*mips3.core.program, (tlbval & ~0xfff) | (address & 0xfff)); |
| 365 | 365 | } |
| 366 | 366 | else |
| 367 | 367 | { |
| r18763 | r18764 | |
| 385 | 385 | UINT32 tlbval = mips3.tlb_table[address >> 12]; |
| 386 | 386 | if (tlbval & VTLB_READ_ALLOWED) |
| 387 | 387 | { |
| 388 | | *result = (*mips3.core.memory.read_dword)(mips3.core.program, (tlbval & ~0xfff) | (address & 0xfff)); |
| 388 | *result = (*mips3.core.memory.read_dword)(*mips3.core.program, (tlbval & ~0xfff) | (address & 0xfff)); |
| 389 | 389 | } |
| 390 | 390 | else |
| 391 | 391 | { |
| r18763 | r18764 | |
| 409 | 409 | UINT32 tlbval = mips3.tlb_table[address >> 12]; |
| 410 | 410 | if (tlbval & VTLB_READ_ALLOWED) |
| 411 | 411 | { |
| 412 | | *result = (*mips3.core.memory.read_dword_masked)(mips3.core.program, (tlbval & ~0xfff) | (address & 0xfff), mem_mask); |
| 412 | *result = (*mips3.core.memory.read_dword_masked)(*mips3.core.program, (tlbval & ~0xfff) | (address & 0xfff), mem_mask); |
| 413 | 413 | } |
| 414 | 414 | else |
| 415 | 415 | { |
| r18763 | r18764 | |
| 433 | 433 | UINT32 tlbval = mips3.tlb_table[address >> 12]; |
| 434 | 434 | if (tlbval & VTLB_READ_ALLOWED) |
| 435 | 435 | { |
| 436 | | *result = (*mips3.core.memory.read_qword)(mips3.core.program, (tlbval & ~0xfff) | (address & 0xfff)); |
| 436 | *result = (*mips3.core.memory.read_qword)(*mips3.core.program, (tlbval & ~0xfff) | (address & 0xfff)); |
| 437 | 437 | } |
| 438 | 438 | else |
| 439 | 439 | { |
| r18763 | r18764 | |
| 457 | 457 | UINT32 tlbval = mips3.tlb_table[address >> 12]; |
| 458 | 458 | if (tlbval & VTLB_READ_ALLOWED) |
| 459 | 459 | { |
| 460 | | *result = (*mips3.core.memory.read_qword_masked)(mips3.core.program, (tlbval & ~0xfff) | (address & 0xfff), mem_mask); |
| 460 | *result = (*mips3.core.memory.read_qword_masked)(*mips3.core.program, (tlbval & ~0xfff) | (address & 0xfff), mem_mask); |
| 461 | 461 | } |
| 462 | 462 | else |
| 463 | 463 | { |
| r18763 | r18764 | |
| 481 | 481 | UINT32 tlbval = mips3.tlb_table[address >> 12]; |
| 482 | 482 | if (tlbval & VTLB_WRITE_ALLOWED) |
| 483 | 483 | { |
| 484 | | (*mips3.core.memory.write_byte)(mips3.core.program, (tlbval & ~0xfff) | (address & 0xfff), data); |
| 484 | (*mips3.core.memory.write_byte)(*mips3.core.program, (tlbval & ~0xfff) | (address & 0xfff), data); |
| 485 | 485 | } |
| 486 | 486 | else |
| 487 | 487 | { |
| r18763 | r18764 | |
| 506 | 506 | UINT32 tlbval = mips3.tlb_table[address >> 12]; |
| 507 | 507 | if (tlbval & VTLB_WRITE_ALLOWED) |
| 508 | 508 | { |
| 509 | | (*mips3.core.memory.write_word)(mips3.core.program, (tlbval & ~0xfff) | (address & 0xfff), data); |
| 509 | (*mips3.core.memory.write_word)(*mips3.core.program, (tlbval & ~0xfff) | (address & 0xfff), data); |
| 510 | 510 | } |
| 511 | 511 | else |
| 512 | 512 | { |
| r18763 | r18764 | |
| 531 | 531 | UINT32 tlbval = mips3.tlb_table[address >> 12]; |
| 532 | 532 | if (tlbval & VTLB_WRITE_ALLOWED) |
| 533 | 533 | { |
| 534 | | (*mips3.core.memory.write_dword)(mips3.core.program, (tlbval & ~0xfff) | (address & 0xfff), data); |
| 534 | (*mips3.core.memory.write_dword)(*mips3.core.program, (tlbval & ~0xfff) | (address & 0xfff), data); |
| 535 | 535 | } |
| 536 | 536 | else |
| 537 | 537 | { |
| r18763 | r18764 | |
| 556 | 556 | UINT32 tlbval = mips3.tlb_table[address >> 12]; |
| 557 | 557 | if (tlbval & VTLB_WRITE_ALLOWED) |
| 558 | 558 | { |
| 559 | | (*mips3.core.memory.write_dword_masked)(mips3.core.program, (tlbval & ~0xfff) | (address & 0xfff), data, mem_mask); |
| 559 | (*mips3.core.memory.write_dword_masked)(*mips3.core.program, (tlbval & ~0xfff) | (address & 0xfff), data, mem_mask); |
| 560 | 560 | } |
| 561 | 561 | else |
| 562 | 562 | { |
| r18763 | r18764 | |
| 582 | 582 | //printf("%08x: %08x\n", (UINT32)address, (UINT32)tlbval); |
| 583 | 583 | if (tlbval & VTLB_WRITE_ALLOWED) |
| 584 | 584 | { |
| 585 | | (*mips3.core.memory.write_qword)(mips3.core.program, (tlbval & ~0xfff) | (address & 0xfff), data); |
| 585 | (*mips3.core.memory.write_qword)(*mips3.core.program, (tlbval & ~0xfff) | (address & 0xfff), data); |
| 586 | 586 | } |
| 587 | 587 | else |
| 588 | 588 | { |
| r18763 | r18764 | |
| 607 | 607 | UINT32 tlbval = mips3.tlb_table[address >> 12]; |
| 608 | 608 | if (tlbval & VTLB_WRITE_ALLOWED) |
| 609 | 609 | { |
| 610 | | (*mips3.core.memory.write_qword_masked)(mips3.core.program, (tlbval & ~0xfff) | (address & 0xfff), data, mem_mask); |
| 610 | (*mips3.core.memory.write_qword_masked)(*mips3.core.program, (tlbval & ~0xfff) | (address & 0xfff), data, mem_mask); |
| 611 | 611 | } |
| 612 | 612 | else |
| 613 | 613 | { |