RipleyTom
980c3d6fe8
Fix lf_queue destructor
2019-03-13 15:59:13 +03:00
Nekotekina
eae5b9e049
Rewrite mulh64/umulh64
...
Use __int128_t/__uint128_t idioms on GCC/Clang.
May result in better codegen by avoiding inline asm.
2019-03-13 00:16:43 +03:00
eladash
4a28319edf
Implement SPU page faults notifications
...
* Implement both RawSPU and threaded SPU page fault recovery
* Guard page_fault_notification_entries access with a mutex
* Add missing lock in sys_ppu_thread_recover_page_fault/get_page_fault_context
* Fix EINVAL check in sys_ppu_thread_recover_page_fault, previously when the event was not found begin() was erased and
CELL_OK was returned.
* Fixed page fault recovery waiting logic:
- Do not rely on a single thread_ctrl notification (unsafe)
- Avoided a race where ::awake(ppu) can be called before ::sleep(ppu) therefore nop-ing out the notification
* Avoid inconsistencies with vm flags on page fault cause detection
* Fix sys_mmapper_enable_page_fault_notification EBUSY check
from RE it's allowed to register the same queue twice (on a different area) but not to enable page fault notifications twice
2019-03-12 13:28:31 +03:00
Nekotekina
efe067bfa0
LLVM: handle cascadelake CPU name
2019-03-05 21:47:34 +03:00
Nekotekina
ebb24375d1
LLVM: handle icelake-client and icelake-server CPU names
...
Correct AVX / AVX-512 disabling logic
2019-03-01 00:20:04 +03:00
Nekotekina
7f6a410770
Add dummy __has_builtin macro, use rotate builtins if possible
2019-03-01 00:08:19 +03:00
Nekotekina
9ee2867247
Improve count leading/trailing zeros implementation
...
Use x86 intrinsics if compiled with appropriate instruction support
2019-03-01 00:08:19 +03:00
Nekotekina
7b344b7654
Implement utils::refptr for typemap (with && syntax)
...
Ref-counted pointer, object is always allocated on heap.
Rvalue reference && in typemap is converted to refptr for convenience.
2019-03-01 00:08:19 +03:00
Nekotekina
6c5d9fffaa
typemap: improve pointer support
...
If stored object is a pointer, access dereferenced object directly via ->
2019-03-01 00:08:19 +03:00
eladash
25aa5f80a6
Fix access violations reporting on RSX
...
and on other threads that do not have cpu_thread handler
2019-01-30 18:44:29 +03:00
eladash
b61492ca30
Dont call std::terminate() after normal access violation handling
2019-01-30 18:44:29 +03:00
Nekotekina
f50d9cc136
Initial support for HLE in internal API
...
atomic_storage<>: add compare_exchange_hle_acq and fetch_add_hle_rel
shared_mutex: add methods (un)lock_hle and (un)lock_shared_hle
Clang: 👅
2019-01-29 04:33:59 +03:00
Nekotekina
58358e85dd
spu_runtime::add minor optimization
...
Use preallocated vectors in trampoline generation subroutine
2019-01-29 03:32:16 +03:00
Nekotekina
2b66abaf10
Implement atomic_t<>::release
...
More relaxed store with release memory order
2019-01-29 03:32:16 +03:00
Nekotekina
4292997a01
Added jit_runtime class
...
Is a memory manager for ASMJIT, replaces asmjit::JitRuntime
Unified memory manager for ASMJIT and LLVM
Unified SPU trampoline generation
Remove previous workarounds
2019-01-29 03:32:16 +03:00
Nekotekina
d5eda98e49
Fix le_t<> compilation error
...
Use memcpy for copying
2019-01-22 22:02:03 +03:00
Nekotekina
4f152ad126
SPU: multithread compilation
...
Allow parallel compilation of SPU code, both at startup and runtime
Remove 'SPU Shared Runtime' option (it became obsolete)
Refactor spu_runtime class (now is common for ASMJIT and LLVM)
Implement SPU ubertrampoline generation in raw assembly (LLVM)
Minor improvement of balanced_wait_until<> and balanced_awaken<>
Make JIT MemoryManager2 shared (global)
Fix wrong assertion in cond_variable
2019-01-22 22:02:02 +03:00
Nekotekina
a419e98acb
Move PPU and shader cache
...
New hash-based location (already used for SPU)
Bump PPU cache version, improve naming and decrease size
Remove fs::get_data_dir
Disable boot.elf cache
2019-01-14 01:24:05 +03:00
Nekotekina
81c50bad69
lf_queue: implement wait() method
...
Synchronization does not occupy additional space by reusing LSB
2019-01-13 14:45:36 +03:00
Nekotekina
ac775cd75e
Simplify gui_listener
...
Use lf_queue
2019-01-13 14:45:36 +03:00
Nekotekina
3fed4dcc5a
Remove lf_mpsc, lf_spsc
...
Not practical
2019-01-13 14:45:36 +03:00
Nekotekina
435f60d503
lf_queue: add iterator support
...
Allow range-for loop over an object returned by `pop_all()`
2019-01-13 14:45:36 +03:00
Nekotekina
bd9131ae1c
Implement fs::get_cache_dir
...
Win32: equal to config dir for now
Linux: respect XDG_CACHE_HOME if specified
OSX: possibly incomplete
2019-01-13 14:45:36 +03:00
Nekotekina
20efed66e9
Implement RPCS3_CONFIG_DIR env variable (Win32)
...
Overrides config location, should end with / or \
2019-01-13 14:45:36 +03:00
JohnHolmesII
be75a564ca
Fix builds with musl c
2018-12-30 21:31:06 +03:00
Jan Beich
33f7a39f5d
fs: implement copy_file() fallback
...
sendfile(2) on DragonFly and FreeBSD can only write into sockets.
2018-12-29 18:07:45 +03:00
msuih
dbd4814584
Disable thread assignment for Intel
2018-12-24 19:33:08 +00:00
msuih
1dd3a4b3f0
Detect hyperthreading on Windows
2018-12-24 19:33:08 +00:00
vit9696
5a40c1802b
Support macOS bundling for binary distribution
2018-12-16 18:17:21 +03:00
Nekotekina
96cabeadff
Rewrite condition variables
...
Implement helper functions balanced_wait_until and balanced_awaken
They include new path for Windows 8.1+ (WaitOnAddress)
shared_mutex, cond_variable, cond_one, cond_x16 modified to use it
Added helper function utils::popcnt16
Replace most semaphore<> with shared_mutex
2018-11-29 01:30:05 +03:00
Nekotekina
febe4d4a10
Implement class cond_x16
...
Use as reservation notifier
Limited to 16 threads but allows more precise control of contention
2018-11-26 00:23:29 +03:00
vit9696
634a5fa31c
Fix macOS compilation
2018-11-19 14:39:33 +03:00
Nekotekina
1fdd013e4b
fs: normalize atime (ensure atime >= mtime)
2018-11-17 14:40:11 +03:00
Nekotekina
c719ae360d
fs: disable ctime (return mtime instead)
2018-11-17 14:40:11 +03:00
Nekotekina
7180c1f2d0
typemap: make use of volatile qualifier
...
Use shared lock for volatile pointers
Use no lock for const volatile pointers
2018-11-09 16:19:59 +03:00
Nekotekina
6a30d5a6c1
shared_mutex: increase max_readers to 16383
...
Standard requires at least 10000 for SharedMutex concept
2018-11-09 16:19:59 +03:00
Nekotekina
6104685ad6
Implement cond_one sync primitive
...
Change futex() args to use unsigned int
2018-11-05 13:14:11 +03:00
Dennis Luxen
36d4614d12
Fix a warning that shift overflows data type width ( #5116 )
2018-10-23 18:49:01 +03:00
Nekotekina
f588454d26
Internal: register WaitOnAddress family functions (WinAPI)
2018-10-19 22:22:35 +03:00
Nekotekina
1b37e775be
Migration to named_thread<>
...
Add atomic_t<>::try_dec instead of fetch_dec_sat
Add atomic_t<>::try_inc
GDBDebugServer is broken (needs rewrite)
Removed old_thread class (former named_thread)
Removed storing/rethrowing exceptions from thread
Emu.Stop doesn't inject an exception anymore
task_stack helper class removed
thread_base simplified (no shared_from_this)
thread_ctrl::spawn simplified (creates detached thread)
Implemented overrideable thread detaching logic
Disabled cellAdec, cellDmux, cellFsAio
SPUThread renamed to spu_thread
RawSPUThread removed, spu_thread used instead
Disabled deriving from ppu_thread
Partial support for thread renaming
lv2_timer... simplified, screw it
idm/fxm: butchered support for on_stop/on_init
vm: improved allocation structure (added size)
2018-10-19 22:22:35 +03:00
Nekotekina
8ca6c9fff0
Fix thread_base::get_cycles (Linux/POSIX)
2018-10-19 22:22:35 +03:00
Megamouse
76da3fa907
RSX/Overlays: don't press buttons on every iteration
2018-10-03 21:37:05 +02:00
Nekotekina
a8a9c11bf8
typemap improvements
2018-10-02 23:26:54 +03:00
Nekotekina
f6f72c1cf8
Rename -> typemap_ptr::unlock()
2018-10-02 23:26:54 +03:00
Nekotekina
bc87c5808c
Add cond_variable::wait_unlock
2018-10-02 23:26:54 +03:00
Nekotekina
4bef0f8dab
Rename thread_abort (name conflict)
2018-10-02 23:26:54 +03:00
Nekotekina
3359e9a51b
Minor thread fixes
...
Call thread result destructor
2018-10-02 02:22:26 +03:00
Nekotekina
7a024f3355
Implement shared_mutex::lock_unlock
...
Minor fix for shared_mutex::try_lock - don't optimize for pessimistic case
2018-10-02 02:22:26 +03:00
Nekotekina
8a1b5abee1
utils::typemap implemented
...
Container for all types
2018-10-02 02:22:26 +03:00
Nekotekina
da6ce80f4f
Make vm::get_super_ptr return contiguous memory
...
Cleanup RSX code complexity
2018-09-27 23:37:13 +03:00