Nekotekina
61c64d1060
TSX: refactoring M
...
Remove first stage 'optimistic' transactions.
2021-12-19 20:23:01 +03:00
Nekotekina
3e1e1a683c
TSX/PPU: fix conditional store regression
2021-12-17 21:48:01 +03:00
Nekotekina
e3e39e8de3
PPU LLVM: rewrite and optimize saturation bit
...
Use vector accumulator
2021-12-03 00:14:06 +03:00
Nekotekina
209b14fbac
PPU LLVM: inline remaining vector instructions
2021-12-03 00:14:06 +03:00
Nekotekina
c9d8e59dbf
PPU LLVM: allow to drop setting SAT flag (optimization, module-wide)
...
Implement ppu_attr::has_mfvscr (partially, module-wide search).
If this instruction isn't found, allow to drop setting SAT flag.
It's based on presumption that only MFVSCR can retrieve SAT flag.
2021-12-03 00:14:06 +03:00
Nekotekina
abe498f35c
PPU LLVM: modernize some code with new DSL
...
PPU: rewritten instructions VMHADDSHS, VMHRADDSHS
PPU: added optimized path for VPERM (ra=rb)
2021-12-03 00:14:06 +03:00
Eladash
524b065bc8
Debugger: Show PPU reservation data
...
Asterisk marks the offset of data that had been given to the guest PPU code.
2021-11-22 14:48:34 +03:00
Eladash
ab50e5483e
GUI Utilities: Implement instruction search, PPU/SPU disasm improvements ( #10968 )
...
* GUI Utilities: Implement instruction search in PS3 memory
* String Searcher: Case insensitive search
* PPU DisAsm: Comment constants with ORI
* PPU DisAsm: Add 64-bit constant support
* SPU/PPU DisAsm: Print CELL errors in disasm
* PPU DisAsm: Constant comparison support
2021-10-12 23:12:30 +03:00
Eladash
71b15c1fa6
Suggest tweaking the setting "Stub PPU Traps" after PPU trap ( #10921 )
2021-09-30 21:33:55 +03:00
Eladash
e7b9513d4a
Bugfix after recent PPU patches pr
2021-09-28 12:12:12 +03:00
Eladash
65c9cd99cd
Patches/PPU: Implement HLE/LLE/With-TOC function call patches
...
Example patches:
[ jumpf, 0x12340, "cellGcmSys:cellGcmSetFlip"] // Places a call to cellGcmSetFlip at 0x12340
[ jumpf, 0x12340, "cellGcmSys:0xDC09357E"] // Same, using FNID
[ jumpf, 0x12340, 0x2345678 ] # Function OPD based call eading OPD at 0x2345678
2021-09-26 20:49:57 +03:00
Megamouse
4323ca4a01
Remove unused lambda
2021-09-25 19:21:59 +03:00
Eladash
50ad7ba1f6
vm: Fix vm::unmap
...
* Make vm::unmap atomic, squash the memory unmapping process inside this function while still using the same VM mutex ownership.
* Make vm::unmap not fail due to random vm::get calls, shared_ptr reference count is no longer a condition.
* Fix sys_mmapper_free_address spuriously failing with EBUSY due to random vm::get calls.
* Fix sys_vm_unmap race condition due to non-atomic vm::unmap.
* Add an optional verification block ptr arg to vm::unmap, used by patches.
2021-09-13 20:53:34 +03:00
Eladash
f98595bee5
Patches/PPU: Add jump_link patch type
2021-09-10 11:46:39 +03:00
Eladash
fafefb2cf5
Fixup No.3 after #10779
2021-09-10 11:46:39 +03:00
Nekotekina
06f733a7f2
Fixup No.2 for #10779
2021-09-01 16:56:38 +03:00
Nekotekina
ad6a72e369
Fixup for #10779
2021-09-01 14:38:20 +03:00
Eladash
b40ed5bdb7
Patches/PPU: Extend and improve patching capabilities (code allocations, jumps to any address) ( #10779 )
...
* Patches/PPU: Implement dynamic code allocation + Any-Address jump patches
Also fix deallocation path of fixed allocation patches.
2021-09-01 13:38:17 +03:00
Eladash
5784ffc972
Fixup PPU breakpoints
2021-08-12 22:24:54 +03:00
Nekotekina
064fc81697
Fix warnings
2021-08-06 10:41:40 +03:00
Megamouse
af89eb5404
ppu compilation: fix facepalm (double increase)
2021-08-03 08:39:57 +02:00
Megamouse
6527eef655
System: add progress update on existing modules
...
This could cause dialogs to seemingly finish at e.g. 50/100 modules because the existing modules weren't accounted for.
2021-07-31 16:06:18 +02:00
Eladash
f39a0a5fbe
Debugger: Add some error pop-ups for invalid operations
...
* Show error window when setting breakpoints on these conditions:
- SPU/RSX are selected. (not supported)
- When using non-interpreters decoders.
- Non-executable memory is specified.
* Do not allow instruction stepping for non-interpreters decoders.
* Clear breakpoints when the game is stopped.
* Fix setting breakpoints on HLE functions.
2021-07-31 15:27:30 +02:00
Eladash
e6e0210e73
Extend ppu_thread::call_history_t formatter
2021-07-19 09:28:46 +02:00
Eladash
8e2c34a003
PPU debugger: Implement PPU calling history
2021-07-17 17:28:23 +02:00
Eladash
b6fccee6a4
Improve ppu_thread::stack_push
...
Save actual stack memory allocation size locally. (not in PS3 memory)
2021-06-28 14:09:24 +03:00
Eladash
f103004aa0
sys_prx/overlay: Fix disambiguator of module names opened by FD ( #10340 )
...
Don't append zero offset.
2021-05-26 23:38:17 +03:00
Nekotekina
160b131de3
types.hpp: implement smin, smax, amin, amax
...
Rewritten the following global utility constants:
`umax` returns max number, restricted to unsigned.
`smax` returns max signed number, restricted to integrals.
`smin` returns min signed number, restricted to signed.
`amin` returns smin or zero, less restricted.
`amax` returns smax or umax, less restricted.
Fix operators == and <=> for synthesized rel-ops.
2021-05-22 12:10:57 +03:00
Eladash
dcfd29c2d9
kernel-explorer: Implement PPU scheduler state information
2021-05-21 18:12:36 +02:00
Eladash
638f20c80f
Improve get_current_cpu_thread()
2021-05-20 09:25:51 +03:00
Eladash
57cd4ff3c6
Move HLE table address to FXO ( #10284 )
2021-05-17 14:22:27 +03:00
Eladash
cacb852a1e
Emulation stopping bugfix
2021-05-14 15:35:07 +03:00
Eladash
daa53b77cf
Simplify named_thread construction
2021-05-01 18:08:03 +03:00
Megamouse
1caf81811a
Move unspecific Emulator code out of System.cpp
2021-04-24 11:21:22 +03:00
Eladash
a0d1cf26d0
Reduce precompilation failure log level (error -> notice)
2021-04-19 23:18:31 +03:00
Eladash
5ca6381624
Implement "PPU LLVM Precompilation" control setting
2021-04-10 18:06:46 +03:00
Megamouse
03b76b4606
Emu: some cleanup
2021-04-09 21:03:49 +02:00
Nekotekina
95725bf7fc
Add -Werror=missing-noreturn (GCC, clang)
...
May be useful to diagnose functions which fail assertions unconditionally.
2021-04-08 10:29:47 +03:00
Megamouse
02febd3f65
Workaround: Skip progress_dialog during gameplay
2021-04-06 21:39:34 +03:00
Eladash
7b57b8f2ca
debugger: Implement ability to pause entire emulation on breakpoint
2021-04-01 19:11:55 +03:00
Nekotekina
e9a45a2f45
Implement scoped_progress_dialog
...
Create Emu/system_progress.hpp
Remove atomic g_progr_show
2021-03-31 23:40:09 +02:00
Nekotekina
2212a131ef
Fix some -Weffc++ warnings (part 1)
2021-03-31 11:27:09 +03:00
Megamouse
870224cde0
Emu/overlay: ingame native overlay PPU compilation
2021-03-31 09:38:30 +02:00
Eladash
1e71deb0db
rsx: Compile shaders when CELL is not running
2021-03-30 11:13:47 +03:00
Megamouse
ba45daff35
Qt: some cleanup in debugger
2021-03-24 20:47:51 +01:00
Nekotekina
b3fb6d7d18
Add and fix -Wredundant-decls (GCC)
2021-03-23 22:48:57 +03:00
Nekotekina
f801dc6558
Save all 8 syscall_args
2021-03-16 19:33:37 +03:00
Eladash
a9b0d25c01
PPU Debugger: Fixup for syscall arguments ( #9932 )
2021-03-16 16:20:45 +03:00
Nekotekina
a4fdbf0a88
Enable -Wstrict-aliasing=1 (GCC)
...
Fixed partially.
2021-03-09 03:10:15 +03:00
Nekotekina
87af905018
Enable -Wunused-parameter
2021-03-06 18:07:08 +03:00
Nekotekina
52fe86b56c
fixed_typemap.hpp: make it a bit fool-proof
...
Require objects to be non-copyable (move is still allowed).
2021-03-02 21:58:49 +03:00
Eladash
004ebfdaee
SPU debugger: Implement MFC journal
...
* Allow to dump up to 1820 commands with up 128 bytes of data each, using key D with the debugger.
2021-03-02 21:57:51 +03:00
Nekotekina
ea5e837bd6
fixed_typemap.hpp: return reference
2021-03-02 16:08:14 +03:00
Eladash
68a878264c
Minor GUI fix for PPU interpreter at "precompilation"
2021-02-23 17:35:45 +03:00
Eladash
20eb4352fb
debugger: Fix single stepping ( #9793 )
2021-02-19 14:53:09 +03:00
Eladash
f43260bd58
Atomic waiting refactoring ( #9208 )
...
* Use atomic waitables instead instead of global thread wait as often as possible.
* Add ::is_stopped() and and ::is_paued() which can be used in atomic loops and with atomic wait. (constexpr cpu flags test functions)
* Fix notification bug of sys_spu_thread_group_exit/terminate. (old bug, enhanced by #9117 )
* Function time statistics at Emu.Stop() restored. (instead of current "X syscall failed with 0x00000000 : 0")
2021-02-13 17:50:07 +03:00
Eladash
cf384795d2
debugger: Improve PPU string constraints
2021-02-13 16:00:26 +03:00
Eladash
423cc1685c
PPU LLVM: Reduce PRX/OVL compilation memory usage a little
2021-02-13 13:05:41 +03:00
Eladash
e26ae9899c
Reimplement/fix PRX patches
2021-02-12 15:27:59 +03:00
Eladash
fad89f1c3b
Fix tiny race in PPU breakpoints ( #9731 )
...
If the PPU has just being paused by the debugger, before it entered the breakpoint handler, the PPU would continue onto the next instruction skipping the breakpoint but then being paused on it instead.
2021-02-07 00:25:40 +03:00
Nekotekina
7b40859eff
Remove unused header
2021-02-01 19:14:01 +03:00
Nekotekina
0c034ad7de
PPU LLVM: upgrade to GHC call conv
...
Get rid of some global variables.
Implement ppu_escape (unused yet).
Bump PPU cache version to v4.
2021-02-01 11:30:50 +03:00
Nekotekina
c89362f6a2
PPU LLVM: don't use module name as PRX indicator
2021-02-01 11:30:50 +03:00
Nekotekina
f9ee8978ff
PPU LLVM: improve analyser
...
Compile possibly executable holes between detected functions.
Add unused "PPU LLVM Greedy Mode" option (for future updates).
Add "nounwind" attribute to compiled functions (reduces size).
2021-02-01 11:30:50 +03:00
Nekotekina
cf6606065d
PPU: fix some typos in asm code
2021-01-31 20:00:04 +03:00
Eladash
82c86ed2f7
Implement standalone OVL (overlay) loading mode
...
* Allow to load OVL alone.
* Add error checks in ppu_load_exec(), do not crash on error.
* Fix crash on exit from standalone PRX mode, allow kernel explorer to work with it as well for the added OVL mode.
2021-01-31 15:47:05 +03:00
Megamouse
c464e90d5d
Fix stop exit of check_only ppu_initialize
2021-01-31 12:18:32 +03:00
Megamouse
670d2b191c
Minor optimization for check_only ppu_initialize
2021-01-31 12:18:32 +03:00
Megamouse
7bddb87306
Simplify compile threads
2021-01-31 12:18:32 +03:00
Megamouse
2025f02105
Search for more game data directories.
...
Also properly remove duplicate paths
2021-01-31 11:42:33 +03:00
Eladash
16c6b44f55
Fix #9680 ( #9687 )
...
Fix regression from #9680
2021-01-30 19:05:02 +03:00
Eladash
e3b3b0cda7
PPU LLVM: Precompile all executable (PRX, MSELF, overlay) code at startup ( #9680 )
...
* Precompile LLVM cache at startup of games, like the GUI "Create PPU Cache" option.
* Allow OVL (overlay) precompilation as well (used by certain games).
Co-authored-by: Megamouse <studienricky89@googlemail.com>
Co-authored-by: Nekotekina <nekotekina@gmail.com>
2021-01-30 16:08:22 +03:00
Nekotekina
bb2cc196a6
Fixup for preloading SPRX from MSELF
...
Forgot to append the offset.
Forgot to use different loop variable.
2021-01-29 21:26:34 +03:00
Eladash
d3bc96a201
Fix minor issue with usage of STL thread::hardware_concurrency()
2021-01-29 18:23:29 +03:00
Nekotekina
11ba6e45ab
Add MSELF support to SPRX precompilation.
...
Add ppu_precompile() function in PPUThread.cpp
Co-authored-by: Eladash <elad3356p@gmail.com>
2021-01-29 13:34:43 +03:00
Eladash
0652870204
New RSX Debugger
2021-01-28 17:40:26 +03:00
Nekotekina
53267e283b
PPU LLVM: implement ppu_finalize
...
Properly free certain compiled PRX/OVL modules (except dev_flash)
2021-01-27 18:03:49 +03:00
Nekotekina
ee288340b0
Implement thread_ctrl::scoped_priority
...
RAII priority control (+1, or -1)
2021-01-25 21:49:16 +03:00
Eladash
a58c12db0b
SPU: fixup after #9630
...
Co-Authored-By: Ivan <nekotekina@gmail.com>
2021-01-21 21:32:13 +03:00
Eladash
f81674232e
Remove SPU and PPU destructors
2021-01-21 18:31:51 +03:00
Nekotekina
f9bc682115
Refactor some 'offending' code a bit (no effect)
...
It appears linkage errors were rare even in debug mode (GCC/clang).
2021-01-18 21:58:28 +03:00
Eladash
e4c3b1c2bd
vm: Remove vm::dealloc_verbose_nothrow
2021-01-15 17:37:52 +03:00
Nekotekina
db8e6fe7a7
Enable -Wunused-variable
2021-01-12 14:34:14 +03:00
Nekotekina
41ee792f95
MSVC: remove MemLeak build support
...
There are better memleak detection tools.
1) Requires to guard placement new and external libs
2) Doesn't work thoroughly
2020-12-22 14:32:30 +03:00
Nekotekina
bd269bccaf
types.hpp: remove intrinsic includes
...
Replace v128 with u128 in some places.
Removed some unused files.
2020-12-21 21:11:25 +03:00
Eladash
ef884642e4
Cleanup disasm classes a bit
2020-12-21 13:46:26 +03:00
Nekotekina
eec11bfba9
Move align helpers to util/asm.hpp
...
Also add some files:
GLTextureCache.cpp
VKTextureCache.cpp
2020-12-18 18:07:42 +03:00
Nekotekina
db9b7db531
Cleanup and move sysinfo.h -> util/sysinfo.hpp
2020-12-18 12:55:54 +03:00
Nekotekina
fb29933d3d
Add usz alias for std::size_t
2020-12-18 12:23:53 +03:00
Eladash
bfe1a8673a
PPU: Allow HLE execution from pure instruction decoder type interpreter
2020-12-15 11:18:51 +03:00
Eladash
7eb16e13bb
PRX loader: Fix libfs_155.sprx loading
...
Fix relocations' segments referencing when there are "empty" (memsize=0) LOAD segments.
2020-12-15 11:16:45 +03:00
Nekotekina
e321765c54
Split BEType.h to util/v128.hpp and util/to_endian.hpp
2020-12-13 16:34:45 +03:00
Nekotekina
a6a5292cd7
Use uptr (std::uintptr_t alias)
2020-12-12 16:29:55 +03:00
Nekotekina
65c04e4ddd
Remove constexpr from ppu/spu decoders.
...
We don't need them at compile time (yet).
But can reduce compile time and complexity.
2020-12-10 15:06:01 +03:00
Nekotekina
36c8654fb8
Remove HERE macro
...
Some cleanup.
Add location to some functions.
2020-12-10 12:30:22 +03:00
Nekotekina
e055d16b2c
Replace verify() with ensure() with auto src location.
...
Expression ensure(x) returns x.
Using comma operator removed.
2020-12-09 15:43:38 +03:00
Nekotekina
b16cc618b5
atomic.hpp: add some features and optimizations
...
Add atomic_t<>::observe() (relaxed load)
Add atomic_fence_XXX() (barrier functions)
Get rid of MFENCE instruction, replace with no-op LOCK OR on stack.
Remove <atomic> dependence from stdafx.h and relevant headers.
2020-12-07 17:13:12 +03:00
Nekotekina
77aa9e58f2
shared_ptr.hpp: add trivial conversion for shared/single types
...
These conversions don't exist in std::shared_ptr-alike types.
But I don't want to bother with == operators until we have proper C++20.
Removed trivial conversion for atomic_ptr because it's heavyweight.
2020-12-07 15:33:28 +03:00
Eladash
15a12afe25
Debugger: Implement code flow tracking
2020-12-06 15:32:13 +03:00
RipleyTom
af8c661a64
Remove BOM markers
2020-12-06 15:30:12 +03:00