Commit graph

492 commits

Author SHA1 Message Date
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
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
85fa0942e7 vm: allow 4k-aligned allocations for vm::stack
Fix utils::shm::map logic for MapViewOfFileEx
2018-08-30 14:56:45 +03:00
Ani
6fc869e21b Revert d1fd4d5000 2018-08-20 00:12:30 +04: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
d1fd4d5000 PPU: don't use transactions (test) 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
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
isJuhn
83f096c435 Add conditional reservation update to STW 2018-06-23 23:13:34 +04:00
Nekotekina
6229b3ca8d Fixes for booting PS1 games 2018-06-23 17:30:16 +03:00
Nekotekina
e4da284176 SPU: analyser v4 and fixes
Build SPU cache after PPU, fix mixing progress
SPU ASMJIT: add support for Giga mode
SPU ASMJIT: use the same spu.log location as SPU LLVM
SPU: improve spu.log disasm
SPU: improve trampolines, unify with SPU ASMJIT
SPU: decode interrupt handler address from BR/BRA at 0x0
SPU LLVM: support Mega/Giga modes
SPU LLVM: implement function chunks
SPU LLVM: use PHI nodes, value visibility across basic blocks
SPU LLVM: implement function chunk table
New simple memory manager for LLVM (bugfix)
2018-06-21 22:29:34 +03:00
Nekotekina
b0ee369135 Rewrite LLVM compilation progress dialog
Use a single dialog
2018-05-30 20:35:35 +03:00
Nekotekina
72574b11ff SPU: use reservation spinlocks on writes (non-TSX)
This should decrease contention by avoiding global lock
2018-05-21 21:56:14 +03:00
Nekotekina
6fd402bcf8 Transactions: drop RDTSC usage
Use simple increment (minor optimization)
2018-05-21 00:18:37 +03:00
Nekotekina
33a1c743a4 Transactions: move loops inside
Rewrite loops in assembler (minor optimization)
2018-05-21 00:18:37 +03:00
Nekotekina
67391322f4 Transactions: touch memory only after a failure
Minor optimization
2018-05-17 22:19:26 +03:00
Nekotekina
367f039523 Build transactions at runtime
Drop _xbegin family intrinsics due to bad codegen
Implemented `notifier` class, replacing vm::notify
Minor optimization: detach transactions from global mutex on TSX path
Minor optimization: don't acquire vm::passive_lock on PPU on TSX path
2018-05-16 17:31:58 +03:00
Nekotekina
4c7afb6952 Opt-in set DAZ and FTZ 2018-05-13 00:03:08 +03:00
Nekotekina
737db90058 Set DAZ and FTZ 2018-05-09 23:38:26 +03:00
Nekotekina
5d15d64ec8 Memory mirror support
Implemented utils::memory_release (not used)
Implemented utils::shm class (handler for shared memory)
Improved sys_mmapper syscalls
Rewritten ppu_patch function
Implemented vm::get_super_ptr (ignores memory protection)
Minimal allocation alignment increased to 0x10000
2018-05-09 23:35:34 +03:00
Nekotekina
fe4c3c4d84 Implement SPU recompiler cache
Shared between ASMJIT/LLVM recompilers, compiled at startup
2018-05-09 23:35:18 +03:00
Nekotekina
f4af3f2987 PPU: improve LWARX/LDARX consistency 2018-05-08 13:05:29 +03:00
Robbie
477522210e Refactor debugger_frame into subclasses. Mostly trying to simplify
breakpoints.
2018-04-21 22:21:51 +04:00
Nekotekina
0797164fac SPU: fix possible livelock
The bug affects TSX path
2018-04-07 20:51:21 +03:00
Nekotekina
2b5cf2455f SPU: improve TSX usage
Reduce transaction failure amount
Remove vm::try_to_lock
2018-04-06 21:47:54 +03:00
Nekotekina
d392379c7a Use vm::passive_lock for SPU threads 2018-04-06 15:47:00 +03:00
Nekotekina
402ca480cd Fix vm::check_addr usage 2018-04-01 22:39:48 +03:00
Nekotekina
a3db2774f1 [LLVM] Fix thread limiter
Allow to apply max llvm threads setting as usual
2018-03-31 20:35:30 +03:00
Nekotekina
19944eeed0 Implement SPRX precompilation
Automatically precompile firmware modules
Add "Create LLVM Cache" menu (for games)
Reimplement jit_compiler::cpu as static method
2018-03-22 23:24:58 +03:00
Jake
7bbadfd08b ppu/sys_interrupt: add stack_reset command to fix sys_interrupt stack overflowing 2018-03-09 20:30:59 +04:00
Andrey
e0f53ace19 Improve GDB debug server (#4027)
* Made GDB debugger working with IDA

* Added async interrupts support

* Report proper thread after pausing

* Support attaching debugger before running app
2018-02-28 19:31:39 +04:00
Nekotekina
cce0ad0c35 Clean vm::ps3 namespace use 2018-02-09 17:49:37 +03:00
Megamouse
b9c10a186d Qt/Core: implement max llvm compile threads 2018-01-26 01:57:05 +04:00
kd-11
cbc8bf01a1 cell/scheduler: Manage thread placement depending on cpu hardware 2018-01-19 12:03:57 +03:00
TGEnigma
d770a42349 Fix debug build 2018-01-06 04:45:55 +04:00
Nekotekina
198e9dce1d Fix #4005 regression
Delay unregister EH frames (Linux)
2018-01-01 10:41:07 +03:00
VelocityRa
383c501a35 [gui] Show total number of llvm compilation dialogs
- Doesn't account for dynamic libraries loaded after the fact,
  but usually good enough since
  1) Those aren't even present in some games
  2) They usually only have about 1 or 2 fragments (dialogs) each.
