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
Nekotekina
218758183d
Avoid exceptions in cfg::try_to_int64 and cfg::try_to_enum_value
...
Use std::from_chars plus minimal hex prefix support.
2019-11-08 19:27:11 +03:00
Nekotekina
587ae17aa2
Simplify fmt::throw_exception
...
Gradual exception deprecation: disallow choosing exception type.
However, the function itself can remain here forever.
2019-11-08 19:27:11 +03:00
Nekotekina
b338014639
Don't throw in operators _u16 _u32 _u64
2019-11-08 19:27:11 +03:00
Nekotekina
742bd633d8
Remove fs::file::set_delete
...
Since it's Windows-only functionality with limited use.
2019-11-08 19:27:11 +03:00
Eladash
d2f3ada312
bf_t: Remove <limits> lib dependency
2019-11-03 14:59:47 +03:00
Rajko Stojadinovic
b49b4c8096
Rewrite the way LLVM JIT does memory allocation to allow use of more than one contiguous segment ( #6771 )
2019-10-29 01:01:07 +03:00
Nekotekina
46d692d5a6
Fix long path support in fs::statfs on Windows
2019-10-27 19:17:27 +03:00
Nekotekina
839e088ae5
Fix long path support on Windows for UNC path
...
Such as network locations.
2019-10-27 18:53:40 +03:00
Nekotekina
7a32af7a57
Implement lf_bunch<>
...
Simple concurrent container without erase support.
2019-10-26 21:24:12 +03:00
Nekotekina
2e85b5ebaa
SPU: Make JIT allocator lock-free on all platforms
2019-10-26 21:24:12 +03:00
Nekotekina
0c06456950
Simplify lf_queue<> (second attempt)
...
It doesn't need reinterpret_cast anymore.
2019-10-26 21:24:12 +03:00
MSuih
f3ed26e9db
Small warnings cleanup ( #6671 )
...
* Ignore more warnings
These are intentional
* Signed/unsigned mismatch when comparing
* Explictly cast values
* Intentionally discard a nodiscard value
* Change ppu_tid to u32
* Do not use POSIX function name on Windows
* Qt: Use horizontalAdvance instead of width
* Change progress variables to u32
2019-10-25 13:32:21 +03:00
RipleyTom
a32f979814
Conserve error value when trying to open log file
2019-10-24 22:22:15 +03:00
RipleyTom
c89ad38ef1
Check if we're in the process of restarting when trying to open the log
2019-10-24 18:36:28 +02:00
Nekotekina
6867fc5f06
Revert "Simplify lf_queue<>"
...
This reverts commit 050e5b4aec
.
2019-10-23 21:55:31 +03:00
Nekotekina
050e5b4aec
Simplify lf_queue<>
...
It doesn't need reinterpret_cast anymore.
2019-10-23 16:01:14 +03:00
Nekotekina
6e19881b82
Update LLVM (10)
2019-10-23 16:01:14 +03:00
Emmanuel Gil Peyrot
9d1b7af2eb
Avoid std::move() for copy elision
...
This could disable zero-copy optimisations, which is the opposite of
what we want.
2019-10-22 16:11:43 +03:00
RipleyTom
9f9ac4b696
Auto-updater
2019-10-22 01:51:50 +02:00
Marin Baron
90aaaceba0
Debug build : Check ObjectFile before reading.
...
Check LLVM ObjectFile state before access to avoid llvm assertion failure.
Expected<T> must be checked before access or destruction.
Expected<T> value was in success state. (Note: Expected<T> values in success mode must still be checked prior to being destroyed).
2019-10-21 00:40:12 +03:00
Nekotekina
3304cfacde
cond_variable: improve wait a bit
...
Mask signal bits
2019-10-19 14:02:13 +03:00
Nekotekina
db7042b986
Restore using keyed events in waitable atomics on Windows
2019-10-18 23:08:00 +03:00
Nekotekina
7ca76ae5a8
Workaround fs::create_path for drive roots
...
Should fix the regression from #6763
2019-10-15 18:57:16 +03:00
Nekotekina
eafbc77c0d
SPU LLVM: Always use linux-gnu target triple (affects Windows)
...
Unify internal code generation to make better use of GHC calling convention.
Ideally, it would just work on Windows as well, but some random bug appeared.
This bug was causing freezes on SPU LLVM compilation.
This commit desperately attempts to workaround it.
2019-10-15 18:04:50 +03:00
Nekotekina
6b1df1ce31
fs: add long path support on Windows
...
Extend path limit with \\?\ prefix.
2019-10-14 19:42:13 +03:00
Nekotekina
c4ccac9a9c
[TSX] Fix XABORT handling
...
Break repeat loop after explicit transaction abort.
May have performance consequences.
2019-10-13 19:35:12 +03:00
Nekotekina
ac712bf4e3
lf_queue: remove explicit notify(), notify in push() instead
...
Should be cheap enough now if there are no waiters.
2019-10-12 22:45:17 +03:00
Nekotekina
5624b001ae
lf_queue: add range-for support (endless loop with waiting)
2019-10-12 22:37:52 +03:00
Nekotekina
6a443c0fbd
Deprecate thread_ctrl::spawn
2019-10-12 19:14:50 +03:00
Nekotekina
8e21f4d5d4
Remove g_thread_count
...
Unnecessary global which is bad to reason about.
Possibly fix a but in SPRX loader.
2019-10-12 16:45:41 +03:00
plappermaul
925f2ce02f
Use Linux timers for sleeps up to 1ms ( #6697 )
...
* Use Linux timers for sleeps up to 1ms (v3)
The current sleep timer implementation basically offers two variants. Either
wait the specified time exactly with a condition variable (as host) or use a
combination of it with a thread yielding busy loop afterwards (usleep timer).
While the second one is very precise it consumes CPU loops for each wait call
below 50us. Games like Bomberman Ultra spam 30us waits and the emulator hogs
low power CPUs. Switching to host mode reduces CPU consumption but gives a
~50us penalty for each wait call. Thus extending all sleeps by a factor of
more than two.
The following bugfix tries to improve the system timer for Linux by using
Linux native timers for small wait calls below 1ms. This has two effects.
- Host wait setting has much less wait overhead
- usleep wait setting produces lower CPU overhead
2019-10-09 20:03:34 +03:00
Nekotekina
8f604ddded
Fix log format misuse
...
Harden log channel methods against non-constant string.
2019-10-09 02:14:52 +03:00
Nekotekina
a29d4150df
GDB Server: fix and cleanup
...
Move source files to Emu/GDB.cpp, GDB.h
Remove "WITH_GDB" option, enable GDB Server by default.
Change class name to gdb_thread.
Alias for external access gdb_server.
Change config option name to "GDB Server"
Bind on 127.0.0.1 by default.
2019-10-09 00:11:44 +03:00
Nekotekina
aa659f3c36
Fix minor warning
2019-10-06 20:40:53 +03:00
Nekotekina
cf13dee1f3
Prioritize vip_lock in shared_mutex
...
Should fix some deadlock issues.
2019-10-06 16:03:38 +03:00
Nekotekina
8031180373
Add dummy alert param to thread_ctrl::wait API
2019-10-06 16:03:10 +03:00
Rajko Stojadinovic
297e3c5996
Make windows_file::stat return the same mtime as fs::stat
2019-10-05 14:25:34 +03:00
kd-11
4a19a2dd24
rsx: Explicity describe transfer regions for both source and destination blocks
2019-10-04 18:10:46 +03:00
Nekotekina
21885264f7
Improve to_se conversion template
...
Add sizeof check instead of filtering out 1-byte types.
2019-09-28 15:39:50 +03:00
Nekotekina
bd1a24b894
Tidy endianness support (se_t) implementation
...
Move se_t and se_storage to util/endian.hpp
Use single template instead of two specializations.
Add minor optimization for MSVC.
Remove v128 dependency.
Try to enable intrinsics for unaligned data.
Fix minor bug in u16/u32/u64 specializations.
2019-09-28 15:39:50 +03:00
kd-11
2275259bf5
rsx: Properly scale overlay passes to match drawable area
2019-09-28 13:24:14 +03:00
Nekotekina
50fc5dfde5
Use g_fxo for rsx::rsx_replay_thread
2019-09-26 23:26:36 +03:00
Megamouse
4594148409
Input: move some pad handler logic to the parent class
2019-09-24 21:09:24 +02:00
Nekotekina
8f47f9517a
Fix fs::create_path
...
Don't try to create already existing parents
2019-09-24 16:18:28 +03:00
Nekotekina
aa8a7b3e8a
Make errors in Emu::Init verbose and don't crash
...
Allow TTY.log to be disabled if file access failed
Add fs::error::isdir
2019-09-24 05:01:00 +03:00
Nekotekina
9710473a2e
atomic.hpp: use native semaphores on Windows
...
Windows: drop keyed events
Linux: keep using native futex
Implement unused POSIX semaphore path
Implement fallback semaphore with pure std (OSX, BSD, etc)
2019-09-24 05:01:00 +03:00
Nekotekina
feee3838eb
Revert "Revert "Remove shared_cond
and simplify reservation waiting""
...
This reverts commit b70c08a2e8
.
2019-09-24 05:01:00 +03:00
Nekotekina
3121fecc8f
cond_variable: fix warning in cond.h for MSVC
2019-09-21 03:59:43 +03:00
Nekotekina
a797b350a0
Improve strcpy_trunc
...
Zero all remaining array
2019-09-21 03:59:43 +03:00
Nekotekina
3092914527
typeindices.hpp: add typeindex() helper
2019-09-19 02:16:14 +03:00
Nekotekina
c7bf6421f4
typeindices.hpp: rename typeinfo_v to typelist_v
2019-09-19 02:16:14 +03:00
Nekotekina
75941e62a8
named_thread: implement default thread name support
2019-09-17 02:46:34 +03:00
Nekotekina
b70c08a2e8
Revert "Remove shared_cond
and simplify reservation waiting"
...
This reverts commit 0a96497e13
.
2019-09-14 00:02:48 +03:00
Nekotekina
c9170bbb88
Fix lf_queue::wait
...
Remove incorrect loop
2019-09-13 23:52:18 +03:00
Nekotekina
c1b0934f72
Simplify thread_base::join()
...
Use waitable atomics
2019-09-10 19:25:39 +03:00
Nekotekina
0a96497e13
Remove shared_cond
and simplify reservation waiting
...
Use atomic wait for reservations
Cleanup some obsolete code
2019-09-10 19:25:39 +03:00
Nekotekina
d13ff285d1
Rewrite cond_variable
to use waitable atomics
...
Increase max_timeout and fix max_timeout usage
2019-09-10 19:25:39 +03:00
Nekotekina
92a75cfa80
Remove unique_cond
...
Not very useful.
2019-09-10 19:25:39 +03:00
Nekotekina
a45f86a4a2
Remove notifier
class
...
Poorly implemented condition variable.
2019-09-10 19:25:39 +03:00
Nekotekina
b91661ae71
Remove timeout support from lf_queue::wait
...
Add notify method and use atomic wait
2019-09-10 19:25:39 +03:00
Nekotekina
faba366f89
named_thread: install atomic wait callback
2019-09-10 18:48:46 +03:00
Jan Beich
53e7f6c5a5
Thread: drop is_leaf_function after 5e3bacbd9b
2019-09-10 17:41:15 +03:00
Nekotekina
aaf1b4c668
Fix gcc warning in bit_cast
2019-09-08 19:27:29 +03:00