eladash
b307aff9eb
Prefetch byteswapped opcodes in ppu interpreter
2019-04-11 17:47:52 +03:00
eladash
182054b8af
Implement sys_vm_append/return_memory
2019-03-31 14:57:21 +03:00
eladash
a3f65084df
Fix sys_process_exit2 when SPUs are at av handler
2019-03-31 14:57:21 +03:00
eladash
6502d933df
Fix stack memory view on the debugger
...
the debugger uses super ptr which was unmapped for stack.
2019-03-31 14:57:21 +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
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
eladash
d4a24433e8
Fix DECR mode allocations (sys_memory)
2019-01-31 16:03:38 +03:00
Nekotekina
2b66abaf10
Implement atomic_t<>::release
...
More relaxed store with release memory order
2019-01-29 03:32:16 +03:00
elad
fc92ae4085
SPU/PPU atomics performance and LR event fixes ( #5435 )
...
* Fix SPU LR event setting in atomic commands according to hw test
* MFC: increment timestamp for PUT cmd in non-tsx path
* MFC: fix reservation lost test on non-tsx path in regard to the lock bit
* Reservation notification moved out of writer_lock scope to reduce its lifetime
* Use passive_lock/unlock in ppu atomic inctrustions to reduce redundancy
* Lock only once for dma transfers (non-TSX)
* Don't use RDTSC in reservation update logic
* Remove MFC cmd args passing to process_mfc_cmd
* Reorder check_state cpu_flag::memory check for faster unlocking
* Specialization for 128-byte data copy in SPU dma transfers
* Implement memory range locks and isolate PPU and SPU passive lock logic
2019-01-15 18:31:21 +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
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
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
a605dd0a3f
Add missing deleted operators
2018-09-27 12:16:43 +03:00
Rui Pinheiro
f3029b2b42
Change Cell->RSX map/unmap notifications
...
This allows for further flexibility on the RSX side, allowing us to fix
some bugs and crashes in later commits.
2018-09-24 15:26:40 +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
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
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
386e301ea0
Name missing vm::spu location
2018-08-18 21:38:43 +03:00
Nekotekina
e8d144f399
Improve vm::reader_lock
...
Add upgrade() method
2018-08-18 21:14:52 +03:00
Nekotekina
6ec4a88eb5
Hardcode vm::user64k location
2018-08-18 21:02:16 +03:00
Nekotekina
182c04b59d
Improve vm::unmap
...
Prevent unmapping predefined locations
2018-08-18 21:01:32 +03:00
eladash
061c787e56
rsx-capture: unbreak
2018-08-16 03:27:11 +04:00
Nekotekina
5e20d4b481
Fix vm regression from #4975
...
Incorrect vector management
2018-08-14 23:57:20 +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
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
1ac203a958
Funny workaround
2018-07-05 22:26:35 +03:00
eladash
b456955688
rsx: fix hardcoded rsx allocation address
2018-06-24 10:57:30 +03:00
eladash
23b380eb41
allow deallocations to unmap rsx mapped memory
2018-05-29 19:57:28 +03:00
eladash
c2b2dee56d
cellgcm/sys_rsx: fix multiple io maps at the same effective address and vice verse
...
from hw testing, as long as the io address is valid, it returns CELL_OK, even when it doesn't make much sense
2018-05-29 19:57:28 +03:00
eladash
97515a0941
sys_rsx/cellgcm: return EINVAL if the io map requast's size is 0
2018-05-29 19:57:28 +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
fb0f5f0c8b
Fix vm::reservation_notifier
2018-05-21 00:18:37 +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
scribam
fd8aae5725
emu: remove wait_engine files
...
These files are empty and do not serve any purpose currently
2018-05-16 03:56:06 +04:00
scribam
04ad49de4d
typos
2018-05-14 21:14:39 +04: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
ef0196d791
Fix warning (vm::reservation_update)
2018-04-22 00:06:49 +03:00
Nekotekina
3681507136
Rewrite vm::reservation
...
Use flat virtual memory area
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
cce0ad0c35
Clean vm::ps3 namespace use
2018-02-09 17:49:37 +03:00
Nekotekina
76be7d40ac
Remove PSP2
2018-02-09 15:24:46 +03:00
Nekotekina
df2fc13b7a
Add PPU instruction stat dumper
...
Needs PPU Debug option to activate and PPU Interpreter
Dumps after Resume (after Pause)
Fix utils::memory_decommit, clean vm.cpp
2017-10-11 20:06:33 +03:00
Nekotekina
22d8b57027
Improve lv2_memory object
2017-09-14 00:23:23 +03:00