Commit graph

1862 commits

Author SHA1 Message Date
eladash 1ed2055ec1 Fix cellVdecGetPicItem element popping behaviour 2019-03-31 14:57:21 +03:00
eladash f2bbae9db4 Remove handle in cellVdecClose 2019-03-31 14:57:21 +03:00
eladash 8eb59271a5 Improve error checking of cellVdecOpen
Those are the initial argument checks done by the firmware
2019-03-31 14:57:21 +03:00
eladash d6025c6764 Fix cellPadGetInfo port status returned
ASSIGN_CHANGES flag is not returned in this func.
2019-03-31 14:57:21 +03:00
eladash 47ca1b1dda Minor optimizations in cellPad
- Dont bother with shared_ptr since all pad_t management is going under the pad mutex.

- Change m_pads type into std::array since its size is known
2019-03-31 14:57:21 +03:00
scribam f15eb88f59 hle: Fix cellSysutilAvcExt module
And add cellSysutilAvcExtSetChatMode and cellSysutilAvcExtSetChatGroup
functions
2019-03-31 00:55:55 +03:00
scribam 1916cc1691 hle: Add cellSysmoduleUnloadModuleInternal and cellSysmoduleLoadModuleInternal functions 2019-03-30 23:52:56 +03:00
scribam f369aeab7a hle: Add FT_Get_X11_Font_Format function 2019-03-30 23:52:56 +03:00
scribam 0e9313d2df hle: Add cellFontInitLibraryFreeType function 2019-03-30 23:52:56 +03:00
Nekotekina d873802b9c Use LLVM 9
Use new add/sub with saturation intrinsics
2019-03-30 01:36:48 +03:00
Nekotekina 7e0b941e9f PPU LLVM: implement get_vrs<>() adaptor
Make use of structured bindings
2019-03-30 01:36:48 +03:00
Nekotekina d77fed6105 SPU LLVM: remove wrong dead code 2019-03-29 17:00:53 +03:00
scribam a254a203bb hle: Add libad_async and libad_core modules 2019-03-27 21:41:44 +00:00
Nekotekina 71b88cdc82 New SPU interpreter (SPU fast)
Use LLVM to build SPU interpreter.
Simplify interpreter loop.
2019-03-27 20:33:44 +03:00
scribam a9eb321814 hle: Add sceNpEulaAbort function 2019-03-26 23:19:01 +03:00
scribam 956d039415 hle: Add cellVideoPlayerUtility module 2019-03-24 19:16:49 +03:00
scribam 581b205f73 hle: Add cellPesmUtility module 2019-03-24 19:16:49 +03:00
scribam 6c40b9f3e0 hle: Add cellDtcpIpUtility module 2019-03-24 19:16:49 +03:00
scribam d6bf18eabc hle: Add some sceNpMatchingInt functions 2019-03-24 17:29:18 +03:00
scribam 32ae7e466c hle: Add cellNetAoi module 2019-03-24 17:29:18 +03:00
Nekotekina 7ea04d5d76 Minor optimization in SPU analyser
Reduce vector copy/allocation
2019-03-23 02:43:41 +03:00
Nekotekina 4b381fbbb1 Implement spu_runtime::reset
To handle JIT: Out Of Memory error.
2019-03-23 02:43:41 +03:00
Nekotekina 1880a17f79 SPU recs: implement spu_runtime::find
Use this function to link to existing functions from branch patchpoints.
Don't compile from branch patchpoints.
2019-03-23 02:43:41 +03:00
Nekotekina 31304f4234 SPU rec: refactor some trampoline generation
Move branch/dispatch trampoline generation at startup.
2019-03-23 02:43:41 +03:00
Nekotekina 3794f65bb6 Add cpu_flag::jit_return 2019-03-23 02:43:41 +03:00
Nekotekina 849411693a PPU LLVM: add MemoryManager3
For temporary allocations.
Add flags in jit_compiler constructor.
2019-03-23 02:43:41 +03:00
Nekotekina 466d58ccef SPU LLVM: fix branch patchpoints
Forgot to passthrough 3rd arg (rip)
2019-03-23 02:43:41 +03:00
Nekotekina e9b6beadfc SPU LLVM: implement static branch weights
May help branch prediction in some cases
2019-03-13 21:14:55 +03:00
Nekotekina 388d49db80 SPU LLVM: fix SPU MMIO in TSX mode 2019-03-13 21:14:55 +03:00
Nekotekina 688aabc6c9 Add _sys_lwmutex_unlock2 syscall name 2019-03-12 23:55:13 +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
eladash a43e7c172c Fix shared memory page flags
TODO: From hw testing, it seems like sys_memory_get_page_attribute and sys_rsx_context_iomap check page size a little differently

