Maxim Poliakovski
3d13bc1ca6
ppcopcodes: fix TWI emulation.
2020-04-21 04:58:21 +02:00
Maxim Poliakovski
695044cf0e
Support more than one I/O region per device.
2020-03-31 18:48:04 +02:00
dingusdev
60ffa5bfac
Initial attempt at fixing SDL2 building for Windows
2020-03-22 20:15:12 -07:00
Maxim Poliakovski
8e34c1657c
Mock up DBDMA channel execution for sound.
2020-03-19 02:00:18 +01:00
Maxim Poliakovski
9be3250142
Fix MMU region bounds check.
2020-03-15 20:08:53 +01:00
Maxim Poliakovski
822f6cafd2
Create machine factory.
...
It manages various hardware configurations referred to as machines.
2020-03-13 23:09:36 +01:00
dingusdev
4ceed27ccf
Simplified prog_counter back to pc
2020-03-05 07:48:10 -07:00
dingusdev
e31f7873f5
Fixed redunant variable names for PPC emulation.
2020-03-04 21:29:04 -07:00
Maxim Poliakovski
0eb557751b
ppcopcodes: fix timebase read & write.
2020-03-02 00:01:18 +01:00
dingusdev
f5e8c9cbb8
Three tiny typos fixed
...
All related to 4*cr1+lt
2020-03-01 14:11:26 -07:00
dingusdev
31147aada3
Fixed most condition register issues with disassembler
2020-03-01 14:09:08 -07:00
dingusdev
81cabc5730
Fixed various bugs in the disassembler
2020-03-01 11:18:29 -07:00
Maxim Poliakovski
cbb46e8f30
More tests to reaveal wrong disassembly.
2020-03-01 18:21:57 +01:00
Maxim Poliakovski
7978d9d59f
Fix SRR0 setting in exception handler.
2020-03-01 17:24:50 +01:00
dingusdev
055445e04a
Merge branch 'master' of https://github.com/dingusdev/dingusppc
2020-02-28 09:04:30 -07:00
dingusdev
354409812e
Updating files with proper licensing header
2020-02-28 09:04:28 -07:00
Maxim Poliakovski
e08bf39af3
debugger: more checks for user input.
2020-02-28 08:58:14 +01:00
dingusdev
5991ef1dca
Merge branch 'ppc-fixes'
2020-02-27 21:03:40 -07:00
dingusdev
c8611dc293
Code cleanup + procedures for cleanup
2020-02-27 21:03:01 -07:00
Maxim Poliakovski
90779bd9c6
Remove log messages from cache/TLB instructions.
2020-02-27 16:31:22 +01:00
dingusdev
a3f55d35b4
Fixed most compiler warnings
2020-02-25 07:15:42 -07:00
dingusdev
6c1dc8aaf0
Further logging work
2020-02-24 19:50:52 -07:00
dingusdev
baef838f7c
Further integration with loguru
2020-02-24 07:54:29 -07:00
dingusdev
d91950e582
Further logging code.
2020-02-23 22:36:31 -07:00
dingusdev
e9a616ffeb
Started working on incorporating loguru
2020-02-23 20:59:10 -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
403c19ca39
Improve the command line debugger.
...
Add next command. Make the debugger somewhat foolproof.
2020-02-23 15:24:55 +01:00
dingusdev
02a75f78da
regsfpsab fixed
2020-02-20 22:21:58 -07:00
dingusdev
d20122b3a9
Proper flag updates for fm arithmetic operations
2020-02-20 20:00:20 -07:00
dingusdev
6428f324f6
icbi fixed
2020-02-19 19:37:51 -07:00
dingusdev
d8f4a0c910
icbi fixed
2020-02-19 19:20:01 -07:00
dingusdev
9138b9bafc
Quick fix for cmp
2020-02-19 19:12:23 -07:00
dingusdev
c71be1bc37
Fixed compare instructions
2020-02-19 19:03:39 -07:00
Maxim Poliakovski
5b2369458e
ppcdisasm: remove unused function.
2020-02-20 02:35:38 +01:00
Maxim Poliakovski
8671517a08
ppcdisasm: new tests and fixes for rlwinm/rlwimi.
2020-02-20 02:27:48 +01:00
dingusdev
8babfa9987
Fixed some convoluted code for rlwinm
2020-02-17 20:17:56 -07:00
dingusdev
7a654fa576
Fixed rlwinm, rlwimi, and rlwnm mnemonics
2020-02-16 22:19:28 -07:00
dingusdev
3c06e8b30a
Implemented fctiw(z)(.)
2020-02-16 13:40:55 -07:00
dingusdev
839c97b665
Small fix to the execution table
2020-02-16 08:57:23 -07:00
dingusdev
1f43b69878
Implemented the remaining recognized SPRs
2020-02-15 21:37:36 -07:00
dingusdev
87a4ff1b73
CMPW mnemonics added
2020-02-15 20:59:09 -07:00
dingusdev
d7e4f3a6a8
Small fixes to M(F/T)SPR and rotate instructions
2020-02-15 16:15:08 -07:00
dingusdev
bedbd54f5b
Almost all major rotate op mnemonics added
2020-02-15 14:48:21 -07:00
dingusdev
158b0d2b50
Added major MTSPR/MFSPR mnemonics and MFTB mnemonics
2020-02-15 13:10:01 -07:00
dingusdev
6f6e5671d4
Fixed test cases for stfd(u) and sllq(.)
2020-02-15 12:09:27 -07:00
dingusdev
ef27fcec69
More tests, more fixes
...
Only significant bugs left are with stfd(u) and sllq(.)
2020-02-15 11:29:03 -07:00
dingusdev
4f02a98c2b
More tests +fix for fsel
2020-02-14 07:58:30 -07:00
dingusdev
17e69677e8
One more fix for the segment reg instructions
2020-02-13 21:46:12 -07:00
dingusdev
07844c7388
One tiny fix to tlbie
2020-02-13 21:40:36 -07:00
dingusdev
73dfec443a
Fixed cntlzw, mtsr(in), tlbie
2020-02-13 21:37:33 -07:00
dingusdev
3d89b0438a
Many new test cases, many fixes
2020-02-13 21:04:14 -07:00
dingusdev
d4239c5aa1
Fixed comparison instructions, 603 instructions, mnemonics
2020-02-13 08:00:36 -07:00
dingusdev
eda9454f66
Fixed twi and tw; added more tests
2020-02-12 22:21:16 -07:00
dingusdev
40f399e0c4
Inserting missing instructions and fixing several opcodes
2020-02-12 22:08:40 -07:00
dingusdev
3d492b7f72
stwcx., slwi, and tw fixed
2020-02-12 20:58:51 -07:00
dingusdev
c8e03286e7
Condensed trap operations + added mnemonics for tw
2020-02-12 20:41:23 -07:00
dingusdev
c2eafcc45d
Fixed shifting ops and eieio
2020-02-12 20:26:12 -07:00
Maxim Poliakovski
e4ee252b6c
ppcdisasm: fix several instructions.
2020-02-13 04:13:26 +01:00
dingusdev
11b1623a69
All remaining 601 opcodes implemented
...
Plus adjustments to twi, bclr, and bcctr.
2020-02-12 19:31:54 -07:00
Maxim Poliakovski
1543acc696
ppcdisasm: fix bcctr and bclr instructions.
2020-02-13 03:16:47 +01:00
Maxim Poliakovski
4ecc48a6cc
ppcdisasm: fix string buffer overflow in VS19.
2020-02-13 00:05:10 +01:00
Maxim Poliakovski
24652de392
Integrate disassembler tests.
2020-02-12 22:58:24 +01:00
dingusdev
513658b45f
Quick fix to ori
2020-02-10 20:03:14 -07:00
dingusdev
30b1116393
Implemeted limited simplified mnemonics for rlwinm
2020-02-10 20:02:41 -07:00
Maxim Poliakovski
a934ed5bde
ppcdisasm: fix Clang errors and warnings.
2020-02-10 20:01:02 -07:00
dingusdev
ad0659a702
Started bugfixing and refactoring
2020-02-10 20:00:49 -07:00
dingusdev
6473ea1a26
Added the last few opcodes
2020-02-10 20:00:28 -07:00
dingusdev
d277ab693e
Implemented most remaining opcodes
2020-02-10 20:00:12 -07:00
dingusdev
cee51b643e
Merging in
2020-02-10 19:59:02 -07:00
Maxim Poliakovski
c25aedac4b
Fix some MSVC errors and warnings.
...
"This commit fixes as much as required to compile the project
in a cross-platform fashion. Some MSV-specific warnings are
simply ignored for now." -max
2020-02-10 19:58:41 -07:00
Maxim Poliakovski
4b0c607ea3
Bring back strcpy/strcat
2020-02-10 19:55:23 -07:00
dingusdev
1e93414f11
Further bugfixes
2020-02-10 19:52:09 -07:00
dingusdev
f3befe9c16
Support for floating-point loads and stores
2020-02-10 19:50:38 -07:00
dingusdev
96e9351190
Support for floating-point loads and stores
2020-02-10 19:47:51 -07:00
dingusdev
254b9d3b55
Update ppcdisasm.cpp
2020-02-10 19:44:54 -07:00
dingusdev
82b4f5717e
Update ppcdisasm.cpp
2020-02-10 19:40:45 -07:00
Maxim Poliakovski
99559c1e0c
Merging in odd commits
2020-02-10 19:37:50 -07:00
dingusdev
b16427e810
Further disassembler work
2020-02-10 19:33:14 -07:00
Maxim Poliakovski
825da69a10
debugger: disassembler integration.
2020-02-10 19:31:57 -07:00
Maxim Poliakovski
26bd402f44
ppcopcodes: optimize ppc_changecrf0() a bit.
2020-02-10 23:07:39 +01:00
Maxim Poliakovski
36fc7a9aaa
Add XER[OV] clear tests.
2020-02-10 19:34:03 +01:00
Maxim Poliakovski
d0f1a34c02
Fix integer multiplications.
...
Add a couple of tests for verifying XER[OV] updating code
for mullwo[.].
2020-02-10 18:36:28 +01:00
Maxim Poliakovski
a72e2fd67d
Simplify unsigned integer divisions.
2020-02-10 17:16:18 +01:00
Maxim Poliakovski
d4a2f400b5
Fix divw[.] and divwo[.] emulation.
...
Also adds a couple of tests for undocumented
CPU behaviour. Remove superfluous "sidiv".
2020-02-10 16:07:11 +01:00
dingusdev
a4d815344a
Patched up DIVW(U)O(.)
2020-02-09 13:59:30 -07:00
Maxim Poliakovski
b057a8373d
Simplify SUBF and remove not_this.
2020-02-09 08:05:20 +01:00
Maxim Poliakovski
32e64fc1b2
Make XER update code inline & private.
2020-02-09 08:01:26 +01:00
Maxim Poliakovski
49002860ed
Fix carry update for subfc(.) and subfco(.).
2020-02-09 07:41:03 +01:00
dingusdev
6f16ba8c57
Fixed SUBFME(O)(.)
2020-02-08 22:06:01 -07:00
dingusdev
051edd5e38
Subtraction operation fixes in progress
2020-02-08 20:35:11 -07:00
Maxim Poliakovski
8d03d24c77
Complete tests for the integer instructions.
2020-02-08 23:23:58 +01:00
dingusdev
b364aa0ae4
Patching up Subtraction Opcodes
2020-02-03 22:32:56 -07:00
dingusdev
f52be627b5
Fixed subfo(.)
2020-02-03 17:28:41 -07:00
Maxim Poliakovski
1c5d0e640e
Add tests for all subtraction variants.
2020-02-04 01:00:37 +01:00
Maxim Poliakovski
03439b2a49
Placeholders for SUBFEO[.], SUBFMEO[.] and SUBFZEO[.].
2020-02-04 00:58:04 +01:00
Maxim Poliakovski
d25ce6a244
Add tests for shifts and fix their emulation.
2020-02-03 22:59:47 +01:00
Maxim Poliakovski
8c1c1e0a0d
Fix and refactor additions with OE=1.
2020-02-03 19:42:33 +01:00
Maxim Poliakovski
4e4d0370be
Modularize build system.
...
This way object files can be shared accross multiple executables.
2020-02-03 14:36:37 +01:00
dingusdev
eb476adf87
Small fix to addeo
2020-02-02 16:36:47 -07:00
dingusdev
60bf5dfa6a
ADDO(.) and ADDCO(.) fixed
...
Temp fix to look into the issues with the addition ops and overflow flag issues.
2020-02-02 11:54:33 -07:00
dingusdev
fe6ea7d9f6
Division ops fixed
2020-02-01 10:51:59 -07:00
dingusdev
0b2de4ac4c
Division Ops Fixes WIP
2020-01-31 21:06:06 -07:00
dingusdev
8c10004f52
Fixed all multiplication issues
2020-01-31 18:17:01 -07:00
Maxim Poliakovski
99e8bc98f3
Fix mulhw/mulhw. emulation.
2020-02-01 02:02:12 +01:00
dingusdev
ddae141c22
Overflow fixes in progress
2020-01-31 16:54:37 -07:00
Maxim Poliakovski
cc7814a722
Fix ORIS bug in the test suite.
2020-02-01 00:42:57 +01:00
Maxim Poliakovski
a27d7436ad
Fix ppctests.cpp and add more instructions.
2020-01-31 21:53:02 +01:00
Maxim Poliakovski
b007dbc743
More PPC instruction tests.
2020-01-31 18:04:50 +01:00
Maxim Poliakovski
aad75266f7
Fix cntlzw emulation.
2020-01-31 18:03:27 +01:00
Maxim Poliakovski
7d7b0b7de3
Initial PPC emulation tests.
2020-01-31 04:10:53 +01:00
Maxim Poliakovski
29fa6e6174
Move mem_ctrl_instance to ppcexec.
2020-01-31 04:08:22 +01:00
Maxim Poliakovski
304409b496
ppcexec: break long strings, correct spelling.
2020-01-31 00:13:26 +01:00
dingusdev
df4a963558
Quick build fix
2020-01-29 21:13:36 -07:00
dingusdev
3dead1f65c
Updated TBRs correctly in mtspr
2020-01-29 21:08:42 -07:00
dingusdev
e1c0ec3dd2
Fixed MTSPR for time base regs
2020-01-29 20:47:12 -07:00
Maxim Poliakovski
043aedb9ad
ppcmmu: implement BAT protection.
2020-01-30 00:57:45 +01:00
Maxim Poliakovski
354b7b65be
ppcmmu: handle unaligned reads and writes.
2020-01-30 00:45:39 +01:00
dingusdev
f364efb4b0
Fixed up floating-point value saving
2020-01-28 18:45:36 -07:00
dingusdev
aa20d64b48
SPRs now use symbolic names
2020-01-27 20:39:23 -07:00
Maxim Poliakovski
2953eaa538
Restructure main.cpp, remove obsolete code.
2020-01-28 02:20:43 +01:00
Maxim Poliakovski
117b3f1aa8
Move CPU initialization to ppcexec.cpp.
2020-01-28 01:24:12 +01:00
Maxim Poliakovski
f6f7bb4d0a
ppcmmu.cpp: remove unneeded includes.
2020-01-27 12:33:05 +01: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
Maxim Poliakovski
cdd7f228a4
ppcmmu: refactor memory access functions.
...
Reduces code duplication.
2020-01-26 23:46:13 +01:00
Maxim Poliakovski
0c3223454a
ppcemu.h: remove initializers from typedef.
2020-01-26 20:37:29 +01:00
dingusdev
7ae5baaee7
Fixed the opcode table formatting
2020-01-25 20:34:07 -07: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
Maxim Poliakovski
e1793b6305
Fix compilation warnings from previous commits.
2020-01-22 21:45:46 +01:00
dingusdev
6a083869e1
Started a massive FP fix-up
2020-01-21 19:25:50 -07:00
dingusdev
29d0ce362c
Fix 4 for the opcodes
2020-01-18 07:08:11 -07:00
dingusdev
bed665076d
Update 3 for the opcodes
2020-01-17 21:37:54 -07:00
dingusdev
3dc46ae664
Further opcode fixing
2020-01-17 21:26:09 -07:00
dingusdev
add1ac7a3d
Corrected several loading instructions
2020-01-17 21:06:26 -07:00
dingusdev
b414c68d81
Opcode table fix for tlbsync
2020-01-17 18:58:40 -07:00
dingusdev
3010708f2a
mfsrin fixed
2020-01-16 19:25:41 -07:00
dingusdev
6dd8d55577
Profiler + Missing Instruction Added
2020-01-14 20:50:01 -07:00
Maxim Poliakovski
0b0c00b653
Add aligned macros for reading ints from memory.
2020-01-13 03:05:50 +01:00
Maxim Poliakovski
720b35aa26
Move endian swapping code to endianswap.h.
...
Remove superfluous endian swapping wrappers.
2020-01-12 22:51:37 +01:00
dingusdev
fbe82010f8
Fixing up FPU opcodes further
2020-01-11 21:17:29 -07:00
dingusdev
ea7c34f0d9
Merge branch 'master' of https://github.com/dingusdev/dingusppc
2020-01-11 19:44:46 -07:00
dingusdev
c5ac0a2420
FPU Fixing + Preparing for more debugging
2020-01-11 18:43:47 -07:00
Maxim Poliakovski
2d5e436ad4
Refactor PPC exception handling, part 1.
2020-01-12 02:35:54 +01:00
Maxim Poliakovski
bd5ae4a45a
More memreadwrite macros usage.
2020-01-06 03:46:23 +01:00
dingusdev
b92fe60fad
Header updates + NVRAM Fix
2020-01-05 10:38:32 -07:00
dingusdev
b5074e4ce1
Started work on NVRAM
...
Tried to also fix some issued with MSVC
2020-01-05 09:52:46 -07:00
Maxim Poliakovski
e76ef61f53
ppcexec: pagewise MMU translation for code.
2020-01-04 02:07:36 +01:00
Maxim Poliakovski
99288e44d1
ppcmmu: add a comment describing missing features.
2020-01-03 21:21:41 +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