Commit Graph

1414 Commits

Author SHA1 Message Date
Nekotekina
5248240e10 atomic.cpp: improvements.
Reduced static memory amount for waitable atomics.
Allow notifier to skip notifications if wait/notify masks don't overlap.
Improve raw_notify to wake up the thread by its id, add thread_id arg.
Add optional mask argument to notify_one() and notify_all().
2020-11-05 05:51:43 +03:00
Nekotekina
b66628baca Improve low-level mmap utilities (Linux/BSD)
Add madvise (MADV_WILLNEED) on utils::memory_commit
Add madvise (MADV_FREE or MADV_DONTNEED) on utils::memory_decommit
Improve shm_open pseudo-random name (not used on Linux)
2020-11-04 14:59:26 +03:00
Nekotekina
ba5ed5f380 Fix vm::lock_range wrong check
Minor header refactoring.
2020-11-04 14:59:26 +03:00
Nekotekina
2d38d8a639 Fix NEVER_INLINE attribute
Similarly to FORCE_INLINE, it doesn't imply inline on some compilers.
2020-11-04 14:59:25 +03:00
Nekotekina
1b8bf081b5 Upgrade to LLVM 11 Stable 2020-11-02 21:23:25 +03:00
Nekotekina
86fc842c89 TSX: new fallback method (time-based)
Basically, using timestamp counter.
Rewritten vm::reservation_op with the same principle.
Rewritten another transaction helper.
Add two new settings for configuring fallbacks.
Two limits are specified in nanoseconds (first and second).
Fix PUTLLC reload logic (prevent reusing garbage).
2020-10-31 15:34:14 +03:00
Megamouse
2cee26c3e7 Cleanup some includes 2020-10-31 11:53:46 +01:00
Nekotekina
605d57c541 sys_event: cleanup (replace vm::temporary_unlock)
Also made minor changes in sys_rsx.cpp.
Removed unused exception std headers.
2020-10-30 17:49:07 +03:00
Nekotekina
f972fa26a4 Derive RSX Replay thread from cpu_thread
Its id is set to 0, so fix some id_type() usages.
2020-10-30 17:36:11 +03:00
Nekotekina
8ce0819b42 SPU: add stx/ftx counters
Just count pure transaction successes and failures.
2020-10-29 18:57:57 +03:00
Nekotekina
c491b73f3a SPU: improve accurate DMA
Remove vm::reservation_lock from it.
Use lock bits to prevent memory clobbering in GETLLAR.
Improve u128 for MSVC since it's used for bitlocking.
Improve 128 bit atomics for the same reason.
Improve vm::reservation_op and friends.
2020-10-28 03:47:41 +03:00
Nekotekina
c50233cc92 atomics.cpp: add support for waiting on 128-bit atomics
Complementarily.
Also refactored to make waiting mask non-template arg.
2020-10-28 03:47:41 +03:00
Nekotekina
4966f6de73 vm: improve range_lock and shareable cache (Non-TSX)
Allocate "personal" range lock variable for each spu_thread.
Switch from reservation_lock to range lock for all stores.
Detect actual memory mirrors in shareable cache setup logic.
2020-10-27 17:56:19 +03:00
Nekotekina
6806e3d5c7 atomic.cpp: implement notify callback
Notification can be very heavy, especially if we need to wake many threads.
Callback is set for cpu_thread in order to set wait flag accordingly.
2020-10-27 17:56:19 +03:00
Nekotekina
d344701fd5 atomic.cpp: add sparse atomics
Set alignment as second template argument (typically cache line).
2020-10-26 01:15:31 +03:00
Nekotekina
97ae5ab561 Add imports for some undocumented NTDLL functions
Some of them are available only since Windows 8.
2020-10-24 14:16:32 +03:00
Nekotekina
10caa2981f Improve raw_notify a bit 2020-10-24 14:16:32 +03:00
Nekotekina
59d9e7ce98 Revert "Atomics: use WaitOnAddress if available (Win8+)"
This reverts commit f0fd7e2e19.
2020-10-21 09:59:08 +03:00
Nekotekina
f0fd7e2e19 Atomics: use WaitOnAddress if available (Win8+) 2020-10-21 00:22:08 +03:00
Nekotekina
4384ae15b4 Improve vm::reservation_op
Remove XABORT, sync status handling with SPU/PPU transaction.
Limit max number of transaction attempts in loop.
Add Ack template parameter, as in vm::reservation_light_op.
Remove utils::tx_abort, improve utils::tx_start as well.
2020-10-20 09:10:21 +03:00
Nekotekina
dc8252bb9f Remove XABORT in PPU/SPU transactions.
It's expensive for unknown reason. Simply XEND is usually much cheaper.
Add some minor improvements. Use g_sudo_addr.
2020-10-20 09:10:21 +03:00
Nekotekina
44c90c060a TSX: improve transaction repeat handling
Handle status 0 as fatal.
2020-10-19 19:41:28 +03:00
Nekotekina
15efb73aae Add assert in build_function_asm to not ignore errors 2020-10-17 21:55:22 +03:00
Nekotekina
3d980a9f66 Reimplement ASMJIT runtime
Try to emplace generated code in lower address area.
Protect generated code from writing.
2020-10-17 21:25:43 +03:00
Nekotekina
b57a9c31f0 Implement utils::tx_start (for TSX)
Implement utils::tx_abort helper.
2020-10-12 15:20:24 +03:00
Nekotekina
f2d2a6b605 JIT cleanup for PPU LLVM
Remove MemoryManager3 as unnecessary.
Rewrite MemoryManager1 to use its own 512M reservations.
Disabled unwind info registration on all platforms.
Use 64-bit executable pointers under vm::g_exec_addr area.
Stop relying on deploying PPU LLVM objects in first 2G of address space.
Implement jit_module_manager, protect its data with mutex.
2020-10-11 17:22:28 +03:00
Eladash
3c935f7834
SPU: Fix minor segfaults (#9015)
SPU: Remove "RawSPU Not Found" exception.
Fix edge case in access violation handler.
2020-10-11 14:59:18 +03:00
Nekotekina
050c3e1d6b Rewrite cpu_thread::suspend_all
Now it's a function of higher order.
Make only one thread do the hard work of thread pausing.
2020-10-10 13:58:48 +03:00
Eladash
c628147521 cellSpurs: Implement more HLE functions (part 1) 2020-10-07 01:12:21 +03:00
Megamouse
5226076676 Emu: use vulkan as default renderer 2020-10-01 09:19:13 +02:00
Eladash
8ad36e2526
Fix fs::delim type, fix "." and ".." processing in fs::get_parent_dir (#8975)
* Fix fs::delim type

* Fix fs::get_parent_dir: "." and ".." processing
2020-09-26 19:18:32 +01:00
Eladash
3b11f22062 MSVC bug workaround 2020-09-25 13:26:08 +03:00
Eladash
6b11d82dd0 Win32 FS: Always use FILE_SHARE_DELETE 2020-09-24 18:06:51 +03:00
Eladash
d0f1b29b39 Win32 FS: Fix fs::utime for directories 2020-09-24 18:06:51 +03:00
Eladash
b8fa6fb4c4 Win32 FS: Rewrite (fix) vfs::host::rename 2020-09-24 18:06:51 +03:00
Eladash
3a96d99187 sceNpTrophyRegisterContext: Atomically create trophy data 2020-09-22 19:46:52 +03:00
Megamouse
511e9920c2 patch_engine: Apply patch when APP_VER is unknown 2020-09-21 11:59:57 +02:00
Eladash
9031c5a6e0 Win32 FS: Fix fs::stat for drives 2020-09-21 06:35:42 +03:00
Eladash
fe9c61fe73 atomic.hpp: Fix atomic_storage_futex::raw_notify 2020-09-12 22:11:40 +03:00
Eladash
b48c036636 Fix bitfield operator &= 2020-09-10 19:04:53 +02:00
Megamouse
44371dedd9 fix fs::copy_file on linux 2020-09-10 06:58:44 +02:00
Megamouse
fb62c297fa patch_manager: log g_tls_error 2020-09-10 06:58:44 +02:00
Eladash
8c8048f037 Win32 FS: Use FindFirstFileExW in fs::stat, fs::exists, fs::is_dir, fs::is_file
Co-Authored-By: Bevan Weiss <bevanweiss@users.noreply.github.com>
2020-09-09 21:57:01 +02:00
Megamouse
46e8b4f561 patch_manager: add download button 2020-09-09 20:34:17 +02:00
RipleyTom
10820fa135
Implement sceNpSignaling & signaling improvements (#8836) 2020-09-07 22:50:17 +01:00
RipleyTom
190822c2b2
RPCN Client (#8663) 2020-08-27 20:47:04 +01:00
Eladash
25dee4a78e Fix bitops test 2020-08-17 17:36:27 +01:00
Bevan Weiss
01d3585bf3 Bring back the non-compliant define, but version limited
As noted, we've done something we shouldn't have with MSVC compiler specific defines.  But to avoid breaking the MSVC build environment, leave this define in there until the MSVC version when it is actually exposed by the compiler itself (v16.8).
2020-08-14 18:34:34 +01:00
Bevan Weiss
a11afe05bf MSVC changes
Add support for compilation on x64 toolchain (x86 cl.exe was running out of heap space in vm.cpp)

Also took the opportunity to change compile optimisation from /Ox to /O2, as /O2 provides better optimisation than does /Ox

Also, we shouldn't be explicitely setting compiler tool defines (__cpp_lib_bitops), so remove that from types.h
2020-08-14 18:34:34 +01:00
Malcolm Jestadt
f188589685 Utils: Add detection for Icelake-client tier AVX-512
- Implies support for everything that Skylake-X supports as well as AVX512IFMA, AVX512VBMI, AVX512VBMI2, AVX512VPOPCNTDQ, AVX512BITALG, AVX512VNNI, AVX512VPCLMULQDQ, AVX512GFNI, AVX512VAES
2020-08-08 00:33:22 +02:00
Megamouse
47040be3ad cheat_manager: improve parser errors 2020-07-29 13:18:33 +02:00
Megamouse
d0bb9d2b62 cheat_manager: move cheats.yml to patches folder 2020-07-29 13:18:33 +02:00
Bevan Weiss
c5d39ace2b
Update types.h to fix static_cast test (#8627)
Trivial fix up to resolve invalid is_constructible test (To,To) to match desired (To,From)
2020-07-25 09:46:47 +01:00
Eladash
a029a94c73 SPU: Use waitable atomics for SPU channels interface 2020-07-23 13:45:58 +03:00
Eladash
0d8152cd4e SPU/Linux: Ensure aligned 64k allocations in utils::memory_reserve 2020-07-19 17:58:49 +03:00
Eladash
c37bc3c55c SPU: Make spu_thread::offset private 2020-07-19 17:58:49 +03:00
Eladash
c1a80b8146 Minor fixup after #8501 2020-07-16 21:52:08 +03:00
Eladash
58e2465369 Make std::bit_cast hack-implementation constexpr in simple cases 2020-07-14 12:14:44 +03:00
illusion
60f05fdbf3 move applied patch log level to success 2020-07-13 22:33:03 +02:00
Megamouse
55e907385b
patch_manager: warning for incompatible patches (#8535)
* patch_manager: warning for incompatible patches

This will open a warning dialog whenever the patch manager is opened and incompatible patches are detected.

* Apply suggestions from code review

Co-authored-by: Bird Egop <sampletext32@bk.ru>

Co-authored-by: Bird Egop <sampletext32@bk.ru>
2020-06-30 21:35:15 +02:00
Megamouse
6742fad753 patch_manager: fix import, use constants as keys
And improve import logging again
2020-06-30 00:45:17 +02:00
Megamouse
c6190fa95d patch_manager: improve import logging
imported_patch.yml has to be the latest version too
2020-06-29 23:56:27 +02:00
Megamouse
98eb0cd3f2 patch_manager: fix legacy patches again 2020-06-29 23:56:27 +02:00
Megamouse
541e20cbec patch_manager: allow Notes as sequence 2020-06-29 23:56:27 +02:00
Megamouse
a5368d766a patch_manager: prefer specific > global (per hash) 2020-06-29 23:56:27 +02:00
Megamouse
cf2e2a0511 patch_manager: one patch per group across hashes 2020-06-29 23:56:27 +02:00
Megamouse
3a17eefde7 patch_manager: restrict All serials to All titles 2020-06-29 23:56:27 +02:00
Megamouse
c72a6f8e6f patch_manager: prefer serial patches over All 2020-06-29 23:56:27 +02:00
Megamouse
6a486d3402 patch_manager: only apply one patch per group
So far this was purely handled in the GUI
2020-06-29 23:56:27 +02:00
Megamouse
e43db24b2c patch_manager: add All override
All can now be used as a key for title, serial and/or app version.
If you check a patch for all ... then the patch will be applied regardless of what's checked for the game specifically, because we do not save 'Unchecked' patches.
2020-06-29 23:56:27 +02:00
Megamouse
12dded403f patch_manager: implement serials and app_versions 2020-06-29 23:56:27 +02:00
Eladash
d9e3f0ccfa types.h: Fix ASSUME macro side-effects mismatch between compilers 2020-06-29 03:10:05 +01:00
Eladash
2483cc6f8d Fix race in Crypto/unedat.cpp, Make NPDRM keys usage atomic 2020-06-28 23:26:10 +01:00
Eladash
9cb4402c16 Make error_code::value member private 2020-06-27 09:02:55 +01:00
Megamouse
abec850379 patch_manager: add hash to applied log message 2020-06-24 15:31:55 +02:00
Megamouse
431e0eb30c patch_manager: fix missing config path 2020-06-24 15:31:55 +02:00
Megamouse
5affc459a2 patch manager: Allow partial patch file import 2020-06-21 15:48:30 +02:00
Megamouse
cd4ed11700 patch manager: Add patch removal to context menu
Also avoid saving empty patch maps
2020-06-21 15:48:30 +02:00
Megamouse
fd2cd84555 patch manager: Skip lower patch_versions 2020-06-21 15:48:30 +02:00
Megamouse
bf978ac8ca patch manager: properly check patch versions
Also abort patch import of lower patch versions
2020-06-21 15:48:30 +02:00
Megamouse
d3c6472c0f patch manager: replace Version and Title keys
With Patch Version and Game Title
2020-06-21 15:48:30 +02:00
Megamouse
1c7a318413 patch manager: move try catch block to yaml.cpp 2020-06-21 15:48:30 +02:00
Megamouse
591624b96c patch manager: avoid patch import inconsistencies
Save the original patch value instead of the interpreted value
2020-06-21 15:48:30 +02:00
Megamouse
2323cd2a2d patch manager: move title + serials to patch level
Also bump patch file version to 1.1
2020-06-21 15:48:30 +02:00
Megamouse
cc5c89539b patch manager: improve error handling
There shouldn't be much left that can crash this thing
2020-06-21 15:48:30 +02:00
Megamouse
a7ee059419 patch manager: import patches 2020-06-21 15:48:30 +02:00
Eladash
d86c9a2549 sys_mmapper: rewrite page fault thread notifications
* Fix a corner case where SPU thread has the same ID as a PPU thread.
* Fix a potential deadlock on Emu.Stop() while sending event in EBUSY loop.
* Thread specific notifications.
2020-06-18 20:13:54 +03:00
RipleyTom
3d3c91d654
std header guard in BEType.h (#8448) 2020-06-16 01:06:15 +01:00
Eladash
731d4330fe
v128: A few optimizations (#8432) 2020-06-15 17:24:04 +03:00
Malcolm Jestadt
746615a937 Fix embedded spu elf patching 2020-06-13 23:18:44 +02:00
Megamouse
22b1cc765a patch manager: hotfix for legacy patches
Assignment of invalid YAML nodes is not possible after all
2020-06-11 22:23:02 +02:00
Megamouse
4a03f06175 patch manager: add checkbox for "enable legacy" 2020-06-11 16:31:49 +02:00
Megamouse
2dca8d84e1 patch manager 2020-06-11 13:15:25 +02:00
Nekotekina
3b8e7d0967 Implement v128::fma32f 2020-06-07 22:44:07 +03:00
Eladash
f0cdd8ace6 PPU: Implement PPU Traps Stubbing option 2020-05-27 22:39:29 +03:00
Eladash
b8f86eb78d SPU: Fix page faults notifications 2020-05-23 00:48:28 +03:00
Nekotekina
ae519200ed Implement std::countl_zero and friends
Trying to fix macos build.
2020-05-18 00:51:57 +03:00
Eladash
201d54ee08 PPU interpreters: Implement AltiVec NaNs precedence and data preservation 2020-05-18 00:35:06 +03:00
Nekotekina
e1042bc631 Get rid of "module" keyword
Workaround some intellisense problems.
2020-05-06 18:20:11 +03:00
Nekotekina
a6f0b1b532 Fix get_thread_affinity_mask (Linux/BSD)
Uninitialized variable (facepalm).
2020-05-05 21:44:32 +03:00
MSuih
b18dcd7660 Add fs::error for when disk is full 2020-05-02 14:54:41 +03:00
Nekotekina
31035608ee Use utils::get_cpu_brand when applicable 2020-05-01 22:00:57 +03:00
Nekotekina
f6200ba635 Implement thread_ctrl::get_process_affinity_mask() 2020-05-01 22:00:56 +03:00
Eladash
0db91aa56b Fix address_range start_length() constructor
Fixes an underflow when constructing start_length(0, 0).
2020-04-29 06:47:35 +03:00
Nekotekina
d66bdf1653 TSC calibration improvements
Bind main thread to a single core for calibration.
Issue RDTSC after clock probing, may improve accuracy.
2020-04-29 00:09:40 +03:00
Nekotekina
76294beae1 Implement thread_ctrl::get_thread_affinity_mask() 2020-04-29 00:09:40 +03:00
Nekotekina
c7fe8567b8 Experimental squashing of reservation memory area.
Enables trivial synchronization between shared mem.
Reduces memory usage, but potentially degrades performance.
Rename an overload of vm::passive_lock to vm::range_lock.
2020-04-16 02:25:43 +03:00
Nekotekina
b1b67a13c6 Revert "Replace rotate utils with std::rotl" (partial)
This reverts commit 4d8bfe328b.
2020-04-14 19:45:53 +03:00
Nekotekina
4d8bfe328b Replace rotate utils with std::rotl
More include cleanup.
2020-04-14 16:05:58 +03:00
Nekotekina
f72af2973d Replace utils::popcnt32 with std::popcount
Cleanup includes.
2020-04-14 16:05:58 +03:00
Nekotekina
032e7c0491 Replace utils::cntlz{32,64} with std::countl_zero 2020-04-14 16:05:58 +03:00
Nekotekina
d0c199d455 Replace utils::cnttz{32,64} with std::countr_{zero,one}
Make #include <bit> mandatory.
2020-04-14 16:05:58 +03:00
Eladash
926e0467cf Another ::as_rvalue fixup 2020-04-13 04:34:10 +01:00
sampletext32
c69691f19b Fix various explicitness, laziness, hard codes 2020-04-12 17:29:42 +03:00
Eladash
cb14805d78 rsx fp/vp analyzers: Fix strict type aliasing and improve codegen 2020-04-12 16:48:43 +03:00
Eladash
c3a4e57efe Reduce log level of page fault notifications
Log current hle function.
2020-04-12 10:30:38 +01:00
Eladash
8e61c65c0d Fixup ::as_rvalue 2020-04-11 22:55:55 +03:00
Eladash
141d62fbf9 Implement ::as_rvalue 2020-04-11 21:58:36 +03:00
Nekotekina
1b68f90e42 Tweak TSC calibration
Round to 3 digits after dot (count in MHz).
2020-04-09 16:23:33 +03:00
Nekotekina
6c8d844ec5 PPU LLVM: fix crash on damaged cache files 2020-04-07 16:51:35 +03:00
Nekotekina
91d80aa7b9 Implement jit_compiler::check
Instead of checking file existence (because file may be damaged).
2020-04-07 16:09:47 +03:00
Eladash
5834a466cd
Fix utils::get_tsc_freq() (#7974)
Use magic static for once-initialization
2020-04-07 11:02:12 +03:00
Nekotekina
3c3ccdbf1e Round TSC calibration result towards speculated CPU base frequency 2020-04-07 00:10:08 +03:00
Nekotekina
15f01a1bf6 Implement TSC calibration
Try to get rough TSC frequency by sampling it.
2020-04-07 00:10:08 +03:00
Eladash
72d1efa383 rsx: Batch transform contants load methods 2020-04-05 15:21:56 +03:00
RipleyTom
f36686b1a7 Always launch rpcs3.exe on restart 2020-04-05 14:27:13 +03:00
Nekotekina
7f9d41ac47 Implement cfg::uint for unsigned integers 2020-04-04 21:38:40 +03:00
Whatcookie
dd8a3eaac5
Util: Add FMA and INVARIANT_TSC detection (#7937) 2020-04-04 19:12:06 +01:00
Nick Renieris
1231274e0f CPUThread: Split dump() info to separate methods 2020-04-03 01:36:35 +01:00
Nekotekina
ba7f4af02b CFG: minor cleanup 2020-03-31 21:50:23 +03:00
Megamouse
fc3a134e7d Emu: make "Silence All Logs" dynamic 2020-03-31 18:06:37 +02:00
Megamouse
a76a4d8136 change sig_log to SIG 2020-03-31 18:06:37 +02:00
JohnHolmesII
ad13075b36 Build: Fix potential issue with Windows builds not receiving correct
branch info
2020-03-29 14:10:07 +03:00
Nekotekina
aae338a91c named_thread_group: add a default constructor 2020-03-28 17:17:51 +03:00
Jan Beich
777f0a7c82
Implement IsDebuggerPresent on BSDs (#7880) 2020-03-28 01:57:41 +00:00
JohnHolmesII
6712ac0a72 Build: Do not warn for local builds 2020-03-27 23:00:22 +03:00
JohnHolmesII
70d6a12894
CI: Port Windows build to Azure Pipelines (#7757)
* CI: Port Windows build to Azure Pipelines from Appveyor

* CI: Split Windows build into scripts

* CI: Remove Appveyor

* CI: Add GitHub Release deployment to Azure Windows Build

* VCS: Add full branch name function to rpcs3_version

The STRINGIZE macro was a little awkward, and difficult to control
at configure time. Since other version information is already
included, the full branch name is now added as a function. It's
runtime instead of compile-time checking, but it seems worth it.

* CI: Overhaul Windows setup script

Previously, there was no way of forcing a re-download
of cached dependencies when they were replaced by new ones. In
addition, there was really no verification of downloads or cache.
Now, changing a few lines at the top of the file will automagically
force a cache update.
2020-03-27 16:37:27 +03:00
RipleyTom
cd4eed0704 Gives ANSI path to curl CURLOPT_CAINFO 2020-03-27 14:23:20 +03:00
Nekotekina
b33648fd14 Implement SAFE_BUFFERS as __attribute__((no_stack_protector))
It was doing nothing outside of MSVC. Still seems doing nothing.
2020-03-25 11:18:48 +03:00
Nekotekina
49d8731c1c Thread.h: fix warning 2020-03-21 13:49:41 +03:00
Nekotekina
7f5dd1dd62 Fix thread_base::join 2020-03-21 10:36:04 +03:00
Nekotekina
c577bd2111 Implement thread_state::errored
State after calling thread emergency_exit() function.
Also default-construct thread result in this case.
2020-03-20 21:31:27 +03:00
Nekotekina
aa5c6c4d2b Cleanup std::is_pod usage (deprecated in C++20) 2020-03-18 18:28:46 +03:00
Eladash
c9b5ba4a5c BEType.h: use common initial sequance in v128
Partially obey 'strict type aliasing' rule.
2020-03-17 18:22:13 +03:00
Eladash
cb4192bce9 vm: Log all guest memory bases at startup 2020-03-14 18:30:14 +02:00
Nekotekina
04dedb17eb Disable exception handling.
Use -fno-exceptions in cmake.
On MSVC, enable _HAS_EXCEPTION=0.
Cleanup throw/catch from the source.
Create yaml.cpp enclave because it needs exception to work.
Disable thread_local optimizations in logs.cpp (TODO).
Implement cpu_counter for cpu_threads (moved globals).
2020-03-12 16:03:08 +03:00
Nekotekina
6bd96a4590 Fix thread_base::finalize (and emergency_exit, collaterally)
Forgot to reset futex callback. Could cause crashes.
2020-03-10 23:23:32 +03:00
Bird Egop
4e25daffa6
Explicitly rename has_512 into has_avx512 (#7751) 2020-03-10 19:21:00 +03:00
Nekotekina
1678b37aa0 Use TRAP on segfault with debugger (Linux) 2020-03-10 14:06:06 +03:00
Nekotekina
adfd8ab43c Break in the debugger in thread_ctrl::emergency_exit
Implement IsDebuggerPresent analog for non-Windows systems.
2020-03-10 13:28:24 +03:00
Nekotekina
87d4b14ca9 Pause only on fatal messages
Also make some access violation an error since we don't pause on it.
2020-03-10 11:26:42 +03:00
Nekotekina
07e1766a7c Implement thread_ctrl::emergency_exit()
Replace exception throws with this.
2020-03-08 15:11:02 +03:00
Nekotekina
12a3cdf0e8 Move Log.cpp to util/logs.cpp
Minor cleanup
2020-03-07 13:31:10 +03:00
Nekotekina
e4a81b1d13 Move Log.h to util/logs.hpp 2020-03-07 12:29:23 +03:00
Nekotekina
a166d3680e Don't throw on invalid whence (return fs::error::einval) 2020-03-07 11:52:54 +03:00
Nekotekina
8461a5cbe2 Add fs::error::unknown, don't throw 2020-03-07 11:22:04 +03:00
Nekotekina
66b0b78055 Logs.cpp: more code moved to main.cpp 2020-03-07 11:15:44 +03:00
Nekotekina
2209be5216 Logs: remove mem-mapped buffer and move instance lock to main.cpp
Part of the work to untangle utilities from RPCS3-specific things.
2020-03-07 10:49:09 +03:00
Adiost
f776910966 Qt/Input: new ds4 LED settings 2020-03-05 22:37:48 +01:00
Nekotekina
7a8772dafa Replace std::string::npos with umax 2020-03-05 14:05:23 +03:00
Nekotekina Aux1
250736ece5 Fix warnings in emucore 2020-03-04 21:23:34 +03:00
Eladash
bb1b4bac9b Update thread_base::notify_abort() 2020-03-04 14:39:41 +03:00
Nekotekina
8d847d6f1c Thread: internal cleanup
Use different, simpler algorithm in wait_for.
Although the very idea of such notifications was rotten.
2020-03-03 20:26:37 +03:00
Nekotekina
d594490329 Thread: removed unused wait() with predicate.
It doesn't work this way anyway.
2020-03-03 18:33:02 +03:00
Nekotekina
6c66153372 Threads: move linux m_timer to static thread_local variable
Allows lazy allocation of the timer handle.
2020-03-03 18:33:02 +03:00
Nekotekina
5b0476e772 Update LLVM to new llvm-mirror (LLVM 11)
Use clang-cl to build LLVM on Windows.
2020-03-03 18:33:02 +03:00
Nekotekina
cb252b1ce2 Partial revert of 5871c4e93f 2020-02-29 18:39:15 +03:00
Nekotekina
d37e770497 Shut up all channels on exit at some point
Some object are getting destroyed.
Makes valgrind more quiet.
2020-02-29 18:29:32 +03:00
Eladash
5871c4e93f Segfault/exceptions reports: Get rid of unhandled exeption handler, log memory bases
* Getting rid of handled exception handler fixes 2 things:
- Visual Studio debugger won't force it's own handler on unhandled exception.
- SPU segfaults in recompiler can now be reported.

* Log vm memory bases.
2020-02-29 17:16:36 +03:00
Nekotekina
f72971f19f Implement named_thread_group 2020-02-29 16:55:25 +03:00
Nekotekina
799c3f9708 Remove global thread counter (again)
Seems fine without it now.
2020-02-28 21:50:19 +03:00
Nekotekina
490f58ff3c Try to purge thread_state::detached
It's rarely necessary, but can cause unexpected problems.
2020-02-28 21:11:13 +03:00
Nekotekina
65eeee0f4c Remove cancerous lf_value<>
Replace thread names (generic, PPU, SPU) with new shared pointers.
Devirtualize cpu_thread::get_name (used in single case).
2020-02-28 18:54:46 +03:00
Nekotekina
bf4bdf73b7 Remove unused lf_hashmap
There are better ways to implement this.
2020-02-28 18:54:46 +03:00
gamerforEA
93552a5958 Apply some Clang-Tidy fixes 2020-02-27 00:38:55 +03:00
gamerforEA
49294a3dd2 Add missing include guards 2020-02-27 00:38:55 +03:00
Nekotekina
a0d2bc9769 named_thread: allow default constructor only with thread_name
In C++20, lambdas may be default-constructible allowing nasty stuff.
2020-02-26 21:23:30 +03:00
Eladash
0d4f8ca234 fs: Make fs::get_dir_size able to report an error 2020-02-26 18:17:13 +00:00
Nekotekina
b083edccd3 Threads: remove some unused code (remnants from thread spawn) 2020-02-25 15:57:57 +03:00
Nekotekina
b59bb16fad Threads: removed outdated on_abort detection deemed unnecessary
May cause regressions.
2020-02-25 15:48:25 +03:00
Nekotekina
3f943945a7 Threads: Remove unused on_wait() detection to simplify code 2020-02-25 15:36:08 +03:00
Nekotekina
7eebe06931 Restore thread counter (world may be not ready yet)
Remove dumb 1300ms timeout.
2020-02-25 11:51:19 +03:00
Megamouse
f7666f44da Untangle GUI and input includes 2020-02-24 16:31:01 +01:00
Nekotekina
e772dde3cc Add more thread information (context switch, page faults).
Only implemented on Linux, possibly works on some BSD.
2020-02-23 16:21:26 +03:00
Nekotekina
8b4b859091 Remove "thread_ctrl::spawn" 2020-02-23 15:03:38 +03:00
Nekotekina
fa0bf6a92c Fix "unknown pragma" on zlib clang workarounds 2020-02-23 10:42:35 +03:00
JohnHolmesII
7eccbecb2f File.cpp: Make var ref instead of copy 2020-02-23 01:22:38 +01:00
Eladash
6bb083a77c
Add more information for segfault reports (#7538) 2020-02-22 10:58:42 +00:00
Megamouse
0dd417e5f2 Add more game window title options 2020-02-20 20:07:25 +01:00
Nekotekina
4d1f818162 umax: restore "natural" operation order 2020-02-20 17:13:41 +03:00
Nekotekina
2f255a528e Another attempt on umax 2020-02-20 15:18:31 +03:00
Nekotekina
92e3eaf3ff Fix signed-unsigned comparisons and mark warning as error (part 2). 2020-02-19 22:54:58 +03:00
Nekotekina
771eff273b First part of fixing sign-compare warning (inside be_t). 2020-02-19 22:54:58 +03:00
Nekotekina
0cf35e3b22 Implement umax global variable (max unsigned value)
Implements operators == and != comparisons.
2020-02-19 22:54:58 +03:00
Nekotekina
0ee2f761ae Fix warning in lf_fifo<>::push_begin() 2020-02-18 14:59:11 +03:00
Nekotekina
f08c778d2c Use more starts_with/ends_with.
Remove ends_with global func.
2020-02-18 14:53:23 +03:00
Nekotekina
6a1a0bf48d Use std::endian for endianness test
Remove legacy IS_LE_MACHINE IS_BE_MACHINE macro.
2020-02-17 21:33:24 +03:00
Megamouse
fe75311be2 move config structs to own files and clean up some headers 2020-02-17 15:08:17 +03:00
Eladash
606693a9f7 Avoid closing the emulator after access violation 2020-02-13 14:14:28 +03:00
Nekotekina
e8988faed5 geometry.h: remove MSVC workaround 2020-02-12 12:50:42 +03:00
Nekotekina
7137142351 geometry.h: more cleanup
Remove wrong constructors.
2020-02-12 12:50:42 +03:00
Nekotekina
bcbe324534 geometry.h: make conversion operators explicit
It requires static_cast<> to call them.
2020-02-11 13:21:45 +03:00
Eladash
639245c071 Make handle_access_violation noexcept 2020-02-10 17:27:34 +03:00
Nekotekina
034267adb2 Compilation fix 2020-02-10 16:57:56 +03:00
Nekotekina
c0f80cfe7a Use attributes for LIKELY/UNLIKELY
Remove LIKELY/UNLIKELY macro.
2020-02-05 10:42:34 +03:00
Nekotekina
1a78e0e80c Make RPCS3 compile in C++2a mode 2020-02-04 23:43:55 +03:00
Nekotekina
0a2874405d logs: allow disabling RPCS3.log.gz
Disabled by creating a directory with the same name.
2020-02-02 14:32:29 +03:00
Nekotekina
87a5dd66ab Move logs::channel registration out of the constructor
Allow constinit initialization of logs::channel.
2020-02-02 14:12:54 +03:00
Nekotekina
6dfd97f0b6 Modernize SPU logging (spu_log variable) and remove log legacy
Remove legacy macro (LOG_ERROR, etc)
2020-02-01 11:52:52 +03:00
Nekotekina
327bb2d8f0 Modernize PPU logging (ppu_log variable) 2020-02-01 11:52:24 +03:00
Nekotekina
21f7b0ff0f Remove HLE log channel 2020-02-01 11:52:24 +03:00
Nekotekina
15391f45d0 Modernize RSX logging (rsx_log variable) 2020-02-01 11:52:22 +03:00
Nekotekina
3c0bd821c8 Give log channels fancier names
Improve LOG_CHANNEL macro to accept custom name.
2020-02-01 10:43:43 +03:00
Nekotekina
ec80932c21 logs: use relaxed atomics
May help with optimizations.
2020-02-01 10:30:03 +03:00
Nekotekina
3eca2d5d6c Remove legacy LOADER log channel 2020-02-01 07:49:38 +03:00
Nekotekina
d9a0619ddd Remove legacy GENERAL log channel
Add some more log channels instead.
2020-02-01 07:49:38 +03:00
Nekotekina
d5f019c3d3 Implement logs::silence
Disables all log channels.
Also disables unsupported "default" log level for log channels.
2020-01-31 16:44:48 +03:00
Nekotekina
a867522b16 logs: implement logs::get_channels() 2020-01-31 16:44:48 +03:00
Nekotekina
26cccead6e logs: remove legacy MEMORY channel
Add channels vm_log, sig_log.
2020-01-31 16:44:48 +03:00
Nekotekina
e7b24461ec Implement logs::get_level 2020-01-31 12:09:52 +03:00
Nekotekina
007a7a5859 Fixup for LOG system.
Register all channels at program initialization and allow duplicates.
2020-01-31 12:09:52 +03:00
Silent
9f678cc47a Fix code relying on initialization order
Allows Debug - LLVM to boot
2020-01-31 11:23:55 +03:00
RipleyTom
795bc5d52b Add mutex guard for s_unfire 2020-01-28 19:16:16 +03:00
Malcolm Jestadt
ad8988afd3 Embedded SPU elf patching
- PS3 games include both PPU and SPU code in their PPU executables, so to make patching games that make use of the same SPU libraries easier, we add a system to find and patch them.
- Patches for this system still use SPU LS (Local Storage) addresses despite the fact that we aren't loading anything into SPU LS at this time. The patches are checked against each segment and patched in place.
2020-01-28 02:13:37 +03:00
Nekotekina
0f87c6c7c3 Make system config thread-safe (almost) 2020-01-20 21:51:28 +03:00
Nekotekina
7fcc49004d lf_fifo: fix UB and fix size()
Simplify internal counter to atomic<u64>.
Make size() return correct difference between push and pop pointers.
2020-01-17 00:24:07 +03:00
kd-11
071e73a68e geometry: Allow basic color arithmetic 2020-01-07 21:31:19 +03:00
Silent
974bce19ed Use path_append instead of operator + to concat paths
This allows to cleanly prevent double // slashes when appending paths
While this should not be a problem, Windows seems to have problems
with such paths when paths are very long - and preventing this
is trivial enough.
2019-12-31 19:24:19 +03:00
Silent
9e66f36942 Handle ERROR_FILENAME_EXCED_RANGE error on Windows 2019-12-31 19:24:19 +03:00
Megamouse
ef6f565dbd silence some annoying warnings 2019-12-28 15:40:57 +01:00
Nekotekina
70e26eeb45 LLVM: compress PPU cache
Compress PPU modules to .gz (backward compatible with uncompressed cache)
2019-12-27 23:12:16 +03:00
Nekotekina
baf9a20c08 Fix UB in to_u8
Possible signed shift overflow.
2019-12-23 22:56:18 +03:00
Nekotekina
068450d4fe CPUTranslator: detect FMA feature 2019-12-20 21:11:07 +03:00
Eladash
db4041e079 Implement rounded_div
Round-to-nearest integral based division, optimized for unsigned integral.
Used in sceNpTrophyGetGameProgress.
Do not allow signed values for aligned_div(), align().
2019-12-20 14:47:04 +03:00
Nekotekina
e3e97da7bb LLVM: remove cascadelake workaround and update LLVM fork
VPTERNLOG fix may be necessary.
2019-12-13 16:19:08 +03:00
Nekotekina
dbece4d00f LLVM: add workaround for cascadelake CPU
Need to investigate it later.
2019-12-13 02:11:21 +03:00
Nekotekina
69e81da57b Fix some warnings 2019-12-13 02:08:52 +03:00
Eladash
5631382623 sys_spu: Fix SPU Thread Id
* Removed wrong code in sys_spu_thread_group_terminate.
* SPU Thread ID is accurate, including 5th thread id "rule".
* Fixed possible use-after-free access of spu_thread::group member.
* RawSPU ID management simplified.
2019-12-06 19:59:29 +03:00
Eladash
c3862b74b1 Compilation fix for NetBSD (#7067) 2019-12-05 11:28:00 +03:00
Nekotekina
835892aa51 C-style cast cleanup VII 2019-12-05 02:10:15 +03:00
Nekotekina
bf11a28fb5 C-style cast cleanup IV 2019-12-01 22:12:33 +03:00
Nekotekina
28eacc616a C-style cast cleanup III 2019-12-01 00:32:44 +03:00
Nekotekina
5b9df53c13 C-style cast cleanup (partial)
Replace C-style casts with C++ casts.
2019-11-29 00:35:23 +03:00
Megamouse
d91f8193b0 settings: enable dynamic reload of some emu values 2019-11-27 10:34:03 +01:00
Nekotekina
fcc841eaa1 LLVM: Add workaround for znver2 2019-11-14 19:09:34 +03:00
msuih
1af948a7d4 Fix bitfield warning 2019-11-12 21:36:29 +03:00
Emmanuel Gil Peyrot
0ff5938b1f Utilities: Remove unused headers
AtomicPtr.h has never been used since its introduction in
da7472fe81.

Same for Interval.h, since 4fedf5749e.

event.h’s last usage got removed in
70e2873e69.
2019-11-12 19:51:57 +03:00
Emmanuel Gil Peyrot
56f82d2701 rsx: Wrap gsl::span definition into Utilities/span.h 2019-11-09 20:00:50 +01:00
Emmanuel Gil Peyrot
72cdf0b04c Replace gsl::span’s implementation with tcbrindle’s
This implementation optimises correctly on all relevant compilers,
unlike GSL’s which gave extremely slow code on any compiler other than
MSVC.

Supersedes #6948.
2019-11-09 19:30:06 +01:00
Emmanuel Gil Peyrot
ef368c5171 rsx: Replace gsl::byte with C++17’s std::byte 2019-11-09 19:30:05 +01:00