get_page_attribute() always go by area flags, sys_rsx_context_iomap checks page by the page granularity
This means that if the area page size 64k, but shared memory is mapped with SYS_MEMORY_GRANULARITY_1M
It can be mapped for rsxio, but the page attribute will indicate 64k page size :thonk:
rsxio memory is verified to need 1m pages.
2019-03-08 23:44:46 +03:00
eladash 7470388e5a Use error_code in sys_rsx 2019-03-08 23:44:46 +03:00
eladash 26bcd0a4de Small improvements to sys_event_flag
- From RE, only protocols SYS_SYNC_FIFO and SYS_SYNC_PRIORITY are valid
- Use conditional atomic op store in a few places
- Properly revert changes in sys_event_flag_set when aomic op fails
2019-03-08 23:44:46 +03:00
elad fc253165e2 Correctness fix for RSXIOMem
- Make RSXIOMem volatile.
- Hint the compiler to check only once the address returned.
2019-03-08 23:44:46 +03:00
elad b7da3ea5cd Release ppu thread before ShowSaveDataDialog, Fixes #4031 2019-03-08 23:44:46 +03:00
elad f272a5f779 sys_lwmutex fixup after #5680
sys_lwcond_wait unlocks always with the 'usual' unlocking flags
2019-03-08 23:44:46 +03:00
RipleyTom 61bd2ea799 Adds VID/PID for Guitar Hero guitar & drum 2019-03-08 17:52:48 +00:00
elad 3c9f03968c Yield before flushing io buffers in fsync (sys_fs) (#5506) 2019-03-08 16:07:14 +00:00
Nekotekina 4ea76def7c Update sys_lwmutex_lock and sys_lwmutex_unlock (liblv2 HLE)
Implement missing SYS_SYNC_RETRY logic
Following #5680
2019-03-06 15:09:50 +03:00
eladash e38b7aee5a check address in sys_rsx_context_iomap
* Fix 0 vm page flags to behave like 1m flags, follows c8a681e60
* check if address exists and valid for rsx io allcations (must be allocated on 1m pages)
2019-03-05 21:23:24 +03:00
Nekotekina fb64b28886 SPU LLVM: reintroduce branch patchpoints
Previously only used on SPU ASMJIT, may improve perf in some cases.
Now refactored to spu_runtime::make_branch_patchpoint.
2019-03-01 00:08:20 +03:00
Nekotekina 7f6a410770 Add dummy __has_builtin macro, use rotate builtins if possible 2019-03-01 00:08:19 +03:00
Nekotekina 765d15f23f Optimize SPU trampolines
Load values in EAX and reuse it if possible
2019-03-01 00:08:19 +03:00
Nekotekina f143035af1 Fix sys_spu_thread_group_join wait condition
After waiting, thread group cannot be safely accessed
Following #5643
2019-03-01 00:08:19 +03:00
RipleyTom de5379a69f Static hle implementation 2019-02-27 22:54:59 +03:00
eladash a22297f205 exception throwing fix in sys_lwmutex_create
arg6 doesnt exist, if arg4 is not negative name is discarded and treated as 0.
2019-02-27 22:16:08 +03:00
eladash d4459af4b3 Implement _sys_lwmutex_unlock (SYS_SYNC_RETRY mode) 2019-02-27 22:16:08 +03:00
RipleyTom ad6b0ee122 Adds class type to controller options 2019-02-27 18:13:19 +00:00
Megamouse b107718869 sysPrxForUser: improve crash dump functions
this might fix some crashes that could appear in the todo logging itself
2019-02-26 21:53:59 +00:00