Commit Graph

289 Commits

Author SHA1 Message Date
dingusdev
2539faef7e Small typo fixes 2021-01-23 15:10:08 -07:00
Maxim Poliakovski
42184213e9 ppcexec: fix RC flag for subgroup 63. 2021-01-23 03:21:50 +01:00
Maxim Poliakovski
bb3f4e596e ppcexec: fix subopcode 59 dispatching. 2021-01-23 03:12:39 +01:00
Maxim Poliakovski
014eefdf7e ppcdisasm: fix frsp and add tests for it. 2021-01-23 02:32:30 +01:00
Maxim Poliakovski
d8f7588693 debugger: some fixes and improvements. 2021-01-12 15:17:51 +01:00
dingusdev
2bac606365 Added to Heathrow
Plus some debugging stuff to help figure out what register 0x34 is responsible for.
2021-01-08 15:29:43 -07:00
dingusdev
df8ea1b276 Code clean-up for interpreter 2021-01-08 14:34:01 -07:00
Maxim Poliakovski
358f018815 ppcopcodes: fix mcrf. 2021-01-08 21:59:18 +01:00
dingusdev
79e3d398ba mcrf implemented 2021-01-07 20:38:32 -07:00
Maxim Poliakovski
2f3938c23f ppcopcodes: fix dcbz. 2021-01-07 04:25:27 +01:00
Maxim Poliakovski
dbbaf13a78 ppcopcodes: fix cntlzw to compile properly with Clang.
Enable USE_GCC_BUILTINS by default.
2020-12-18 18:33:00 +01:00
Maxim Poliakovski
99641b1b5e ppcopcodes: fix cntlzw with __builtin_clz.
The result of __builtin_clz is undefined when the source operand
is zero. Add a check for this case and handle it accordingly.
2020-12-07 14:37:20 +01:00
Maxim Poliakovski
6c6247b94f Clean up program exceptions. 2020-11-30 20:59:36 +01:00
Maxim Poliakovski
acfa09af65 Illegal opcodes raise program exception. 2020-11-29 23:54:10 +01:00
dingusdev
54fcfca8e9
Fixed floating point loading and storing instructions 2020-11-29 06:52:01 -07:00
Maxim Poliakovski
a775007d3a MMU: implement misaligned cross-page accesses. 2020-11-29 00:23:30 +01:00
dingusdev
0c202b0c2d Merging the 68k debugger from another branch 2020-11-26 20:00:08 -07:00
Maxim Poliakovski
b81de4af48 ppcexec: initialize interpreter lookup tables. 2020-11-14 03:05:41 +01:00
Maxim Poliakovski
2b19b0b237 ppcmmu: better initialization of last used entries. 2020-11-14 02:57:36 +01:00
dingusdev
1fe9ffe3e5 Further refactoring to clean up the interpreter 2020-10-17 21:46:38 -07:00
dingusdev
dc58386237 Started re-refactoring opcode retrieval 2020-10-17 14:30:37 -07:00
dingusdev
14ef7564cd CLI fixes - RAM and GFXMEM work better 2020-08-25 20:07:02 -07:00
Maxim Poliakovski
353035e9ca Prevent clobbering during debugging. 2020-07-20 23:02:07 +02:00
Maxim Poliakovski
b9dcfef551 debugger: debugging commands for 68k code. 2020-07-16 14:26:34 +02:00
Maxim Poliakovski
6b74e358dc WIP: basic 68k debugging environment. 2020-07-15 02:19:05 +02:00
Maxim Poliakovski
39a643aff6 Merge branch 'machines'
Also disable SDL for now because it produces build errors.
2020-06-03 18:21:51 +02:00
Maxim Poliakovski
2cd002cffa ppcexec: remove dead code. 2020-06-03 15:33:32 +02:00
Maxim Poliakovski
6ef0f0baae Fix CPU cycles counter to play nicely with setjmp.
setjmp clobbers non-volatile local variables. bb_start_la is such
a local variable that is used for counting of virtual CPU cycles.
To make cycles counting work after setjmp, the global variable
glob_bb_start_la is used to preserve content of bb_start_la accross
interpreter pipeline.
2020-06-03 15:21:19 +02:00
Maxim Poliakovski
d21fdb25d1 Remove unused variable grab_branch. 2020-06-01 23:12:18 +02:00
Maxim Poliakovski
f204caa907 ppcexec: new TBR/DEC updating code. 2020-06-01 00:46:00 +02:00
Waqar Ahmed
0ab9380be3 clang-format everything 2020-05-12 23:55:45 +05:00
Maxim Poliakovski
64d74228c2 ppcopcodes: fix STMW emulation. 2020-04-21 04:58:21 +02:00
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