Commit Graph

43 Commits

Author SHA1 Message Date
joevt
cb05bd05eb cpu: Add ppc_grab_regssash macro.
This macro is like ppc_grab_regssa but includes rot_sh = (ppc_cur_instruction >> 11) & 0x1F;
2024-04-10 06:43:34 -07:00
Maxim Poliakovski
0ff911cc26 poweropcodes: cosmetic improvements. 2024-03-27 03:45:22 +01:00
Maxim Poliakovski
2b6f41e0d0 poweropcodes: use XER constants instead of magic numbers. 2024-03-27 03:36:17 +01:00
joevt
19ba15f2f1 ppc: Separate enums for separate fields. 2024-03-26 06:44:26 -07:00
dingusdev
c281b27220 Attempted templating for interpreter 2024-03-24 12:21:19 -07:00
dingusdev
4ef3c792de Refactoring interpreter, pt. 1
Reduce the number of global variables used by interpreter
2024-03-22 08:01:29 -07:00
joevt
6a4326af39 poweropcodes: lscbx cleanup. 2024-03-01 07:46:04 -07:00
Maxim Poliakovski
0c3f399de3 poweropcodes: fix compiler warning. 2024-02-24 22:51:05 +01:00
Maxim Poliakovski
45ccabb11d poweropcodes: improve lscbx emulation. 2024-02-24 22:46:54 +01:00
dingusdev
d71a213c4b Continued clean-up, part 3 2024-02-22 19:46:34 -07:00
dingusdev
1d938c93b6 Mask fixes for sr(*) 2024-02-20 18:15:08 -07:00
joevt
35bc1bcb44 poweropcodes: Fix sriq. 2024-02-20 18:07:38 -07:00
joevt
1438ebc12a poweropcodes: Fix compiler warnings. 2024-02-20 18:07:26 -07:00
dingusdev
b160e38f8f Continued code clean-up 2024-02-16 06:55:13 -07:00
Maxim Poliakovski
819d475181 poweropcodes: fix div emulation.
Clean up power_doz and power_maskir as well.
2023-12-01 20:41:22 +01:00
Mihai Parparita
1b4de3b64e Fix emulation of doz, dozi, and nabs POWER instructions
doz and dozi were storing the result into the wrong register.

nabs was not taking into account two's complement storage of numbers
and was just setting the signed bit.

These two instructions are used in the implementation of text
measurement in native QuickDraw on 7.1.2/the PDM ROM, and the incorrect
values were resulting in nothing being rendered. With the fix text
appears when booting from the 7.1.2 CD.
2023-12-01 01:34:12 -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
cf0d361918 Merge 'hard-disks' branch. 2023-04-17 01:20:38 +02:00
joevt
64fec88436 Fix compiler warnings: cast loses precision.
Use explicit cast when converting large integer types to smaller integer types when it is known that the most significant bytes are not required.
For pcidevice, check the ROM file size before casting to int. We'll allow expansion ROM sizes up to 4MB but usually they are 64K, sometimes 128K, rarely 256K.
for machinefactory, change the type to size_t so that it can correctly get the size of files that are larger than 4GB; it already checks the file size is 4MB before we need to cast to uint32_t.
For floppyimg, check the image size before casting to int. For raw images, only allow files up to 2MB. For DiskCopy42 images, it already checks the file size, so do the cast after that.
2023-01-11 01:17:12 -08:00
dingusdev
a58ce8aeb3 Slight tweak to lscbx 2022-11-15 08:01:57 -07:00
dingusdev
8f99510af0 Fixed lscbx 2022-11-15 07:40:37 -07:00
dingusdev
647ae456e5 Slight typo squash for lscbx 2022-11-12 20:18:33 -07:00
dingusdev
1b7ff084ab Cleaned lscbx 2022-11-12 20:17:04 -07:00
Maxim Poliakovski
c0cd6eb38f Add missing licence headers, update license date. 2021-10-23 21:00:31 +02:00
dingusdev
983e278498 Refactoring 601 opcode emulation - part 1
All opcodes should be emulated now. There was also a significant amount of clean-up, particularly with lscbx and the bit rotation/shifting instructions.
2021-10-01 22:37:28 -07:00
Maxim Poliakovski
84e111290f Fix includes for loguru and SDL. 2021-09-16 00:46:38 +02:00
Maxim Poliakovski
089645e830 Implement SoftTLB for writes. 2021-08-22 17:34:23 +02: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
Waqar Ahmed
0ab9380be3 clang-format everything 2020-05-12 23:55:45 +05:00
dingusdev
60ffa5bfac Initial attempt at fixing SDL2 building for Windows 2020-03-22 20:15:12 -07:00
dingusdev
e31f7873f5 Fixed redunant variable names for PPC emulation. 2020-03-04 21:29:04 -07:00
dingusdev
354409812e Updating files with proper licensing header 2020-02-28 09:04:28 -07:00
dingusdev
6c1dc8aaf0 Further logging work 2020-02-24 19:50:52 -07: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
dingusdev
aa20d64b48 SPRs now use symbolic names 2020-01-27 20:39:23 -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
Maxim Poliakovski
db89c23bf0 Move ppcemumain.h to /cpu/ppc/ppcemu.h. 2019-12-27 20:10:36 +01:00
Maxim Poliakovski
87ca977ae7 Rename ppcmemory to ppcmmu. 2019-12-27 20:00:53 +01:00
Maxim Poliakovski
ad5f3a9435 Move PPC emulation code into /cpu/ppc subdirectory. 2019-12-23 10:38:16 +01:00