Maxim Poliakovski
aa17bf06de
ppcmmu: implement mem_write_dbg method.
2024-11-30 11:55:16 +01:00
Mihai Parparita
bf92b04d6c
debugger: Use a named constant when we don't have a current instruction
2024-11-29 18:33:22 +01:00
Mihai Parparita
564c43c907
Remove ppc_cur_instruction global variable
...
Replace it wth an explicit opcode parameter that is passed around. That
is both slightly easier to reason about (to trace where it comes from)
and slightly faster, since it can be read from a register.
On my machine takes booting to "Welcome to Macintosh" being output in
a verbose boot of Mac OS X 10.2.8 from 31.8s to 30.6s (average of 5
runs, measured using deterministic mode and looking at when execution
reaches PC 0x90004a88).
2024-11-28 23:41:38 +01:00
dingusdev
9d9e826bb3
More code clean-up
2024-09-08 13:19:07 -07:00
joevt
3c16870f86
ppcmmu: Replace defines.
...
They may interfere with system headers.
2024-04-09 07:57:48 -07:00
joevt
6738d7472e
ppcmmu: Add a function to get phys address.
...
Since the function is for the debugger during stepping or disassembly, don't do extra logging.
2024-03-01 19:48:52 -07:00
joevt
500f38a496
ppcmmu: Add phys address to mmu_translate_imem.
...
For debugging.
2024-03-01 19:45:09 -07:00
joevt
3a5a70b56d
ppcmmu: Allow convert virtual to physical address.
...
The TLBEntries allow converting virtual guest address to virtual host address but there's no easy way to get a guest physical address for debugging purposes.
Add a phys_tag field to fix that.
2024-03-01 19:42:25 -07:00
Mihai Parparita
6582536591
Inline ppc_set_cur_instruction
...
It's used in the main emulator loop (ppc_exec_inner), and the function
call overhead adds up.
By inlining it, time to boot to the Finder using a 7.1.2 install CD
and a 6100 ROM goes from ~6700ms to ~6400ms (with clang 14 on a
M2 Max)
2023-12-02 15:12:02 -08:00
Mihai Parparita
35c86ad6bf
Clean up #includes
...
Result of running IWYU (https://include-what-you-use.org/ ) and
applying most of the suggestions about unncessary includes and
forward declarations.
Was motivated by observing that <thread> was being included in
ppcopcodes.cpp even though it was unused (found while researching
the use of threads), but seems generally good to help with build
times and correctness.
2023-11-03 00:33:47 -07:00
Maxim Poliakovski
a5fb124e69
pdmonboard: switch to mmu_map_dma_mem.
2023-10-02 15:00:12 +02:00
Maxim Poliakovski
8cf290c034
ppcmmu: add mmu_map_dma_mem method.
2023-10-02 02:20:42 +02:00
Maxim Poliakovski
a69763c6de
dbdma: noop incomplete LOAD_QUAD & STORE_QUAD.
2023-09-18 20:20:25 +02:00
dingusdev
a7ef177164
Preliminary DBDMA expansion
2023-08-13 16:38:15 -07:00
Maxim Poliakovski
de1f0c8a9b
ppc_mmu: rename reg_desc to rgn_desc to improve readability.
2023-08-07 13:56:49 +02:00
Maxim Poliakovski
52a64168d7
Clean up previous merge.
2023-08-07 13:45:26 +02:00
joevt
ac64f9e30d
ppcmmu: Fix mmio read/write offset calculation.
...
For TLBs referencing an mmio region, calculate an offset that will translate a guest virtual address to an offset in the mmio region.
2023-08-04 20:16:13 -07:00
Maxim Poliakovski
9f4c248e4c
Rework DBDMA logic for bidirectional channels.
2022-11-17 18:03:18 +01:00
Maxim Poliakovski
087402290d
Implement virtual time based on instruction counting.
2021-12-20 00:10:02 +01:00
Maxim Poliakovski
9329d56d83
Move devices into dedicated subdirectories.
2021-10-23 20:17:47 +02:00
Maxim Poliakovski
2a9d364b1b
ppcmmu: implement separate TLB pointers for read/write.
2021-10-10 22:01:02 +02:00
Maxim Poliakovski
22827642e4
ppcmmu: implement 601-style BAT.
2021-09-27 12:37:35 +02:00
Maxim Poliakovski
212cd58f40
ppcmmu: refactor and clean up.
2021-09-25 19:13:40 +02:00
Maxim Poliakovski
501f24f0d3
ppcmmu: implement SoftTLB for instructions.
2021-09-25 19:13:40 +02:00
Maxim Poliakovski
2a79c9a63c
ppcmmu.c: restructure and clean up.
2021-09-25 19:13:40 +02:00
Maxim Poliakovski
089645e830
Implement SoftTLB for writes.
2021-08-22 17:34:23 +02:00
Maxim Poliakovski
094d9a9c2f
Remove inline to fix compiler warnings.
2021-06-21 00:11:14 +02:00
Maxim Poliakovski
4da95a66d7
Make emulated memory loads to use SoftTLB.
2021-06-20 22:33:10 +02:00
Maxim Poliakovski
7d8f4d4e61
Finalize SoftTLB for reads.
2021-05-16 22:00:00 +02:00
Maxim Poliakovski
a5ddb51a3b
ppcmmu: initial TLB implementation for reads.
2021-05-16 00:53:15 +02:00
Maxim Poliakovski
0375b6a687
ppcmmu: invert BAT mask to speed up match.
2021-04-11 02:03:20 +02:00
Waqar Ahmed
0ab9380be3
clang-format everything
2020-05-12 23:55:45 +05:00
Maxim Poliakovski
8e34c1657c
Mock up DBDMA channel execution for sound.
2020-03-19 02:00:18 +01:00
dingusdev
354409812e
Updating files with proper licensing header
2020-02-28 09:04:28 -07:00
Maxim Poliakovski
461d859e73
ppcmmu: add debug memory reading function.
...
This function saves and restores the MMU state
so no invalid user input can break CPU execution.
2020-02-23 16:41:58 +01:00
Maxim Poliakovski
fe57beb983
Revert "Disassembler added"
...
This reverts commit 37078ddfe1
.
2020-02-04 14:20:10 +01:00
dingusdev
37078ddfe1
Disassembler added
...
Created by maximumspatium, with some additions by me.
2020-02-03 08:03:24 -07:00
Maxim Poliakovski
7ae87e39c1
Refactor usage of the memory access functions.
...
Memory access function have better names now.
Global variable return_value has been removed.
lhbrx emulation has been fixed.
2020-01-27 01:36:52 +01:00
dingusdev
7c6d875ec8
Refactored floating point emulation
...
Refactored for better 64-bit value loading and storing. I also added missing opcodes.
2020-01-25 19:30:55 -07:00
dingusdev
b92fe60fad
Header updates + NVRAM Fix
2020-01-05 10:38:32 -07:00
Maxim Poliakovski
e76ef61f53
ppcexec: pagewise MMU translation for code.
2020-01-04 02:07:36 +01:00
Maxim Poliakovski
7bae155fc3
ppcemu: add PTEG integrity check.
2020-01-03 21:18:07 +01:00
Maxim Poliakovski
74882c8082
ppcemu: remove unused global variables.
2020-01-03 21:18:07 +01:00
Maxim Poliakovski
4b843157d9
ppcemu: refactor page address translation.
...
The refactored code is UNTESTED. Moreover,
no TLB is currently implemeneted.
2020-01-03 16:22:38 +01:00
Maxim Poliakovski
87ca977ae7
Rename ppcmemory to ppcmmu.
2019-12-27 20:00:53 +01:00