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