Commit graph

3455 commits

Author SHA1 Message Date
Eladash 1e7bf218e0 CellSpurs: Minor fixes 2020-10-25 16:43:38 +03:00
Eladash 4ea7628204 SPU: Fix LS capture entry point 2020-10-25 16:39:40 +03:00
Nekotekina 2b52b4a749 SPU: use normal notify() thread function
Using raw_notify() everywhere was overkill.
2020-10-24 14:16:32 +03:00
Nekotekina 10caa2981f Improve raw_notify a bit 2020-10-24 14:16:32 +03:00
Eladash 49610f52f5 SPU: Save LS capture executable in one segment 2020-10-24 14:13:19 +03:00
Megamouse 27643cb715 HLE: improve cellHddGameCheck 2020-10-24 00:26:41 +03:00
Eladash b56bc7e087 SPU: cleanup channels logging 2020-10-23 13:13:04 +03:00
Eladash abcf265bc7 SPU Debugger: Implement basic instructions's constants propagation
Only functional in WRCH and ILHU+IOHL pattern atm.
ILHU+IOHL is extremely common pattern to create 32-bit constants such as SPPU libraries error codes.
2020-10-23 13:13:04 +03:00
Eladash e70f430b5a SPU Debugger: Add made-up MR mnemonic 2020-10-23 13:13:04 +03:00
Eladash b998852385
LV2: cleanup syscall table (#9106)
Remove old ppu_get_syscall_name from PPUFunction.cpp for deduplication.
2020-10-21 10:04:34 +03:00
Nekotekina 306593a0c5 Revert "atomic.cpp: fixup for WaitOnAddress path"
This reverts commit 3b8bce1bed.
2020-10-21 09:54:22 +03:00
Nekotekina 3b8bce1bed atomic.cpp: fixup for WaitOnAddress path
Also fix wait quantum.
2020-10-21 08:18:27 +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 72d1ac22aa SPU: report too many PUTLLC attempts (TSX)
Mirrored to PPU STCX code and PUTLLUC (STORE128).
2020-10-19 19:41:28 +03:00
Nekotekina 8ce5392390 TSX: add prefetchw instruction in transaction code 2020-10-19 19:41:28 +03:00
Nekotekina 311682b341 SPU: fix GETLLAR regression
Misplaced mov_rdata
2020-10-19 19:41:28 +03:00
Nekotekina 120849c734 Implement perf stat counter for PPU/SPU reservation ops
Adds Emu/perf_meter.hpp header file.
Uses RDTSC for speed.
Prints stats at exit.
2020-10-19 19:41:28 +03:00
Nekotekina adf50b7c4b Implement cpu_thread::if_suspended
Use it for opportunistic guaranteed GETLLAR execution (TSX-FA).
2020-10-18 20:10:48 +03:00
Nekotekina f5c575961f Implement priorities for cpu_thread::suspend_all tasks
Give PUTLLUC increased priority.
2020-10-18 20:10:48 +03:00
Eladash 402e8b12a6 SPU: Touch unmapoed memory in reservation mismatch 2020-10-18 11:42:54 +03:00
Eladash 701f7f39d6
Improve SPURS debugger (#9090) 2020-10-18 11:07:01 +03:00
Eladash 6590366f8e PPU Debugger: fix typo in STDX 2020-10-17 22:00:22 +03:00
Eladash fa0b02ed30 PPU Debugger: Improve move from/to CR registers instructions 2020-10-17 22:00:22 +03:00
Nekotekina d0057c92e4 Fix spu_putlluc_tx (insignificant) 2020-10-17 21:27:19 +03:00
Nekotekina 4078f43984 Fix ppu_stcx_accurate_tx (operand size mismatch) 2020-10-17 21:26:17 +03:00
RipleyTom 9e14d240a8 Implement ethernet address determination 2020-10-16 22:53:48 +03:00
RipleyTom 1393bb2caf Fix getsockname on windows for unbound sockets 2020-10-16 22:53:48 +03:00
RipleyTom e9914f3004 Add sys_net error for EISCONN 2020-10-16 22:53:48 +03:00
RipleyTom 073772a801 Fixes setsockopt 2020-10-16 22:53:48 +03:00
RipleyTom 2babe4c236 Add better handling of RTT for STREAM_P2P 2020-10-16 22:53:48 +03:00
RipleyTom bbda618beb Improve poll for p2p sockets 2020-10-16 22:53:48 +03:00
RipleyTom 344c813eb1 Avoid double locking with start_sig 2020-10-16 22:53:48 +03:00
RipleyTom abaa8f855f sceNpManagerGetAccountRegion impl 2020-10-16 22:53:48 +03:00
Eladash 443c2b920d PPU: Handle cache line inconsistencies (PPU 128 reservations) 2020-10-16 22:51:30 +03:00
Eladash 953663e00b Fix ppu_execute<Func> for HLE functions 2020-10-16 22:48:02 +03:00
Eladash 5185ddb8b5
CellSpurs: JobChain functions and some more (#9080) 2020-10-16 18:35:20 +01:00
Nekotekina 583ed61712 SPU: return some give-up behaviour for PUTLLC (TSX)
Despite using concept of "shared" lock, allow only first to proceed.
This is similar how conditional stores for PPU are implemented.
2020-10-16 12:14:42 +03:00
Nekotekina facde63460 PPU: fix ppu_stcx_accurate_tx
Don't destroy xmm6/xmm7 state on exit.
Improve addr arg handling (simplify).
2020-10-15 19:24:00 +03:00
Nekotekina 494953997e PPU/SPU: give up on conditional stores if locking fails
Restores Non-TSX behaviour partially.
2020-10-15 17:18:49 +03:00
Nekotekina 1b89ad00e7 SPU: restore some LR event setting logic after #9048 2020-10-15 17:18:49 +03:00
Nekotekina 3bddba0c7a SPU: fix spu_getllar_tx
Was not executing.
2020-10-14 02:53:29 +03:00
Nekotekina 97cd641da9 TSX: reimplement spu_getllar_tx
Only used as a backup method of reading reservation data.
Increase long GETLLAR reporting threshold.
2020-10-13 21:10:04 +03:00
Nekotekina 91db4b724c SPU: fix PUTLLC (TSX-FA)
Some forgotten checks may affect performance.
2020-10-13 17:46:03 +03:00
Nekotekina dcff8c2637 Fix remaining vm::reservation_lock usages (for now)
Optimization can be restored later.
2020-10-13 12:04:59 +03:00
Nekotekina 7a76fb1469 PPU: Add loop logging in STWCX/STDCX 2020-10-13 11:06:58 +03:00
Nekotekina 17f805ae64 PPU: cleanup for TSX path remnant 2020-10-13 10:54:10 +03:00
Nekotekina dc39a9b84f SPU: Report 'GETLLAR took too long'
Also move similar code in PPU.
2020-10-13 00:12:11 +03:00
Nekotekina 4ff23a9943 sys_fs: fix file opening from /app_home
Typo.
2020-10-12 21:41:57 +03:00
Nekotekina a806be8bc4 SPU: Implement S1/S2 (SNR) events (closes #8789)
Add TSX path in push_snr()
Add locks bits in ch_events
2020-10-12 21:41:57 +03:00
Eladash 95c1443e30
SPU: Validate reservation in GET commands (Accurate DMA) (#9062) 2020-10-12 15:20:06 +03:00
Nekotekina 5bd5a382c0 PPU: fix LDARX/LWARX in accurate mode (closes #9058)
Fixup after #9048
Use SSE intrinsics in mov_rdata.
2020-10-11 19:52:10 +03:00
Nekotekina 1885e4345c Improve vm::reservation_update
Only respect unique lock.
2020-10-11 17:22:28 +03:00
Nekotekina 2f329cf7b5 PPU: minor improvement for LWARX/LDARX
Improve chances of loading actual data in memory.
2020-10-11 17:22:28 +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
Nekotekina e8e3a3b2a2 PPU: improve LWARX/LDARX progression
Should reduce spam ("...took too long")
2020-10-10 17:36:41 +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
Nekotekina 6d83c9cc0e PPU: remove ppu_stcx_tx
Very small transaction, benefit questionable.
2020-10-10 13:58:48 +03:00
Nekotekina 346a1d4433 vm: rewrite reservation bits
Implement classic unique/shared locking concept.
Implement vm::reservation_light_op.
2020-10-10 13:58:48 +03:00
Eladash 865464f607 SPU Local Storage capture 2020-10-08 19:05:14 +03:00
Nekotekina 89f1248140 Implement vm::reservation_op
Implement vm::reservation_peek (memory load)
Implement vm::unsafe_ptr_cast helper
Example use in cellSpurs.cpp
Fix dma_lockb value and description
2020-10-07 20:11:59 +03:00
Eladash 59be63167f Prettify SPU image name of dumped images 2020-10-07 01:12:45 +03:00
Eladash c628147521 cellSpurs: Implement more HLE functions (part 1) 2020-10-07 01:12:21 +03:00
Eladash a5cff8b186 kernel-explorer: Initial SPURS debugger 2020-10-06 14:20:23 +03:00
Eladash 983547af7e SPU: Embedded PRX/overlay image patching and dumping 2020-10-06 13:06:25 +03:00
Eladash 2a258dc21e
Fix GCC compilation (#9035) 2020-10-05 06:39:56 +01:00
Eladash ec1244bb82 Minor cellSpurs fixup 2020-10-04 19:54:56 +03:00
Eladash ac6e042223 Implement sys_process_is_spu_lock_line_reservation_address 2020-10-04 19:54:56 +03:00
Eladash a0b387e0a9 cellSpurs: Fix HLE workload signalling, taskset fixes 2020-10-03 22:35:59 +03:00
Eladash 4cafd5a31c SPU: Remove dead additions in Accurate Xfloat 2020-10-03 20:31:35 +03:00
Eladash 888b520b31 sys_fs: return ENOENT for relative paths 2020-10-03 19:09:09 +03:00
Eladash 493e57837b
SPU: Fix extremely rare bug of GETLLAR (#9011) 2020-10-03 09:31:28 +01:00
Nekotekina ee00fdb61b fs: improve handling root mountpoint
Path such as simply "/" falls into this category.
2020-10-02 14:37:58 +03:00
Nekotekina 9b22661c19 fs: improve mountpoint detection
Properly handle . and .. path components in mountpoint detection.
Remove app_home mountpoint and use mountpoint from argv[0] instead.
Add dev_root mountpoint for special purposes.
2020-10-02 12:32:35 +03:00
Eladash 56cebd99c2
SPU: Simplify logging of MFC commands (#9004) 2020-10-01 19:52:39 +03:00
Eladash 04c3d8d1bb Set max PPU threads to 100 2020-10-01 19:51:56 +03:00
Eladash 7fdf3dd760 cellSpurs: Add CellSpursJobOpcode definitions 2020-10-01 18:16:13 +03:00
Eladash 1f28bee86a cellSpurs: Add error codes formatting (unused) 2020-10-01 18:16:13 +03:00
Eladash aed560b630 Implemnt various HLE CellSpurs functions 2020-10-01 18:16:13 +03:00
Eladash 871b15f6e1
PPU: fixup for Accurate 128-byte reservations (#8998) 2020-10-01 18:15:07 +03:00
Megamouse 531eb04fd7 cellGameSetParamString: fix string sizes 2020-09-29 08:44:25 +02:00
Eladash f4ca6f02a1 PPU: Implement support for 128-byte reservations coherency 2020-09-28 22:34:42 +03:00
Eladash 3f7eba19c8 PPU: Upgrade reservations to 8-byte always 2020-09-28 22:34:42 +03:00
Eladash 09cddc84be SPU/PPU: Implement Atomic Cache Line Stores 2020-09-27 20:09:21 +03:00
Eladash f22348a9f9 sys_memory: Improve sys_memory_get_page_attribute for stack 2020-09-26 21:48:12 +03:00
Eladash 83d71519e0 Implement HLE sys_config stack allocation 2020-09-26 21:48:12 +03:00
Eladash 0f67c68993
sys_mmapper: return ENOMEM on memory greater than UINT32_MAX (#8982) 2020-09-26 18:06:06 +01:00
Eladash b79d236bfa
cellSearch: use std::hash (#8981) 2020-09-26 17:28:19 +01:00
Eladash 6164b3d2e2 Compilation fix 2020-09-24 21:00:23 +03:00
Eladash c806da51f8
Implement cellGameDeleteGameData (#8962) 2020-09-24 20:13:19 +03:00
Eladash 183aa31319 cellSysCache: Global hdd1 lock
Take advantage of recursive locking.
2020-09-24 18:06:51 +03:00
Eladash 7b3c0a69f3 kernel-explorer: Implement Filesystem Destcriptors information 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
Bevan Weiss 53212ba7a9 Core: Add date/time offset capability for console time
Provides a setting which can be applied per game, and allows for a custom date/time to be set.
The console time will then apply this as an offset to the computer wallclock.

This allows for games which look at the console time to determine their gameplay to be adjusted.
2020-09-23 21:15:45 +02:00
Eladash 3372409590
cellGameContentPermit: Fix missing PARAM.SFO writeback (#8934) 2020-09-23 20:35:06 +03:00
Eladash 5a049322ed HLE: Always return empty paths if game content does not exist in cellGameContentPermit 2020-09-23 20:24:21 +03:00
Eladash bfa78870cb SPU: Fix unregistered channels in RCHCNT
Shouldn't throw exception on realhw.
2020-09-22 19:47:47 +03:00
Eladash ad37259ccc SPU: Implement many missing channel counts 2020-09-22 19:47:47 +03:00
Eladash 418968d974 sceNpTrophy: Add logging of commSign 2020-09-22 19:46:52 +03:00
Eladash 89905bc1c4 sceNpTrophyRegisterContext: Implement SCE_NP_TROPHY_STATUS_NOT_INSTALLED 2020-09-22 19:46:52 +03:00
Eladash cf61198fe3
HLE: Implement ERROR_BROKEN in cellGameDataCheck (#8945) 2020-09-22 10:30:31 +02:00
Megamouse 0b42cf06f8 sceNpTrophyCreateContext: improve commId logging 2020-09-21 15:32:02 +02:00
Megamouse 4c4be331f5 HLE: Fix sceNpTrophyCreateContext
fixes #7431 Soldner-X
Assuming that a SceNpCommunicationId should have a format like "TEST12345", then there is no need to delete termination characters after we already created a truncated string with 9 characters + null terminator.
The current behaviour does not work at all, because in case that we actually have a non-null termination character, deleteTerminateChar will step over the last x chars in the already truncated ID until it forcefully finds a character of its liking. eg. term='2': "TEST12345" => "TEST1" => "TEST1_00"
2020-09-21 15:32:02 +02:00
Eladash 75c3fdcb6f Fix cellGameBootCheck PARAM.SFO reads 2020-09-21 06:36:34 +03:00
Eladash 5ac6f090fc
Fix cellGamePatchCheck (#8933) 2020-09-19 19:38:22 +01:00
Eladash 0d183a24be cellFs: Rewrite cellFsGetFreeSize 2020-09-19 13:53:04 +01:00
Eladash a21790b992 sys_fs: Fix sys_fs_disk_free 2020-09-19 13:53:04 +01:00
Eladash 762ceaf87e sys_fs: Do not expose real hard drive available space!!!!!!!!!!!!! 2020-09-19 13:53:04 +01:00
Eladash 2620a51cc9 cellSaveData: Minor fix 2020-09-19 13:53:04 +01:00
Eladash f1e8739608 Always reset size in cellGameGetSizeKB
Reversed.
2020-09-19 13:53:04 +01:00
Eladash b31a0115b2 cellFsStat Improvements 2020-09-19 13:53:04 +01:00
Eladash ed032dc985 cellGame: Improvements 2020-09-19 13:53:04 +01:00
Eladash c436ef0c6f
SPU: Implement channels 70, 71, add naming for channel 69 (#8932) 2020-09-19 13:08:35 +01:00
eladash 36ac68b436 SPU: Implement events channel count, minor interrupts fixes 2020-09-18 21:57:24 +03:00
Eladash a52a16807f PPU: Use SEQ-CST memory barrier in reservation load 2020-09-15 11:20:17 +02:00
Megamouse a2da187615 HLE: localize most - if not all - exposed strings 2020-09-14 18:24:18 +02:00
Eladash 3206378ae6 sys_spu: Fix overexecution of cpu_return() 2020-09-12 22:11:40 +03:00
Eladash 7ce790f369 SPU: Use ASM for AVX2 coompilation instead of intrinsics 2020-09-12 18:49:49 +03:00
Eladash 5db1427923 cellGame: Implement cellHddGameCheck2 2020-09-12 11:00:24 +02:00
Eladash 81eceb1728 cellSysUtil: Implement CELL_SYSUTIL_SYSTEMPARAM_ID_LICENSE_AREA 2020-09-12 11:00:24 +02:00
Megamouse 639650c65a Add more defines to cellSysutil 2020-09-12 09:56:51 +02:00
Eladash 9ff0b460a2 SPU: Make PUTLLUC LR event accurate 2020-09-11 09:02:18 +02:00
Eladash 4f0125a0e9 SPU: Remove "Accurate PUTLLUC" setting (always accurate) 2020-09-11 09:02:18 +02:00
Eladash d489b02fc1 PPU: Do not allow unaligned/unmapped reservation addresses 2020-09-10 13:35:57 +02:00
RipleyTom 676fed7cfc Only bind 3658 with RPCN 2020-09-09 23:56:25 +02:00
RipleyTom d9d354c981 Makes DNS processing more consistent 2020-09-09 23:56:25 +02:00
Eladash 1e4655aef6
SPU: Remove STOP 0x0 hack (#8873) 2020-09-09 11:36:04 +01:00
Ani 22dc2947b3
hle: Implement ID_CURRENT_USER_HAS_NP_ACCOUNT (#8864) 2020-09-08 15:12:47 +01:00
Eladash 43fce92aa9 PPU: reduce LARX logging level to warning 2020-09-08 15:23:55 +02:00
Megamouse fee96ec92d fix some warnings 2020-09-08 12:05:51 +02:00
Eladash 9134388f94 sys_process: Implement exitspawn error checking 2020-09-08 07:36:36 +02:00
RipleyTom 10820fa135
Implement sceNpSignaling & signaling improvements (#8836) 2020-09-07 22:50:17 +01:00
Eladash 2f3e0044f1
PPU: Cleanup & unify reservation loads (#8849) 2020-09-07 22:06:09 +01:00
Eladash 5060c779da
SPU: Use unaligned instructions in mov_rdata_avx (MSVC) (#8851) 2020-09-07 21:32:44 +01:00
Eladash abc715bc5c
SPU: Make PUT transfers use SEQ-CST ordering on Accurate DMA (#8844) 2020-09-06 12:09:14 +01:00
Eladash 2688081656 SPU: Use unaligned AVX instructions for cmp_data_avx 2020-09-06 07:51:12 +03:00
Eladash e4abd3dc5a SPU: Do not ignore pending PUT tranfers just becase GET may not be cache-line atomic
This is not the proper way to emulate non-atomic GET tranfers, as it makes it seems as if PUT atomic tranfers arent atomic. (TODO)
Incomplete GET cache line accesses still do not verify data though.
2020-09-05 22:23:55 +03:00
Eladash c7a185d4e7 SPU: Fix not acuiring reservation locks on DMA with more than one cache line (Accurate DMA) 2020-09-05 22:23:55 +03:00
Eladash 4ffc58a8ce SPU: Cleanup for Accurate PUTLLUC
Should no longer affect GET commands because Accurate DMA is available for this functionality.
2020-09-04 10:20:44 +02:00
Eladash c5c9ea1b21 SPU: Make GET's full and aligned cache line accesses atomic with Accurate DMA 2020-09-04 10:20:44 +02:00
Eladash 73d23eb6e6
SPU: Implement Accurate DMA (#8822) 2020-09-02 23:58:29 +02:00
Eladash 6952be5ce4 Debugger: Replace SPU register perefix '$' with 'r' 2020-08-28 20:44:13 +02:00
RipleyTom 4317291827
tcp_timeout_monitor deadlock fix (#8783) 2020-08-28 01:06:01 +01:00
Nekotekina bd40430d2b Fix some warnng in lv2.cpp 2020-08-28 01:54:39 +03:00
Nekotekina ebc4a0188a Restore some code 2020-08-28 01:54:39 +03:00
Eladash 019d2d5dcf Implement HLE cellSpursAddUrgentCommand 2020-08-27 23:52:37 +01:00
Eladash 17f7f329a8 Log PRX segment end for usage with kernel explorer 2020-08-27 23:52:37 +01:00
Eladash 933737e8f0 PPU: log LR in HLE functions 2020-08-27 23:52:37 +01:00
Eladash 47b545282e
SPU: Fix events ACK, minor optimizations (#8771) 2020-08-27 21:36:54 +01:00
RipleyTom 190822c2b2
RPCN Client (#8663) 2020-08-27 20:47:04 +01:00
Eladash c099bb817f Debugger: Disable PPU address redirection
It causes more confusion than it helps.
2020-08-25 17:43:07 +02:00
Eladash 7fe98d8d66 Debugger: Add missing PPU stack register checks 2020-08-25 17:43:07 +02:00
Eladash 3ce7fd7894 Debugger: Fix instructions editor 2020-08-25 17:43:07 +02:00
Eladash c5aebe4564 Debugger: Implement PPU SLWI, SRWI, SLDI mnemonics 2020-08-24 02:10:51 +03:00
Eladash 841b8fad38 SPU: Fix timer events 2020-08-24 01:57:32 +03:00
Bevan Weiss ab0df0a0f5
Support for Namco GCon3 gun (#8757)
This gun now works (passes calibration) in Time Crisis 4.
2020-08-22 15:41:08 +02:00
Eladash edc09e22b4
PSF: Avoid redundent string copies in psf::array/string/get_string (#8707) 2020-08-21 23:55:17 +01:00
Eladash 4a40ef6a19
Debugger: Use Signed Hexadecimal formatting (#8751) 2020-08-20 22:07:31 +01:00
Eladash 19500ac9ad Fix truncation warning in sys_cond.cpp 2020-08-17 17:36:27 +01:00
Eladash 995cb8125e
SPU LLVM: Improve approx FCGT (#8728) 2020-08-14 19:33:35 +01:00
Whatcookie 9e4f43f4d1
SPU LLVM: Add icelake optimized paths for SHUFB (#8712) 2020-08-13 15:00:56 +01:00
Eladash 8cdfe5952a
SPU/PPU LLVM: Improve 0 addend FMA detection (#8709) 2020-08-13 04:13:08 +03:00
Eladash 0f8ca1f7c5
SPU: Implement RSX accurate reservations on TSX (#8721) 2020-08-13 00:00:37 +01:00
Whatcookie 4ce2ad54a8
PPU LLVM: Use VPERM2B to emulate VPERM (#8704)
- The VPERM2B instructions are a match of VPERM's behavior, besides operating in reverse byte order
2020-08-09 01:50:26 +01:00
Eladash 0c85d4c0d0
cellSaveData: Fix loss of "BLIST" and files' information in PARAM.SFO (#8706) 2020-08-08 23:40:47 +01:00
Eladash 57471f8c94 SPU LLVM: Fix signed zeroes handling on Accurate xfloat 2020-08-08 22:21:22 +01:00
Eladash 7e11855330 SPU/PPU LLVM: Fix FMA signed zeroes handling 2020-08-08 22:21:22 +01:00
Bevan Weiss ada6db2df4
Replace ppu_module_manager Function Static with Class Static variable (static module map) (#8669)
* Replace ppu_module_manager Function Static with Class Static

Makes for a slightly 'cleaner' interface in my opinion, may also assist with adding thread read/write concurrency support in future if ever required (have left that out of this commit to match existing function).

Very slight performance improvements were seen in representative testing.
https://quick-bench.com/q/GMbgeNc-mZc21aqOKCofnbzPZvg

I didn't investigate whether static initialisation of the static_modules might actually be possible here, perhaps there's a way to do a constexpr / consteval of this.

* Fix up for old style cast syntax..

* Fixups from PR comments

Plus remove spurious type_traits include (from me) not picked up in previous PR

* Remove old code

* Update rpcs3/Emu/Cell/PPUModule.h

Co-authored-by: Eladash <elad3356p@gmail.com>

* Fix naming of static variable

Co-authored-by: Eladash <elad3356p@gmail.com>
2020-08-06 12:34:08 +02:00
Bevan Weiss eee5e812f7 Fix for incorrect assignment of ghlguitar
found_ghltar was potentially being overwritten if multiple USB devices were present
2020-08-06 12:01:21 +02:00
Bevan Weiss eb5ae94c24 sys_usbd tidy ups
Tidy up fake transfer iterator handling. erase invalidates all iterators including the current iterator (i.e. 'it'), given precedence ordering this was UB prior to C++17.  Splitting out to use return iterator from erase seems cleaner.
Also added some additional info to usb debug message to potentially help with #8666, and used the atomic (dev_counter) less often
2020-08-06 12:01:21 +02:00
Eladash 70fb5712e5 PPU interpreters: Fix VMAXFP NaN and signed zeroes handling 2020-08-03 15:43:00 +01:00
Eladash 6a51c27fde PPU LLVM: Fix VMAXFP, VMINFP NaN handling 2020-08-03 15:43:00 +01:00
Eladash 17f965c171 lv2: Minor fix of "unspecific ppu" path of _sys_lwcond_signal 2020-08-03 02:57:20 +03:00
Eladash dd497625a5 PPU LLVM: Fix constant folding of BitCast 2020-07-30 17:06:24 +01:00
Eladash f6764767f6 SPU/PPU LLVM: Fix cpu_translator::get_const_vector<v128>() 2020-07-30 17:06:24 +01:00
Eladash e52dd9dc6f
SPU: Implement SYS_SPU_THREAD_OPTION_DEC_SYNC_TB_ENABLE (#8657) 2020-07-30 14:01:25 +01:00
Eladash 82068cf802
SPU: Fix spu_thread::cpu_stop() missed executions (#8656) 2020-07-30 10:07:18 +01:00
Eladash 21a1072117 SPU LLVM: Minor cleanup after #8559 2020-07-29 03:32:21 +03:00
Bevan Weiss 609182b131 Update cellAudio to use float constants instead of doubles
Another simple Clang recommendation
2020-07-26 17:23:02 +03:00
Malcolm Jestadt a9d0ffcac1 SPU LLVM: Avoid additional endian swapping
- Avoid additional endian swapping with the ROTQBY and ROTQBYBI instructions
- ROTQBYI is left out intentionally, since it caused worse codegen
2020-07-26 11:36:50 +01:00
Malcolm Jestadt 824be77bba SPU LLVM: Avoid redundant endian swapping
- PSHUFB operates in reverse byte order from SHUFB, so we can take advantage of that to swap endianness without additional transformations in some situations
2020-07-26 11:36:50 +01:00
Whatcookie 9f829b375a
SPU/PPU LLVM: Optimize VSEL/SELB with constant mask (#8559) 2020-07-25 17:59:35 +01:00
Eladash da44d5f10d
PPU: Fix DIVW, DIVWU, MULHW, MULLW, MULHWU when op.rc is set (#8630) 2020-07-25 17:13:58 +01:00
Eladash 917069e31a
PPU Precise/LLVM: Support NJ modes (#8617) 2020-07-25 07:41:41 +01:00
Eladash 3354c800d7
SPU/PPU LLVM: Improve expressions matching (#8620) 2020-07-24 16:53:48 +01:00
Megamouse bb3ac62126 cellMic: use s32 consistently 2020-07-24 14:47:10 +02:00
Megamouse 6e25fea16a use not_an_error in sys_spinlock_trylock 2020-07-24 14:47:10 +02:00
Megamouse 5e7c6853c2 fix truncation warnings 2020-07-24 14:47:10 +02:00
Megamouse f76a011ba0 fix sceNpCommerce2CreateCtx log message 2020-07-24 14:47:10 +02:00
Megamouse d854a39500 add a gazillion more error_code 2020-07-24 14:47:10 +02:00
Megamouse a00ebacef3 cellFont: add error_code 2020-07-24 14:47:10 +02:00
Megamouse c2f4244c4d cellMic: error_code, random cleanup and stubbing 2020-07-24 14:47:10 +02:00
Megamouse 7437c324c6 cellMusic: add error_code 2020-07-24 14:47:10 +02:00
Eladash 54b87b6dbb cellSaveData: Increase sleep time 2020-07-23 13:45:58 +03:00
Eladash a029a94c73 SPU: Use waitable atomics for SPU channels interface 2020-07-23 13:45:58 +03:00
illusion 3157a10428 move executable hash log level to success 2020-07-22 10:51:19 +02:00
Eladash f8d2d8ca11 SPU/Windows: Fix LS memory mirrors
This is a workaround but this is because of how utils::shm works on Windows path.
2020-07-19 17:58:49 +03:00
Eladash c37bc3c55c SPU: Make spu_thread::offset private 2020-07-19 17:58:49 +03:00
Malcolm Jestadt 6cc0fe4221 SPU LLVM: Avoid negative clamping when the input is known to be positive 2020-07-19 17:56:59 +03:00
Eladash af1ceb1151 SPU LLVM: LS Memory Mirrors (Optimize loads/stores) 2020-07-18 02:01:33 +03:00
Eladash 282b00674a SPU LLVM: Optimize non-constant Tag Update requests 2020-07-10 02:52:02 +03:00
Eladash 235d12aa6b SPU MFC: Never clear tag status in WrTagUpdate 2020-07-10 02:52:02 +03:00
Eladash 5d1fc546a8 SPU MFC: Fix MFC_WrTagUpdate channel count
Always report available, in realhw this is just a hint if the previous tag update hasnt been checked yet by the MFC, avoiding blocking writes and allowing the SPU to execute some code while it processes the previous update request.
Except for MFC_TAG_UPDATE_IMMEDIATE, where it also waits for MFC to process it.
2020-07-10 02:52:02 +03:00
Eladash eb993781ef RawSPU: Log MMIO access 2020-07-09 23:24:47 +03:00
Eladash 84470c34db SPU: Disable PUTLLC NOP transfers detection on TSX path 2020-07-09 03:17:35 +01:00
Eladash f8dbfa1d1e SPU: Implement GETLLAR polling detection 2020-07-09 03:17:35 +01:00
Eladash d9750e8f9f SPU/PPU reservations: Optimizations for reservation locks and check_state() (non-TSX) 2020-07-09 03:17:35 +01:00
Megamouse 53b95fea19 audio: rename audio channels to audio downmix
The setting does not actually define the channels themselves, only the downmix option that the PS3 provides.
Channels might be changed seperately in the future.
2020-07-08 21:11:23 +02:00
Megamouse e2fd4e46f7 Only reboot audio if a relevant setting changed 2020-07-08 21:11:23 +02:00
Megamouse 20d6664dc1 Try to make most audio configs dynamic 2020-07-08 21:11:23 +02:00
Megamouse bb0aaea92d cellAudio: implement downmix to 5.1 2020-07-08 21:11:23 +02:00
Megamouse 5fae1b3637 HLE: fix sceNpDrmGetTimelimit invalid param error 2020-07-07 09:43:32 +02:00
Derrik Touve cb08c53f2f
sys_net: Use np_handler dns if possible for sys_net_infoctl (#8557)
Without this, cellHttpSendRequest will use the hardcoded dns 192.168.1.1, which won't work if you're not on that network.
2020-07-07 08:25:29 +02:00
Eladash dc25a3fa2a PPU debugger: Show stack address of each function 2020-07-06 18:58:16 +02:00
Eladash c98ec4d014 PPU debugger: Fix functions stack bounds check 2020-07-06 18:58:16 +02:00
Eladash 72337f2678 SPU LLVM: Fix barrier commands enqueuing 2020-07-02 22:46:02 +03:00
Megamouse 5269b69bc5 cellAudio: use downmix formula based on documentation 2020-06-29 09:06:36 +02:00
Eladash 2483cc6f8d Fix race in Crypto/unedat.cpp, Make NPDRM keys usage atomic 2020-06-28 23:26:10 +01:00
Eladash 97717defa5 Remove devKlic/rifKey reset 2020-06-28 23:26:10 +01:00
Eladash 2c93fecd8b SPU: Use named constants for MFC tag updates 2020-06-27 20:42:41 +01:00
Eladash 20fcc6530f SPU LLVM: Fix WRCH instruction to WrTagUpd 2020-06-27 20:42:41 +01:00
Eladash 9cb4402c16 Make error_code::value member private 2020-06-27 09:02:55 +01:00
Eladash f29589e5cf SPU debugger: Add atomic status and tag update channels information 2020-06-27 07:04:37 +01:00
Eladash d7842b7de2 SPU LLVM: Fix WRCH instruction to WrTagMask 2020-06-27 07:04:37 +01:00
Megamouse 76faaf43f7 Input: Use global variables for pad modifications 2020-06-26 04:42:52 +02:00
Eladash ab9cdc70ad cellSaveData: Emulate PPU processing of auto/list post-fixed callback 2020-06-25 19:50:33 +03:00
Eladash e45d37073a debugger: Shortend SPU/PPU thread names 2020-06-24 17:44:06 +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
Eladash 3ee1d8aed1 fixup 2020-06-18 06:47:07 +03:00
Eladash 5c6dae498b SPU LLVM: Avoid bad optimization in FCGT 2020-06-18 06:47:07 +03:00
Eladash 731d4330fe
v128: A few optimizations (#8432) 2020-06-15 17:24:04 +03:00
Eladash 5777a1d426 SPU: Implement EBUSY error on non-empty mailbox (sys_spu_thread_send_event/sys_event_flag_set_bit)
Write into inbound mailbox under mutex.
2020-06-15 17:08:57 +03:00
Eladash 5fda9a4efb sus_lwcond_signal_all: use protocol specified in lwmutex
Trying to fix a nearly impossible corner case.
2020-06-15 17:08:57 +03:00
Eladash c15b5f1eca SPU: Move check_state() outside of mutex scope
Can result in a deadlock in some cases, cpu flags are checked after this function as well anyways.
2020-06-15 17:08:57 +03:00
Eladash 314dc4c5de sys_cond: Fix spurious EBUSY in sys_cond_destroy
Increment waiters count inside IDM's mutex lock scope.
2020-06-15 17:08:57 +03:00
Eladash a0f0f58fc5 sys_event_queue: Fix IPC support 2020-06-15 17:08:57 +03:00
Eladash 92b7c56f29 sys_cond/mutex: Fix race between sys_cond_create and sys_mutex, Fix IPC support in sys_cond/mutex 2020-06-15 17:08:57 +03:00
Eladash 88a0e0fe2d cellAudio: Minor fixup 2020-06-14 18:45:46 +01:00
Eladash 5430892052
sys_vm: Limit total process vsize to 256MB (#8431) 2020-06-14 15:27:34 +01:00
Eladash ff04cd6d69 cellAudio: Fix event queue attachment 2020-06-14 02:31:23 +03:00
Eladash aa4fdff82c Fix lv2_obj::name64 regression 2020-06-14 02:25:29 +03:00
Eladash e1f8573c68 sys_net: Fix sys_net_bnet_setsockopt page faults 2020-06-12 22:39:13 +03:00
Eladash 4bc157881d sys_net: Stub sys_net_infoctl command 9 2020-06-12 22:39:13 +03:00
Eladash f0d526411c IDM: Implement idm::clear<typename> 2020-06-12 22:12:36 +03:00
Eladash 6892399699 kernel_explorer: More Improvements 2020-06-12 09:28:23 +02:00
Eladash b9cb181691 sys_memory: Improve allocation/deallocation syscalls 2020-06-11 20:03:32 +03:00
Eladash 0bf8f2a527 PPU interpreters: Fix VRFIM, VRFIN, VRFIP, VRFIZ 2020-06-11 14:31:38 +03:00
Eladash c36c425fb9 kernel explorer: Improvements 2020-06-08 05:46:36 +03:00
Nekotekina 3d7c38ff9d Remove lambda in sys_net_bnet_poll 2020-06-07 22:44:07 +03:00
Nekotekina 5d27f1c732 PPU: implement VNMSUBFP (precise variant) 2020-06-07 22:44:07 +03:00
Nekotekina 3b8e7d0967 Implement v128::fma32f 2020-06-07 22:44:07 +03:00
Malcolm Jestadt dcf5c06d6d SPU LLVM: Optimize FM when op.ra == op.rb 2020-06-06 22:27:48 +03:00
Malcolm Jestadt 8357523ec0 SPU LLVM: Additional FCGT optimizations 2020-06-06 22:27:48 +03:00
Malcolm Jestadt 39149fd84d SPU LLVM: Partial revert for FM/FMA changes and other improvements
- Revert changes to FM and FMA instructions
- Allow non accurate/approx FMA family instructions to use native FMA
- Minor optimization for FMA ops with a constant 0 multiply
2020-06-06 22:27:48 +03:00
Malcolm Jestadt 289c594187 SPU LLVM: Fix theoretical issue with FCGT optimizations 2020-06-06 22:27:48 +03:00
Megamouse 1cb4fb9c50 stub cellPngEnc 2020-06-04 23:13:40 +03:00
Megamouse 413f87b737 Add error_code to cellPngDec 2020-06-04 23:13:40 +03:00
Megamouse 8a8edb1b62 stub sceNpCommerce2 2020-06-04 23:13:40 +03:00
Megamouse caa1324457 stub sceNpTus 2020-06-04 23:13:40 +03:00
Megamouse 41eb6d4461 cellAudio improvements
- use CELL_AUDIO_BLOCK_32 where possible
- use CELL_AUDIO_BLOCK_SAMPLES where possible
- remove redundant logging
- return CELL_AUDIO_ERROR_AUDIOSYSTEM in cellAudioGetPortConfig (probably unreachable code anyway)
- return CELL_AUDIO_ERROR_PORT_OPEN in cellAudioPortOpen
- stub cellAudioSetPersonalDevice cellAudioUnsetPersonalDevice and cellAudioMiscSetAccessoryVolume
2020-06-04 23:09:47 +03:00
sampletext32 437f374bae Fix some checks 2020-06-04 19:48:08 +03:00
Ani 9657b3f1d4
Fix sys_net_bnet_poll regression (#8337)
Co-authored-by: Eladash <elad3356p@gmail.com>
2020-06-04 17:30:11 +01:00
Malcolm Jestadt c601374b1f SPU LLVM: Use clamping helpers for FMA32x4 and FM 2020-06-01 21:39:28 +03:00
Nekotekina 938ca90a02 Improve Stop Watchdog
Prevent termination if PPU LLVM compilation is in progress.
2020-06-01 02:27:33 +03:00
Nekotekina 1507a59786 SPU LLVM: fix spu_cache dependency
Should fix possible crash on exit.
2020-05-31 21:54:04 +03:00
Eladash 675fde69aa Avoid copying std::shared_ptr in sys_semaphore 2020-05-31 21:02:52 +03:00
Megamouse 99895471ae cellAudio: make master volume dynamic 2020-05-31 07:37:59 +02:00
Eladash f0cdd8ace6 PPU: Implement PPU Traps Stubbing option 2020-05-27 22:39:29 +03:00
Nekotekina 8e9d2fa70e SPU LLVM: implement get_segment_base()
Fake function used to compute 32-bit offset of local functions.
2020-05-27 18:53:09 +03:00
Nekotekina abf9a08ee3 Fix warnings 2020-05-27 18:41:17 +03:00
Eladash 865180e63e sys_mmapper: Fix possible memory leak on error of create_lv2_shm 2020-05-24 19:24:07 +03:00
Eladash 3265772ae4 idm: Implement creation/destruction invalidation counter
* "Ensures" newely created IDs won't have the same ID as old destroyed objects for lv2_obj. (256 tries cycle)

Similar to how the kernel implements it.
2020-05-24 19:24:07 +03:00
Mrlinkwii 68bee397eb Update cellSpurs.h 2020-05-22 22:19:04 +03:00
Eladash 81749f4353 SPU/PPU disasm: replace unknown instructions message with question marks 2020-05-22 17:37:22 +03:00
Eladash 7c3166a0c6 SPU MFC: Fix MFC_WrListStallAck on interpreters 2020-05-20 22:55:30 +03:00
Eladash 4405f46aec SPU MFC: Fix SN interrupts 2020-05-20 22:55:30 +03:00
Eladash 81684919f5 SPU MFC: Implement MFC_SDCRZ_CMD 2020-05-20 22:55:30 +03:00
sampletext32 1a8fb61373 Fix some misspells
Note: in main.cpp there are many dirs similar to Program Files, so tip should be appropriate.
2020-05-20 22:53:24 +03:00
Malcolm Jestadt c47d04fd2f SPU: Optimize FCGT
- Optimize FCGT to a single signed integer comparison when possible
- Add is_spu_float_zero helper
2020-05-20 21:55:01 +03:00
Eladash 201d54ee08 PPU interpreters: Implement AltiVec NaNs precedence and data preservation 2020-05-18 00:35:06 +03:00
Eladash 377e2ce3e8
rsx: Write 4-byte long data to all semaphores (#8246)
* rsx: Write 4-byte long data to all semaphores
2020-05-17 17:48:35 +03:00
Eladash a2653532ef SPU reservations (TSX): Remove wait flag in PUTQLLUC 2020-05-17 14:20:21 +03:00
Eladash 8a0425570c
rsx: Fix data written to RSX semaphores and the initial data of them (#8235) 2020-05-16 09:55:56 +01:00
Nekotekina 7824419bbf Remove std::rotr usage for now
It seems to be missing on some std implementations.
2020-05-14 21:42:44 +03:00
Eladash 61f43d78df SPU: Minor cleanup of exception in stop_and_signal 2020-05-14 16:58:50 +01:00
Eladash 54dd9f4eae sys_spu: Fix sys_spu_thread_group_terminate vs sys_spu_thread_group_exit race on values 2020-05-14 16:58:50 +01:00
Eladash 91d06a9729
SPU LLVM: fixup after #8175 (#8214)
Mask out RESULT cmd bit, do not create unbound branch blocks. (non-TSX)
2020-05-14 13:34:14 +01:00
Nick Renieris b1fb5b6239 Emu/Config: Add option for accurate PPU LLVM vector NaNs
Turned off by default.
2020-05-14 11:14:28 +01:00
Nick Renieris 20d8d38e53 PPU Interpreter: Accurate vector instruction NaNs
Tested with https://github.com/RPCS3/ps3autotests/tree/master/tests/cpu/ppu_vpu.
This commit gets us from 2746 to 353 different lines compared to realhw.
2020-05-14 11:14:28 +01:00
Nick Renieris 78ac2a86bb PPU LLVM: Accurate vector instruction NaNs
Tested with https://github.com/RPCS3/ps3autotests/tree/master/tests/cpu/ppu_vpu,
results in that test improved by about half.
2020-05-14 11:14:28 +01:00
Eladash 7680466e0d Minor EFAULT fix in sys_semaphore_get_value/sys_event_flag_get
ESRCH preceeds EFAULT in both syscalls.
2020-05-13 19:36:44 +03:00
Eladash 9266507e4c SPU: Implement spu_channel_(4_)t::try_read 2020-05-13 19:36:44 +03:00
Eladash 8cca113ef4 sys_spu: Add short sleep in sys_spu_thread_group_terminate 2020-05-13 19:36:44 +03:00
Eladash 7ff25588f4 sys_spu: Minor cleanup of group termination process 2020-05-13 19:36:44 +03:00
Eladash 5c4c8f4539 PPU: Use optimized reservation waiting for reservation load (non-TSX) 2020-05-13 16:53:59 +03:00
Eladash 12f0278808 SPU LLVM: Improve MFC transfers recompilation for non-TSX 2020-05-13 11:10:13 +01:00
Eladash 525453794f SPU/PPU reservations: Optimizations part 1
- Implement vm::reservation_trylock, optimized locking on reservation stores with no waiting. Always fail if reservation lock bitsa are set.
- Make SPU accurate GET transfers on non-TSX not modify reservation lock bits.
- Add some optimization regarding to unmodified data reservations writes.
2020-05-13 11:10:13 +01:00
Megamouse eb5ec211c2 Input: remember registered ldd controllers
- Don't reset ldd pads when saving a pad config
- Prevent configuration of registered ldd pads in the gui while ingame
2020-05-13 11:17:58 +02:00
Eladash f95b81574f
sys_spu: Fix race in sys_spu_thread_group_destroy and other minor fixes (#8182)
* sys_spu: Fix race in sys_spu_thread_group_destroy and other minor fixes

* SPU: Wait for all threads to have error codes if exited by sys_spu_thread_exit

On last thread in group to run.

* sys_spu: Fix sys_spu_thread_group_start

* fixup ad fix sys_spu_thread_group_terminate

idk why "- !group->running" was put in the first place but its probably no longer relevant due to other changes and was causing other issues such as not always waiting for last SPU thread to set group state to INITIALIZED.
2020-05-11 21:24:04 +03:00
Eladash bd61347b21 sys_spu: reset group exit status in sys_spu_thread_group_start 2020-05-10 03:46:11 +01:00
Eladash 09797c3584 sys_spu: Improve sys_spu_thread_get_exit_status 2020-05-10 03:46:11 +01:00
Nekotekina e1042bc631 Get rid of "module" keyword
Workaround some intellisense problems.
2020-05-06 18:20:11 +03:00
Nekotekina 907adc817e Fix some warnings (GCC) 2020-05-05 21:55:22 +03:00
Eladash 1bd6cb2105 SPU/PPU debugger: use ':' instead of '=' 2020-05-05 13:46:26 +03:00
Eladash edde748519 sys_event_queue: Fix forced event queue destruction
Add missing last existence check at sys_spu_thread_(try)receive_event and lv2_event_queue::send.
2020-05-04 01:10:19 +03:00
Eladash 37ce7056ac lv2: Minor optimization for "awake all" threads in sleep queue 2020-05-04 01:10:19 +03:00
Eladash b84b8f4db4 sys_cond_signal_all: Use SYS_SYNC_PRIORITY protocol to signal threads 2020-05-04 01:10:19 +03:00
Eladash 72bef8dd7f PPU: Clear reservation on context switch
Ensure that only 2 PPU reservations exist at maximum at a time.
2020-05-02 14:57:38 +03:00
Eladash 0e6937a359 SPU GETLLAR: Don't use loop detection for TSX 2020-05-02 14:57:38 +03:00
Malcolm Jestadt c1bd154bcd SPU: Optimize FMA ops with 0 addend 2020-05-01 17:52:10 +03:00
Eladash 2b75df22d9 sys_event_queue: Fix ports disconnection after queue destruction 2020-04-30 18:58:42 +03:00
Eladash 37110098c7 cellAudioOut Improvements 2020-04-30 15:45:20 +03:00
Nekotekina 19acf260d8 SPU DMA: Fix PUTLLUC (TSX)
Prevent edge case of missing store.
2020-04-29 15:40:41 +03:00
Eladash f4f0fb88b1 kernel explorer: Add more information about SPU/PPU threads 2020-04-29 15:32:16 +03:00
Eladash dd6825a7bd Fix sys_ppu_thread_start error checking, fix rare bug in sys_ppu_thread_create
* Correct error code to EBUSY.
* lv2_obj::awake was called even when EBSUY should be returned.
* Fix sys_ppu_thread_create for a newly created thread with the same id as ppu_thread::id_base. (can happen if main thread exited before its creation)
2020-04-29 08:58:09 +03:00
Eladash c1dc6838fa Fix sys_ppu_thread_get_priority page faults 2020-04-29 07:57:47 +03:00
Eladash 69f82a7311 Make spu_mfc_cmd fmt properly show stalled commands 2020-04-29 07:47:49 +03:00
Eladash 791ec95313 sys_rwlock: Do not allow SYS_SYNC_PRIORITY_INHERIT 2020-04-29 05:56:47 +03:00
Eladash 954e3f6e6c Fixup for cpu_flag::pause state check after #8114 2020-04-29 05:56:47 +03:00
Nekotekina 689419b0ca Remove test_stopped() check from ppu_load_acquire_reservation
Fixes warning.
2020-04-29 00:09:40 +03:00
Eladash a505d87565 Partial revert of 3be687cd18 2020-04-28 20:20:19 +03:00
Nekotekina 790fd9ce14 SPU DMA: implement cmp_rdata_avx
Use technique similar to mov_rdata_avx with inline assembly.
2020-04-28 17:58:26 +03:00
Eladash 7da8ba5c15 Wait for SPU event to be received in sys_spu_thread_group_exit
Also use atomic check for group->run_state outside the mutex,
explicitly forbid group termination while we are waiting for an event to be received.
2020-04-28 14:58:17 +03:00
Eladash a9c18964b6 Add missing cpu state check sys_spu_thread_receive_event 2020-04-28 14:58:17 +03:00
Eladash fe7933b0d2 Make ESTAT consistent in sys_spu_thread_group_terminate 2020-04-28 14:58:17 +03:00
Eladash 9506676223 SPU debugger: dump Stall Stat and SRR0 2020-04-28 14:27:40 +03:00
Eladash 7d7909149f SPU: Detect reservation spinning loop 2020-04-28 14:27:40 +03:00
Eladash 3be687cd18 PPU: Fix LWARX/LDARX on TSX path 2020-04-28 14:27:40 +03:00
Eladash e423128a32 SPU: New GETLLAR technique 2020-04-28 14:27:40 +03:00
Nekotekina 3ec73b651e SPU DMA: more tuning for mov_rdata_avx
Avoid unaligned stores.
Prefer asm path if __AVX2__ is not set.
Don't emit vzeroupper if __AVX__ is set.
2020-04-27 18:05:52 +03:00
Nekotekina 4f71c570bd SPU DMA: disable memcpy path
Due to update of the alternative path (SSE/AVX)
2020-04-26 22:36:55 +03:00
Nekotekina 8ae2554505 Implement mov_rdata_avx 2020-04-26 22:36:45 +03:00
Nekotekina 58ba6d68bb Don't use std::popcount (workaround)
It seems MSVC uses POPCNT instruction when compiling for SSE2.
2020-04-25 18:01:39 +03:00
scribam 3fd3bd7ca1 spu: Add some "if constexpr" 2020-04-25 14:56:47 +03:00
Megamouse e4cb9ef7cd cellpad: add pclass_profile flags 2020-04-25 10:17:48 +02:00
Megamouse 4e6d95c5b8 Qt/input/cellpad: enable product choice 2020-04-25 10:17:48 +02:00
Eladash 256c74def2 sys_rsx: Fix error code instead of success on invalid context 2020-04-23 14:01:04 +03:00
Eladash c48ccc6f3c sys_rsx: Fix zcull bind error checking regression 2020-04-23 14:01:04 +03:00
Eladash 8c747bf0a2 sys_rsx: More error checks for ZCULL area binding
And clamp zcull offset to 256MB, it's unknown if only the error check clamps or it is clamped entirely.
2020-04-21 16:18:32 +01:00
Eladash dbce10d0e3
PPU LLVM: Fix rounding regression of FNMADDS, FNMSUBS (#8066)
* PPU LLVM: Fix rounding regression of FNMADDS, FNMSUBS
2020-04-19 20:55:26 +01:00
rxys 5101bc189e
Fix FMA copypasta (#8060) 2020-04-19 19:17:19 +01:00
Eladash 5960de2e20 PPUAnalyzer: Check if TOC from OPD is a valid address 2020-04-19 10:56:42 +01:00
Eladash 1cb3bf6dab Minor fixup for unimplemented syscall args dump 2020-04-19 10:56:42 +01:00
Eladash 0bf73ba0bc PPU debugger: report functions on registers display 2020-04-19 10:56:42 +01:00
Eladash 368bd7cf02 PPU debugger: read 32-bit pointer instead of 64-bit
PPU ABI supports only 32-bit pointers in userland, also fix it to use super ptr.
2020-04-19 10:56:42 +01:00
Eladash 83c7f6f149 debugger: Rephrase "Current function" to "In function"
Takes less space which makes actual function name display a bit nicer.
Also the meaning is clearer.
2020-04-19 10:56:42 +01:00
Eladash 6210507a37 sys_rsx: Fix tiles on MAIN memory error checking 2020-04-18 10:20:03 +03:00
Eladash 06d4505992 sceNp: Override k_licensee for PE game category
Co-Authored-By: AniLeo <ani-leo@outlook.com>
2020-04-17 11:41:50 +01:00
Eladash a3f2dfa232 sys_isolated_spu 2020-04-17 11:41:50 +01:00
Eladash 921b1aadfb lv2: Log all arguments of unimplemented syscalls 2020-04-17 11:41:50 +01: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
Eladash 8cb1f4fe26
liblv2 HLE: Fix spu_elf_info loader for SCE SPU images (#8045) 2020-04-15 21:19:46 +01:00
Nekotekina 074b9f94db Fix regression in SPU ASMJIT
Incorrect arithmetics.
2020-04-15 12:19:15 +03:00
Nekotekina b1b67a13c6 Revert "Replace rotate utils with std::rotl" (partial)
This reverts commit 4d8bfe328b.
2020-04-14 19:45:53 +03:00
Eladash bc3b70c338 Fix ppu_rotate_mask 2020-04-14 19:10:30 +03:00
Eladash 63be05d5d3 minor ppu fixup
does not affect anything except consistency.
2020-04-14 17:09:58 +03:00
Eladash ec1e82bc9d SPU debugger: Implement blocking functions dumping 2020-04-14 17:09:58 +03:00
scribam f37adc4188 Add fallthrough attribute 2020-04-14 17:06:58 +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 2dcc3255b2
Fix sys_net_bnet_sendto (#8026) 2020-04-13 18:49:12 +01:00
JohnHolmesII a8a83c9724 cellRtc: Extend before shift, per decompiled output 2020-04-13 14:37:11 +03:00
JohnHolmesII f0b1c8302a Fix order of operations warning 2020-04-13 14:37:11 +03:00
Eladash c8b8cafeec PPU: Merge reservations store functions into one 2020-04-13 14:34:37 +03:00
RipleyTom 791c0da236
Add Disney Portal to passthroughs (#8022) 2020-04-13 11:49:42 +01:00
Eladash b45d836b89 sys_net: Fix sys_net_bnet_bind page faults
+ EINVAL checks
2020-04-13 04:34:10 +01:00
Eladash 8f32d44635 sys_net: Fix sys_net_bnet_sendto 2020-04-13 04:34:10 +01:00
Eladash 9fb30f130a sys_net: Fix sys_net_bnet_getsockopt
+ EINVAL checks
2020-04-13 04:34:10 +01:00
Eladash d91d420981 sys_net: EINVAL check in sys_net_bnet_listen 2020-04-13 04:34:10 +01:00
Eladash 442035c251 sys_net: EINVAL checks in sys_net_bnet_accept 2020-04-13 04:34:10 +01:00
Eladash 063902728b sys_net: EINVAL checks in sys_net_bnet_recvfrom 2020-04-13 04:34:10 +01:00
Eladash 60a63fa4b6 sys_net: Fix sys_net_bnet_getsockname page faults
+ EINVAL checks
2020-04-13 04:34:10 +01:00
Eladash 7399a3f1e9 sys_net: Fix sys_net_bnet_getpeername page faults
+ EINVAL checks
2020-04-13 04:34:10 +01:00
Eladash c4f6968aae sys_net: Fix sys_net_bnet_connect page faults
+ EINVAL checks
2020-04-13 04:34:10 +01:00
Eladash 00957ca4bf sys_net: Fix sys_net_bnet_select page faults 2020-04-13 04:34:10 +01:00
Eladash 179a9b3bf0 sys_net: Fix sys_net_bnet_poll page faults 2020-04-13 04:34:10 +01:00
Eladash cb14805d78 rsx fp/vp analyzers: Fix strict type aliasing and improve codegen 2020-04-12 16:48:43 +03:00
Eladash ae1ff1e96d ppu exec loader: Log TLS image information 2020-04-12 10:30:38 +01:00
Eladash bb950cbb3b vm: Fix possible IDM deadlock with Page Fault Notifications (partial) 2020-04-12 10:30:38 +01:00
Whatcookie 6b0f7a8f55
PPU LLVM: Optimize altivec FMA with 0 addend (#8013)
- When VMADDFP and VNMSUBFP are used with a constant addend of 0, they can be simplified into a single floating multiply
2020-04-12 09:52:21 +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
Eladash e407018bb5 rsx: Write ref+get atomically
May contribute to better FIFO synchronization in some cases.
2020-04-11 21:21:15 +03:00
Eladash ff74c241c7 rsx: Fix get_optimal_blit_target_properties for local memory 2020-04-11 21:21:15 +03:00
Eladash d69bec8f59 rsx: Fix vblank thread stop regression 2020-04-11 21:21:15 +03:00
Eladash 504ba8d824 rsx: Fix grammer issue (binded -> bound) 2020-04-11 21:21:15 +03:00
Eladash 8228fa1ece sys_rsx: Warn if RSX is not idle during crucial points 2020-04-11 21:21:15 +03:00
Eladash 1f9f455801 sys_rsx: Implement error checks for Zcull/Tiles binding
* Check zcull/tiles offset if bigger than max MAIN/LOCAL size.
* Check memory mapping of offset if location is MAIN.
* Check pitch/size for 0 as coming from hw tests.
* In addition: fix 'bound' check of tiles, seem to rely on the bits location is in.
* Add locks for zcull/tiles/displaybuffer binding.
2020-04-11 21:21:15 +03:00
Eladash 5ba26e247b sys_rsx: Implement LLE cellGcmSysGetLastVBlankTime 2020-04-11 21:21:15 +03:00
Eladash d451a0b7b7 SPU LLVM: Improve FNMS
Should be more accurate with postive/negative zero inputs according to docs while being more optimized.
TODO: Check SPU precise interptreter.
2020-04-09 17:27:14 +03:00
Eladash 158b24ec25 SPU LLVM: Add accurate double-precision FMA support 2020-04-09 17:27:14 +03:00
Nekotekina 1b68f90e42 Tweak TSC calibration
Round to 3 digits after dot (count in MHz).
2020-04-09 16:23:33 +03:00
clienthax 765b14a8ba
Implement cellRtc HLE (#7933) 2020-04-09 15:54:41 +03:00
Eladash cce946f10e spu: typo fix 2020-04-08 19:23:13 +03:00
Eladash c948c9305c sys_ppu_thread_create: read function descriptor immediately and save it 2020-04-08 19:23:13 +03:00
Eladash c0f4fb6e35 SPU debugger: dump reservation address 2020-04-08 14:35:44 +03:00
Eladash cc8f024c6c Fixup ppu/spu_thread::dump_all() 2020-04-08 14:35:44 +03:00
Eladash 995fa63f4c sys_rsx: Fixup after #7978 2020-04-08 11:33:26 +03:00
Eladash f7536bbce0 sys_rsx: Fix gcm events spam
In realhw the events are only sent if they are masked in driver_info->handlers as well.
2020-04-07 20:43:28 +03:00