Commit graph

1800 commits

Author SHA1 Message Date
eladash 57b7892de6 Fix typo in sys_fs_mkdir
create_path is a less resticted version of create_dir, it doesnt check for EEXIST for one.
2018-11-12 13:28:58 +03:00
Nekotekina 2fd384ae95 SPU LLVM: check state in every callable chunk
It's often redundant but may be necessary
2018-11-09 16:19:59 +03:00
eladash 90f816595a Fix cellPadGetData
* Remove complete buffer clear
* If pressure sensitivity option is not specified, write zeroes (should this be handled from our actual controller handler?)
* Check sensor setting before reporting changes
2018-11-07 15:46:51 +03:00
eladash 3332a10052 ppu: Fix threads scheduler
*Set priority under a lock
*Fix yield command making threads going out of scheduler control by removing it from the queue (not a bug that affects compatibility)
2018-11-07 13:06:29 +03:00
eladash 3fd17e43a3 lv2: Fix lwcond_queue_wait lock acquiring 2018-11-07 13:06:29 +03:00
eladash 3faaf9e7fb lv2: Fix lwmutex locking 2018-11-07 13:06:29 +03:00
eladash 777f36e604 Fix error code checking of sys_lwcond_signal_x 2018-11-07 13:06:29 +03:00
Nekotekina 488928eca2 Fix SPU STOP instruction
Check thread state after STOP instruction
2018-11-05 14:35:50 +03:00
Nekotekina f06e6be2c1 Disable npc update for SPU thread groups 2018-11-05 13:14:11 +03:00
Nekotekina eaa17b7f7c cellSaveData: anti-corruption precautions
Try to commit changes atomically
2018-11-05 13:14:11 +03:00
Nekotekina 6104685ad6 Implement cond_one sync primitive
Change futex() args to use unsigned int
2018-11-05 13:14:11 +03:00
eladash 43b75ccf04 cellGame: Add missing nullptr checks
if the param is null pointer, the library simply skips writing into it. also fix the order of writes.
2018-11-02 19:47:37 +03:00
eladash 3a7f5b970f ppu: Fix stack base 2018-11-02 02:16:29 +03:00
eladash 2058d024ce Fix cellGcmInit (workaround) 2018-10-28 20:09:09 +03:00
Dennis Luxen 36d4614d12 Fix a warning that shift overflows data type width (#5116) 2018-10-23 18:49:01 +03:00
eladash 5ee351234c rsx-capture: unbreak 2018-10-23 18:02:03 +03:00
eladash d14c8a03b3 typo fix 2018-10-20 22:27:48 +03:00
msuih 56ea45f9d5 Add setting for master volume 2018-10-20 16:35:01 +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 430e2243ac Fix audio_thread buffer deallocation race 2018-10-19 22:22:35 +03:00
Nekotekina 73d35b0236 Remove CALL_FUNC, implement ppu_execute<>() 2018-10-19 22:22:35 +03:00
scribam 8540399ecb ppu-interpreter: improve vminfp instruction 2018-10-12 21:30:14 +03:00
elad 623f1b35f6 rsx_capture/gcm: Fix tile binding (#5246)
* gcm: Fix tile offset setting

highest bit signifyies location, so ignore that while reading the offset.

* rsx-capture: Fix tile binding

fixes division by zero when dividing by pitch when the tile is not bound.

* rsx-capture: Fix zcull binding
2018-10-12 19:05:08 +03:00
scribam 39272eef45 ppu-interpreter: improve vsl/vsr instructions 2018-10-08 00:15:26 +03:00
scribam cc846eb670 ppu-interpreter: improve fnmadd/fnmadds instructions (#5183)
* ppu-interpreter: improve fnmadd instruction

* ppu-interpreter: improve fnmadds instruction
2018-10-04 00:49:19 +03:00
Megamouse 49e5212a8f RSX/Overlays: Add option for japanese button layout 2018-10-03 23:08:33 +02:00
eladash 4174d7274d sys_rsx: fix log spam 2018-10-03 20:57:46 +03:00
Nekotekina 1b740995a4 Refactor audio_thread (g_idm) 2018-10-02 23:26:54 +03:00
Nekotekina 1456678316 Refactor audio/camera/mic threads 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
Nekotekina 306f95a9ae New named_thread template (preview)
Old class named_thread renamed to old_thread
It's too hard to move in a single commit
2018-09-27 14:04:16 +03:00
Nekotekina 4ef384a161 Fix cellVdecClose
Thanks Micaelis#6971
2018-09-27 14:04:16 +03:00
Nekotekina b2f29cd4d4 LLVM: remove false alarm errors
Writable sections ARE supported
2018-09-27 12:16:43 +03:00
Nekotekina a8a8cd88a0 Implement lf_queue<>, lf_value<>
lf_queue<>: unbound FIFO queue with dynamic linked-list
lf_value<>: concurrently-assignable value readable without locking at the cost of memory (using dynamic linked list)

Add atomic_t<>::compare_exchange
2018-09-27 12:16:43 +03:00
kd-11 a3d44b5e1f rsx: Cleanup changes for the flip patch 2018-09-24 16:44:02 +03:00
Jake 699eadc84f rsx: Move render flip from rsx queue command to flip command 2018-09-24 16:44:02 +03:00
eladash 1a6c819176 cellgcm: Fix SET_REFERENCE initial value 2018-09-20 01:05:40 +03:00
Nekotekina dce14a359a Rename lv2_spu_group::num to max_num 2018-09-19 14:15:15 +03:00
eladash 05cd3712a3 spu: Fix MMIO index checking 2018-09-17 17:24:54 +03:00
Nekotekina b94e98aed5 Rewrite sys_fs_opendir
Rewrite lv2_dir object
Support split files and mount points
2018-09-15 17:18:40 +03:00
Nekotekina c5676e5649 Remove thread_ctrl::atexit
It was only a workaround for poor C++11 thread_local support
2018-09-15 17:09:56 +03:00
Nekotekina f2229a5f53 PPU reservations: ensure aligned atomic ops
Store aligned 64 bits to ppu.rdata
Don't save reservation size
2018-09-15 17:09:56 +03:00
Nekotekina e8b5555630 Rewrite vfs::get and vfs::mount
Preprocess . and .. correctly
Don't use recursive locking
Also use std::string_view
Fix format system for std::string and std::string_view
Fix fmt::merge for std::string_view
2018-09-15 17:09:56 +03:00
Megamouse ed7012c9db cellKb/Qt: Improve basic keyboard
Sadly the shift in Qt is a bit counter productive.
You'll have to hack another key as shift until i figured it out
2018-09-13 22:01:30 +02:00
eladash cd11ae5d8b ppu: Fix extreme reservation corner case 2018-09-12 23:17:53 +03:00
scribam f294729b28 ppu: improve lvebx/lvehx/lvewx instructions 2018-09-11 21:20:52 +03:00
Nekotekina 2226125728 atomic_t<>: remove inline assignment
Add atomic_op/fetch_op overloads with template argument (may be removed in future)
Remove args... in atomic_op (capturing lambda is preferred)
2018-09-09 12:59:24 +03:00
Nekotekina 3ac1b46df2 Add option "HLE lwmutex"
Replaces lwmutex/lwcond implementation with alternative one
2018-09-09 01:02:19 +03:00
Alex James 5237779136 cellCamera: Fix check_dev_num call in cellCameraOpenEx 2018-09-08 20:07:10 +03:00
Nekotekina fb5cdf9769 atomic_t<>: extend fetch_op to support cancellation
Use std::invoke inside atomic_op/fetch_op
Remove op_fetch because it's easily replaced
Add fetch_dec_sat algorithm (conditional decrement)
2018-09-08 00:32:04 +03:00
Nekotekina ed9fb8405b Move rotate/cntlz/cnttz helpers to Utilities/asm.h 2018-09-08 00:32:04 +03:00
Nekotekina ee96807305 Remove explicit_bool_t, ignore, multicast<>
Remove vm::ptr operator %
This was a bad idea but explicit_bool_t was created almost for it
Other removed types are unused and have little to no meaning
2018-09-08 00:32:04 +03:00
Nekotekina 99ffc3fca9 Use std::invoke_result_t
Also simplify idm code
2018-09-08 00:32:04 +03:00
Nekotekina d750e955c3 Use std::uncaught_exceptions()
Also remove wrong attributes
2018-09-08 00:32:04 +03:00
Ofek d7b0344091 Fix trophy regression
Hopefully
Correct status order
2018-09-07 20:04:37 +03:00
Zion Nimchuk 46812d46ba better stub sceNpUtilBandwidthTestGetStatus 2018-09-07 12:38:51 +03:00
scribam d7bb59cd99 c++17: use std::size 2018-09-06 13:15:59 +03:00
scribam 7724161c14 c++17: use std::clamp 2018-09-06 13:15:59 +03:00
scribam 02ba529eea sys_usbd: add sys_usbd_event_port_send function 2018-09-05 19:53:09 +03:00
Nekotekina ca5158a03e Cleanup semaphore<> (sema.h) and mutex.h (shared_mutex)
Remove semaphore_lock and writer_lock classes, replace with std::lock_guard
Change semaphore<> interface to Lockable (+ exotic try_unlock method)
2018-09-03 23:00:36 +03:00
Nekotekina 5e556a87ff Adjust cellMic log levels 2018-09-03 21:40:36 +03:00
Nekotekina ce4c4696dd Try to get rid of SIZE_32 macro 2018-09-03 21:40:36 +03:00
Nekotekina 7bccdbf157 Make vm::var unmoveable
Fix bugs with discarding vm::make_var result
2018-09-03 21:40:36 +03:00
Nekotekina 8abe6489ed Mega-cleanup for atomic_t<> and named bit-sets bs_t<>
Remove "atomic operator" classes
Remove test, test_and_set, test_and_reset, test_and_complement global functions
Simplify atomic_t<> with constexpr if, remove some garbage
Redesign bs_t<> to use class, mark its methods constexpr
Implement atomic_bs_t<> for optimizations
Remove unused __bitwise_ops concept (should be in other header anyway)
Bitsets can now be tested via safe bool conversion
2018-09-03 21:40:36 +03:00
Nekotekina 69f0ad0d68 Remove ALIGN_32 macro
It's never used in expressions like SIZE_32(T) * n, so it doesn't help to fix any warning issued due to truncation.
2018-09-03 21:40:36 +03:00
Rui Pinheiro 1175658bd5 Fix cellMic regression from #4467
cellMicEnd would get stuck waiting for the cellMic thread to finish, but
it never does because micInited is still true.

Fixes Resistance: Fall of Mankind getting stuck after the menu
2018-09-03 19:49:41 +02:00
eladash 9acaee563b Fix sys_memory_free 2018-09-01 22:44:20 +04:00
Nekotekina 85fa0942e7 vm: allow 4k-aligned allocations for vm::stack
Fix utils::shm::map logic for MapViewOfFileEx
2018-08-30 14:56:45 +03:00
Nekotekina c49c7de427 sys_fs_stat: support split files
Was forgotten after sys_fs_open
2018-08-30 14:56:45 +03:00
Ofek 4c1459534d Trophy fixes 2018-08-29 16:56:17 +03:00
Megamouse 686d3eb1df cellMsgDialog: improvements 2018-08-29 16:09:00 +03:00
Megamouse 00b31c27a3 cellGame: implement error messages and some stubs 2018-08-29 16:09:00 +03:00
Megamouse 7208aa37cc cellMsgDialog: introduce open_msg_dialog 2018-08-29 16:09:00 +03:00
Megamouse d4285fb196 cellGameExec: add param checks 2018-08-29 16:09:00 +03:00
Zion Nimchuk f9cab3270f Initial work on cellMic 2018-08-29 15:15:18 +03:00
Nekotekina 7b4f70390d Don't use decltype(spu_opcode_t::...)
Add static constant for this purpose
Try to fix MSVC bug warning C4573
2018-08-25 21:06:24 +03:00
Nekotekina 363811981d Reintroduce LOG_CHANNEL
Groundwork for further improvements
2018-08-25 15:39:00 +03:00
Mårten Nordheim b095a0be90 Fix compilation with VS2017 2018-08-24 14:46:33 +04:00
eladash 18ec05c070 Fix cellGcmInit
add a missing reset
2018-08-22 12:20:31 +03:00
eladash 158019b50f Rsx: fix translation when address is negative
move address shift to where it should be, extend io table to catch all possible values.
2018-08-22 12:20:31 +03:00
Ani 6fc869e21b Revert d1fd4d5000 2018-08-20 00:12:30 +04:00
kd-11 8800c10476 zcull synchronization tweaks
- Implement forced reading when calling update method to sync partial lists
- Defer conditional render evaluation and use a read barrier to avoid extra work
- Fix HLE gcm library when binding tiles & zcull RAM
2018-08-18 16:14:30 +03:00
eladash 9d8c9c2460 sys_memory: fix default alignment flag
its 1mb
2018-08-16 03:27:11 +04:00
Nekotekina a3daa99a33 Fixup sys_vm_memory_map 2018-08-14 16:08:45 +03:00
Nekotekina aa4040bb7b Implement vm::find_map; improve memory allocation
Add vm::user64k and vm::user1m constants
Remove vm::user_space, unreserve it
2018-08-14 15:14:06 +03:00
Nekotekina 9578e1e923 SPU LLVM: lower some log levels 2018-08-14 15:14:06 +03:00
Nekotekina 62f9a2dc4b sys_fs_open: support split files 2018-08-14 15:14:06 +03:00
Megamouse 1a5b950d8b fix cellMouse lag + fullscreen mouse 2018-08-13 22:23:22 +02:00
eladash 449888b9db Rsx/vm: fix base addresses 2018-08-13 16:16:34 +03:00
eladash f349695a75 Rsx: rewrite address translation 2018-08-13 16:16:34 +03:00
Nekotekina 801089cf44 PPU LLVM: always link syscall_## functions
Regardless of whether they have name or not
Should fix "Linkage failed" errors introduced after #4886
2018-08-12 15:42:47 +03:00
Nekotekina fdd4f03b93 SPU LLVM: improve xfloat precision
Use doubles for intermediate representation
Add option "Accurate xfloat" to enable
2018-08-12 15:42:47 +03:00
Nekotekina d1fd4d5000 PPU: don't use transactions (test) 2018-08-12 02:42:32 +03:00
Nekotekina 14e6577700 SPU LLVM: improve debugging RPCS3
Build cache in reverse order
Catch exceptions in instruction loop: print IR
2018-08-12 02:42:32 +03:00
Nekotekina 711e0f75ee SPU LLVM: inline WRCH (preview)
With lööps for TSX bróþers
2018-08-12 02:42:32 +03:00
Nekotekina d01bf3bcb0 SPU LLVM: rewrite CGX 2018-08-12 02:42:32 +03:00
Nekotekina d3ad44aec4 SPU LLVM: improve constant propagation
Propagate constants in non-volatile registers between chunks
Disable function table in Mega mode
2018-08-12 02:42:32 +03:00
Nekotekina a424fcfcf7 PPU LLVM: fix phenoms 2018-08-12 02:42:32 +03:00
Chris Weermann (TGE) fdcc5adc8d Fix overflow in PPUThread stack frame dump 2018-08-11 20:56:19 +04:00
eladash 745ed8331c Fix sys_rsx_context_iounmap args 2018-08-11 18:14:35 +04:00
Maxetto 05c1f192f5 Update new LV2 names (#4886) 2018-08-11 16:46:44 +04:00
VelocityRa 1625f4bcc9 cellCamera: Fixes
- Fix regression from #4676
- Refactoring of event queue management stuff
- Some accuracy fixes
2018-08-07 02:54:14 +02:00
Megamouse 69af607491 cellCamera: improvements 2018-08-02 00:24:06 +02:00
Megamouse 456aa4ab8d cellMusic: improvements 2018-08-02 00:24:06 +02:00
Megamouse f8c8a3a26c cellPad: improvements 2018-08-02 00:24:06 +02:00
Megamouse 27820f0371 cellMouse: improvements 2018-08-02 00:24:06 +02:00
Megamouse bff038f554 cellKb: improvements 2018-08-02 00:24:06 +02:00
Megamouse f6a3659a14 user_manager: megamouse fixes 4 2018-07-26 03:16:51 +04:00
mpm11011 68202eb2b7 user-manager: replacing fmt::format with string concat.
(cherry picked from commit 63379afc7a402edb2159912318281febc3e7438a)
2018-07-26 03:16:51 +04:00
mpm11011 948bd3673e user-manager: squash all commits for this feature. 2018-07-26 03:16:51 +04:00
scribam c5c0f68b3e ppu-precise: improve vaddsws and vadduws instructions 2018-07-22 19:53:28 +04:00
eladash 12b8908a00 cellvdec: stub unsupported video timebases 2018-07-21 15:32:38 +04:00
Nekotekina 9b4e63df6d SPU LLVM: simplify CG, CGX, BG, BGX 2018-07-21 12:18:07 +03:00
Nekotekina 03e6725fcf PPU LLVM: simplify VMSUMUHS 2018-07-21 12:18:07 +03:00
Nekotekina d2d07abcc5 cellSaveData: print SECUREFILE secureId
This can help to decrypt savedata
2018-07-21 12:18:07 +03:00
scribam 5828367013 spu-precise: fix double-precision floating-point exception checks 2018-07-20 15:22:14 +04:00
eladash 20e9ae069c Fix sys_time_get_current_time 2018-07-19 14:43:10 +04:00
Megamouse a19113025c HLE/Qt: implement sys_tty_read 2018-07-16 00:05:30 +04:00
scribam b36d0fd59f clang: fix compilation on 3.6 2018-07-15 12:51:09 +04:00
eladash ac99fd764d mfc: clamp atomic cmd's addr 2018-07-14 01:40:40 +04:00
Ofek d3596fbc95 Change all hddFreeSizeKB to 40gb-1 2018-07-11 02:16:14 +04:00
eladash a5d4e58ddd fix barrier type mfc transfers 2018-07-10 14:54:51 +04:00
Chris Weermann (TGE) c5dcef52fa Implement sys_dbg_read_process_memory and sys_dbg_write_process_memory 2018-07-10 01:47:47 +04:00
scribam 1b0f5b1ed9 spu: improve dfnma instruction 2018-07-09 03:33:05 +04:00
scribam 2ed6e51d24 ppu: improve vnmsubfp instruction 2018-07-09 03:33:05 +04:00
scribam 733efc6b0d ppu: improve fnmsubs instruction 2018-07-09 03:33:05 +04:00
scribam f1e6532ec0 ppu: improve fnmsub instruction 2018-07-09 03:33:05 +04:00
Ofek dceba8a92b PPU analyser optimizations 2018-07-07 14:26:56 +04:00
Nekotekina d856dc89a8 SPU LLVM: combine SELB with comparison instructions
Turn bitwise select into a vector select
2018-07-06 02:26:18 +03:00
Nekotekina 2f0dc9bd0f PPU LLVM: simplify VSUBCUW, VSUBUBS, VSUBUHS, VSUBUWS 2018-07-06 00:33:52 +03:00
Nekotekina 9d9869e803 PPU LLVM: simplify VADDCUW, VADDUBS, VADDUHS, VADDUWS 2018-07-06 00:33:52 +03:00
Nekotekina caf827344f SPU LLVM: improve SHL, SHLH, ROTM, ROTHM instructions
Avoid zero extension, select undef result to zero
2018-07-06 00:33:52 +03:00
Nekotekina b9c026d441 SPU LLVM: improve ROTMA and ROTMAH instructions
Avoid sign extension, clamp shift amount with min op
2018-07-06 00:33:52 +03:00
Nekotekina 2b9fa7ed23 SPU LLVM: combine SHUFB with CWD-alike instructions
Turn SHUFB into a vector insert
2018-07-06 00:33:52 +03:00
Nekotekina 253e8b4466 SPU LLVM: improve SHUFB with constant mask 2018-07-06 00:33:52 +03:00
Nekotekina 622f2f7f66 SPU LLVM: constant computation fixes
Fixed instructions:
Gather Bits: GB, GBH, GBB
Form Select Mask: FSM, FSMH, FSMB
2018-07-06 00:33:52 +03:00
Nekotekina c959ab2698 SPU LLVM: fix constant propagation
Compute constant bitcasts
2018-07-06 00:33:52 +03:00
Nekotekina 20900ebea2 SPU: rename block stats
Use Block Weight and Retreats
2018-07-06 00:33:52 +03:00
Nekotekina a0c0d8b993 SPU: simplify unimplemented event check
Move checks closer to the actual use
2018-07-06 00:33:52 +03:00
Nekotekina afd5af04f6 SPU: improve analyser (v5)
Fix jumptable analysis
2018-07-06 00:33:52 +03:00
Nekotekina 712632d28a SPU LLVM: inline RDCH 2018-07-06 00:33:52 +03:00
Nekotekina c1385558ad SPU LLVM: inline RCHCNT 2018-07-06 00:33:52 +03:00
Nekotekina 0910acad42 SPU LLVM: clean NOP/LNOP
Add volatile to state check and update_pc()
2018-07-06 00:33:52 +03:00
Nekotekina 513bac0304 SPU LLVM: refactor halt instructions 2018-07-06 00:33:52 +03:00
Nekotekina a0bf103e8b Implement cpu_translator::pshufb<>()
Remove spu_translator::pshufb<>()
Improve PSHUFB emulation (pre-SSSE3)
Emit static shufflevector for the constant mask
PPU: Inline VPERM instruction
2018-07-06 00:33:52 +03:00
Nekotekina 41eab62ed7 Implement spu_iname helper
Remove old code
Report $SP anomalies
2018-07-06 00:33:52 +03:00
Nekotekina e009bbac10 Use LLVM 7 (master) 2018-07-06 00:33:52 +03:00
Nekotekina 8ad05ce10e SPU LLVM: fix jt target duplication bug 2018-07-05 22:26:35 +03:00
Nekotekina a999bccc03 SPU LLVM: use cpu_translator::build<> 2018-07-05 22:26:35 +03:00
Nekotekina ded9d1ddfd SPU LLVM: improve function type
Use pointers for args
Use noalias attribute
2018-07-05 22:26:35 +03:00