2017-12-31 22:08:17 +03:00
Nekotekina
d40aaf0391 PPU: use shared jit_compiler instance
(Linux) Fix deregisterEHFrames error message
2017-12-31 22:08:17 +03:00
Nekotekina
0a89f1db39 Fix primary stack size 2017-12-25 21:08:15 +03:00
Nekotekina
83da7f9b63 PPU: remove SSSE3 dependency 2017-12-20 01:21:15 +03:00
Nekotekina
ac64792d99 Optimize PPU module loading
I'm garbage 🤦
2017-10-11 20:06:33 +03:00
Nekotekina
efe140bc0c Fix instruction editor a bit 2017-10-11 20:06:33 +03:00
Nekotekina
e5f756205c sys_net full rewrite
Implement sys_net syscalls
Clean libnet functions
Use libnet.sprx
Use libhttp.sprx
Use libssl.sprx
Use librudp.sprx
Implement sys_ss_random_number_generator
2017-10-05 19:51:37 +03:00
Nekotekina
b9b71ccbc1 Implemented syscall _sys_process_exit 2017-09-19 15:07:07 +03:00
Robbie
47685bef39 If the loop is never entered, then the jit is null. 2017-09-10 18:51:59 +03:00
Ofek
caab400258 Various fixes (Trophy, Gcm corrections, stack alloc) (#2894)
* Fixed sys_get_random_number generating less bytes than needed, and ceiling the buffer size in 0x1000 instead of failing
* Corrected alignment check in libgcm
* Now calling callback of sceNpManagerRegisterCallback
* Fixed trophies
2017-09-02 14:43:44 +03:00
Nekotekina
a85caaee1d Set PPU stack bounds 2017-09-01 21:24:43 +03:00
Nekotekina
2bc57fbee3 LLVM: Add error message 2017-07-23 11:03:38 +03:00
Nekotekina
42b06af577 Force recompiling liblv2.sprx 2017-07-23 11:03:38 +03:00