MSuih
f3ed26e9db
Small warnings cleanup ( #6671 )
...
* Ignore more warnings
These are intentional
* Signed/unsigned mismatch when comparing
* Explictly cast values
* Intentionally discard a nodiscard value
* Change ppu_tid to u32
* Do not use POSIX function name on Windows
* Qt: Use horizontalAdvance instead of width
* Change progress variables to u32
2019-10-25 13:32:21 +03:00
Eladash
c16319f959
PPU Precise: Fix fused float ops misaccuracy by using fma
...
Also cleanup add64_flags, remove redundent copy of s_ppu_itype.
2019-10-20 20:58:31 +03:00
Nekotekina
49e96b39dd
[SPU, TSX] Fix reservation corruption in PUTLLC
...
Change reservation locking logic.
2019-10-12 15:41:24 +03:00
Nekotekina
a29d4150df
GDB Server: fix and cleanup
...
Move source files to Emu/GDB.cpp, GDB.h
Remove "WITH_GDB" option, enable GDB Server by default.
Change class name to gdb_thread.
Alias for external access gdb_server.
Change config option name to "GDB Server"
Bind on 127.0.0.1 by default.
2019-10-09 00:11:44 +03:00
Nekotekina
b48cdc2260
Use g_fxo for global ppu_module instance
...
Also fix autonomous PRX/SPU loading sequence.
2019-09-26 23:26:36 +03:00
Nekotekina
4ec3e968ff
Use g_fxo for jit_core_allocator
2019-08-27 03:50:15 +03:00
Nekotekina
3dd6961ee5
Use g_fxo in PPUThread.cpp misc
...
Replace fxm::get_always
2019-08-27 03:50:15 +03:00
eladash
050339bb3e
PPU/LV2: Make thread-lists scheduling atomic
2019-08-17 22:46:36 +03:00
Nekotekina
f8f3067deb
Always check page_allocated in vm::check_addr
2019-08-14 20:28:34 +03:00
eladash
4f00af6000
ppu interpreter: Allow non-ssse3 to use fast path
...
byte shuffle is now removed which was the barrier for ssse3 check.
2019-08-13 04:56:00 +03:00
Eladash
3ce18fd960
Implement vm::page_executable ( #6330 )
...
Fixes segfaults when attenpting to set segfaults on non-executable memory.
2019-08-11 21:04:17 +03:00
Nekotekina
949f33c8a4
Fix sys_config_get_io_event syscall name
2019-07-29 21:55:59 +03:00
Eladash
85b1152e29
Timers scaling and fixes
2019-07-23 00:09:01 +01:00
Eladash
537d3f2548
Log last function on debug pause or exception, dump cpu_thread state on access violation
2019-07-10 17:35:39 +03:00
Lassi Hämäläinen
499035512b
Split Emu/Memory into more logical headers
...
- Add vm_locking.h and vm_reservation.h and move relevant functions
and types to these headers.
- Change include order and make vm_ptr.h, vm_var.h and vm_ref.h headers
usable invidually and them including vm.h instead of other way around
- Because usage of vm::ptr now requires including vm_ptr.h instead of
vm.h updated multiple #includes
- Added additional #includes to vm_reservation.h and vm_locking to
where vm::reservation_* and locking related functions are used
2019-06-25 17:11:10 +03:00
Nekotekina
5d45a3e47d
Implement cpu_thread::suspend_all
...
Remove Accurate PUTLLC option.
Implement fallback path for SPU transactions.
2019-06-19 20:36:12 +03:00
Eladash
d52953fca6
minor UB fix
2019-06-17 02:52:43 +03:00
Nekotekina
7de3c410cf
SPU/PPU: update reservation logic on TSX path transactions
...
Make use of lock bits in reservation counters.
On PPU, fallback to compare_and_swap instead of desperate retry.
On SPU, lighten write set on retry by 'locking' outside of the transaction.
2019-05-20 14:32:50 +03:00
Nekotekina
9abb303569
vm: expand reservation lock bit area to 7 bit
...
This is minor change.
2019-05-19 17:46:55 +03:00
Nekotekina
7492f335e9
SPU analyser: basic function detection in Giga mode
...
Misc: fix EH frame registration (LLVM, non-Windows).
Misc: constant-folding bitcast (cpu_translator).
Misc: add syntax for LLVM arrays (cpu_translator).
Misc: use function names for proper linkage (SPU LLVM).
Changed function search and verification in Giga mode.
Basic stack frame layout analysis.
Function detection in Giga mode.
Basic use of new information in SPU LLVM.
Fixed jump table compilation in SPU LLVM.
Disable broken optimization in Accurate xfloat mode.
Make compiled SPU modules position-independent in SPU LLVM.
Optimizations include but not limited to:
* Compiling SPU functions as native functions when eligible
* Avoiding register context write-out
* Aligned stack assumption (CWD alike instruction)
2019-05-11 02:13:19 +03:00
eladash
ea1c9a2e17
Fix PPU Breakpoints and ppu_check_toc
2019-04-29 23:04:16 +03:00
Nekotekina
524aac75ed
LLVM DSL: rewrite bitcast, zext, sext, trunc, select, min, max ops
...
Are made composable in expressions similar to arithmetic ops.
Implement noncast in addition to bitcast (no-op case).
Implement bitcast constant folding.
Fixed some misuse of sext<>.
2019-04-24 23:55:41 +03:00
eladash
b307aff9eb
Prefetch byteswapped opcodes in ppu interpreter
2019-04-11 17:47:52 +03:00
eladash
f028737db8
Implement fallback for PPU LLVM
...
This matches with interpreter implementation, fixing unregistered functions in lost cases
2019-04-11 17:47:52 +03:00
eladash
e21504d52d
ppu interpreter: Improve FPCC field handling
2019-04-11 17:47:52 +03:00
Nekotekina
3354f068fc
PPU/SPU transactions: ease cache line interference (TSX path)
...
Touch memory on the same memory page, but different cache lines.
2019-04-10 13:58:12 +03:00
Nekotekina
d873802b9c
Use LLVM 9
...
Use new add/sub with saturation intrinsics
2019-03-30 01:36:48 +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
7f6a410770
Add dummy __has_builtin macro, use rotate builtins if possible
2019-03-01 00:08:19 +03:00
eladash
0861226271
Make more use of the new atomic_t<>::release
2019-02-10 00:16:57 +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
a419e98acb
Move PPU and shader cache
...
New hash-based location (already used for SPU)
Bump PPU cache version, improve naming and decrease size
Remove fs::get_data_dir
Disable boot.elf cache
2019-01-14 01:24:05 +03:00
Nekotekina
bd9131ae1c
Implement fs::get_cache_dir
...
Win32: equal to config dir for now
Linux: respect XDG_CACHE_HOME if specified
OSX: possibly incomplete
2019-01-13 14:45:36 +03:00
Megamouse
a4f67ccb87
Add log messages for PPU compilation
2018-12-31 23:03:03 +03:00
Nekotekina
96cabeadff
Rewrite condition variables
...
Implement helper functions balanced_wait_until and balanced_awaken
They include new path for Windows 8.1+ (WaitOnAddress)
shared_mutex, cond_variable, cond_one, cond_x16 modified to use it
Added helper function utils::popcnt16
Replace most semaphore<> with shared_mutex
2018-11-29 01:30:05 +03:00
eladash
3a7f5b970f
ppu: Fix stack base
2018-11-02 02:16: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
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
eladash
cd11ae5d8b
ppu: Fix extreme reservation corner case
2018-09-12 23:17:53 +03:00
Nekotekina
d750e955c3
Use std::uncaught_exceptions()
...
Also remove wrong attributes
2018-09-08 00:32:04 +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
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
Nekotekina
b24eb621ae
Use RTM instructions (skylake+)
2017-07-20 17:22:09 +03:00
Nekotekina
2ef2f0f63b
PPU LLVM: simplify module loading
2017-07-17 16:49:46 +03:00
Nekotekina
73a2a937c4
PPU LLVM: reuse loaded executables
2017-07-12 14:00:38 +03:00
Nekotekina
f0d184f38b
PPU LLVM: relocation support
2017-07-04 02:04:22 +03:00
Nekotekina
3c064439b3
PPU LLVM: new mptr/cptr format
2017-06-29 17:48:55 +03:00
Nekotekina
aa34fa8baa
PPU LLVM: some passes disabled
2017-06-29 17:48:55 +03:00
Nekotekina
fc2a45d6d6
Removed unnecessary code
2017-06-29 17:48:55 +03:00
Nekotekina
89f676de75
PPU: preparations (no fixes)
2017-06-26 16:56:13 +03:00
Nekotekina
8034196c25
ppu_syscall_code type added (for fmt)
2017-06-26 16:56:13 +03:00
Nekotekina
f49a30bc1a
PPU LLVM: disable unnecessary passes
2017-06-26 16:56:13 +03:00
Nekotekina
1196e9decc
PPU LLVM: remove unnecessary code
2017-06-26 16:56:13 +03:00
Nekotekina
cd4f290d3d
PPU LLVM: v2, simplification (no allocas)
2017-06-26 16:56:13 +03:00
Nekotekina
9738ce0cf6
LLVM: fix cancellation
2017-06-26 16:56:13 +03:00
Nekotekina
e5ae32e5f3
Fix #ifdef style
2017-06-26 16:56:13 +03:00
Nekotekina
6561ddae41
PPU LLVM: multithread compilation
2017-06-24 19:12:19 +03:00
Nekotekina
aea094730b
PPU LLVM: paradigm shift
...
For now, compile only one block at time
Use tail calls to move between blocks
Fully write PPU context (except CIA)
This fixes many compatibility problems
2017-06-23 20:09:33 +03:00
Nekotekina
f010b5b235
Configuration simplified
2017-05-20 16:01:48 +03:00
Nekotekina
b349100d9d
Stack overflow detection
...
Added a gap between stack allocations
PPU callstack improved
2017-04-30 21:10:27 +03:00
Nekotekina
a626bbf635
PPU Debug fix
2017-04-26 02:27:34 +03:00
Nekotekina
b1f1a5885b
PPU LLVM improved
2017-04-16 17:44:19 +03:00
Nekotekina
7428bb3025
HLE linkage rewritten
2017-04-16 17:44:19 +03:00
Ofek
a5fd7abcf7
Trophy update ( #2655 )
...
* Added checksum check to TROPHY.TRP loader
* Implemented sceNpTrophyGetGameProgress, sceNpTrophyGetGameIcon & sceNpTrophyGetTrophyIcon
* Updates to up to date APIs and tiny changes
* Code style fixes for checksum verifier, and another fix for trophy functions
* Format fix
2017-04-13 20:29:47 +03:00
Nekotekina
dc3d38c255
PPU Analyser: TOC detection
...
Improved TOC detection logic
Added "PPU Debug" option
2017-04-09 00:16:53 +03:00
Nekotekina
ac79654d1b
Warn about libfiber.sprx
...
It's currently incompatible with LLVM
Also fixed breakpoint bug
2017-04-08 00:56:38 +03:00
Nekotekina
ed7883ba07
PPU Analyser fix
2017-04-08 00:56:38 +03:00
Andrey
215a9f9e11
Gdb debug server ( #2542 )
2017-04-02 21:10:06 +03:00
Nekotekina
37a97a71e3
vm::g_exec_addr added
...
s_ppu_compiled renamed
Exception handling enabled
2017-03-27 01:15:41 +03:00
Nekotekina
e12a708036
LLVM: fix for mingw
2017-03-27 01:15:41 +03:00
Nekotekina
3bfe17a14f
PPU: HACK instruction removed
...
Breakpoints fixed
2017-03-22 23:23:47 +03:00
Nekotekina
ddd6ebc58d
LLVM: Bump obj version
2017-03-22 01:33:50 +03:00
Nekotekina
1b5c0c68dd
LLVM: enable New GVN Pass
2017-03-22 01:21:19 +03:00
Nekotekina
3e6f9faf71
Use LLVM 4.0
2017-03-21 23:32:14 +03:00
Nekotekina
07646c2124
LLVM CPU override option
2017-03-14 16:12:03 +03:00
Nekotekina
b45cea1434
Opt-in LLVM logs
2017-03-14 16:12:03 +03:00
Nekotekina
d09dd29054
utils::memory_protect
2017-03-13 13:16:22 +03:00
Nekotekina
4739eb3601
Reservation fix
2017-03-11 15:48:43 +03:00
Nekotekina
5e3bacbd9b
New reservations
...
Memory system cleanup
sys_memory_get_page_attribute
2017-03-10 15:51:40 +03:00
Nekotekina
0eb6bf6a67
LLVM: splitting and caching
2017-02-26 20:14:18 +03:00
Nekotekina
af53ce6f76
Stack overflow constrained
2017-02-25 19:29:31 +03:00
Nekotekina
7c418f7ea5
PPU: block info fix
2017-02-23 00:35:29 +03:00
Nekotekina
9000407a77
cpu_thread::test_state added
...
lv2_obj::sleep adjustment
synchronization fixes
2017-02-22 13:23:21 +03:00
Nekotekina
598c90f376
PPU thread scheduler
2017-02-13 22:26:11 +03:00
Nekotekina
e4962054a4
LLVM: add check state
2017-02-13 20:51:56 +03:00
Nekotekina
3356a76c9b
PPU fix
2017-02-11 17:17:07 +03:00
Nekotekina
e899de88ff
Log empty functions
2017-02-11 02:43:31 +03:00
Nekotekina
bb111d325f
memory fix
2017-02-10 23:27:58 +03:00
Nekotekina
b20d7ff48c
PPU breakpoints resurrected
...
Now with zero overhead
2017-02-10 16:33:22 +03:00
Nekotekina
8262d56574
PPU interpreter improved
2017-02-10 16:33:22 +03:00
Nekotekina
257b9a2015
Debugger fix
...
Crash fixes
GUI fixes
Debug enhancements
2017-02-10 16:33:22 +03:00
Nekotekina
47b4c649f1
PPU fixes
2017-02-07 16:37:30 +03:00
Nekotekina
11b0b6958f
sys_spu diag
2017-02-05 15:48:11 +03:00
Nekotekina
a5a2d43d7c
Thread.cpp refinement
...
Hide thread mutex
Safe notify() method
Other refactoring
2017-01-29 19:52:19 +03:00
Nekotekina
d4c3905355
Debug build fix
2017-01-28 15:32:45 +03:00
Nekotekina
df6607e236
Minor fixes
2017-01-28 03:21:11 +03:00
Nekotekina
591a6c8671
IdManager improved
2017-01-25 23:29:36 +03:00
Nekotekina
78ecb115f3
LLVM: progress dialog
2017-01-22 22:44:26 +03:00
Nekotekina
5e0489dcc0
cpu_init removed
2016-08-14 18:07:34 +03:00
Nekotekina
bdeccd889f
cpu_type removed, system_type added
...
cpu_state -> cpu_flag
vm::stack_allocator template improved
ppu_cmd type changed to enum, cmd64 type added
2016-08-09 17:14:41 +03:00
Nekotekina
a7e808b35b
EXCEPTION macro removed
...
fmt::throw_exception<> implemented
::narrow improved
Minor fixes
2016-08-08 19:19:32 +03:00
Nekotekina
46735d6b3d
New bitsets (experimental)
2016-08-08 16:29:37 +03:00
Nekotekina
c9a789bf76
PPU LLVM fix
2016-08-06 13:39:03 +03:00
Nekotekina
5a36c57c57
Formatting system improved
...
`unveil<>` renamed to `fmt_unveil<>`, now packs args to u64 imitating va_args
`bijective...` removed, `cfg::enum_entry` now uses formatting system
`fmt_class_string<>` added, providing type-specific "%s" handler function
Added `fmt::append`, removed `fmt::narrow` (too obscure)
Utilities/cfmt.h: C-style format template function (WIP)
Minor formatting fixes and cleanup
2016-08-04 21:34:00 +03:00
Nekotekina
e6bd91ada0
id_manager: embedded RTTI
2016-08-01 12:51:47 +03:00
Nekotekina
f8719c1230
PPUThread refactoring
...
`CallbackManager` removed, added _gcm_intr_thread for cellGcmSys
`PPUThread` renamed to `ppu_thread`, inheritance allowed
Added lightweight command queue for `ppu_thread`
Implemented call stack dump for PPU
`get_current_thread_mutex` removed
`thread_ctrl::spawn`: minor initialization fix
`thread_ctrl::wait_for` added
`named_thread`: some methods added
`cpu_thread::run` added
Some bugs fixes, including SPU channels
2016-07-30 16:35:02 +03:00
Nekotekina
44bee7d0ba
LLVM: Use small code model
...
Global variables modified:
__mptr: pointer to memory base addr
__cptr: pointer to function map addr
Use 32 bit pointers in function map
2016-07-25 18:26:02 +03:00
Nekotekina
5c9f83c3a8
PPU LLVM: New "stack" strategy
...
Minor pessimization: all memory accesses are volatile
Special handling of prologues and epilogues
Minor optimizing assumption for SP
2016-07-24 21:47:45 +03:00
Nekotekina
94da0dbd4d
PPU LLVM improvements
...
Removed interpreter dependencies
Reciprocal instructions improved
2016-07-12 17:33:13 +03:00
Nekotekina
06c6c8212d
Minor fixes
...
elf_object
Loader fix
Analyser fix
2016-07-11 16:30:11 +03:00
Ivan
77594dc66c
PPU LLVM: New analyser ( #1858 )
...
Minor fixes
VEX prefix support
2016-07-07 21:42:39 +03:00
Nekotekina
0ea0c21fed
LLVM: Indirect call map
2016-06-27 19:34:14 +03:00
Nekotekina
7a921cbdf9
cpu_thread compressed
2016-06-27 16:43:57 +03:00
Nekotekina
9db7de29fb
Syscall analysis implemented
2016-06-27 16:43:56 +03:00
Nekotekina
a19b721c26
LLVM: Added JIT.cpp
...
Refactoring, used -fno-rtti option
2016-06-27 16:43:53 +03:00
Nekotekina
73ea020525
PPU LLVM: Thread context argument
2016-06-27 16:43:50 +03:00
Nekotekina
251fb86ab0
PPU LLVM: Some instructions simplified
2016-06-21 18:08:21 +03:00
Nekotekina
a8bebcba55
LLVM AOT
2016-06-19 21:29:48 +03:00
Nekotekina
e2d82394f6
Cell
2016-05-23 16:22:23 +03:00
Ivan
aafcf44581
Header optimizations ( #1684 )
...
Shouldn't break anything. I hope.
2016-04-27 01:27:24 +03:00
Ivan
da7472fe81
Optimizations ( #1680 )
...
* Optimizations
1) Some headers simplified for better compilation time
2) Some templates simplified for smaller executable size
3) Eliminate std::future to fix compilation for mingw64
4) PKG installation can be cancelled now
5) cellGame fixes
6) XAudio2 fix for mingw64
7) PPUInterpreter bug fixed (Clang)
* any_pod<> implemented
Aliases: any16, any32, any64
rsx::make_command fixed
2016-04-25 13:49:12 +03:00
Nekotekina
c4e99dbdb2
Partial commit: Cell
2016-04-15 19:22:34 +03:00
Nekotekina
960668ecf1
For #1355
...
offsetof() eliminated
OFFSET_32, SIZE_32, ALIGN_32 used
2016-01-14 19:07:27 +03:00
Nekotekina
3ed603074c
Changes done by [DH] rewritten
...
Added rsx_program_decompiler submodule
Added fs::dir iterator
Added fmt::match
2015-12-22 23:11:20 +03:00
Nekotekina
ca6783ba9a
Threads improved, ID manager improved
2015-12-04 23:37:34 +03:00
O1L
c0255208cc
Old ini-manager only partially used in VFS. Global configuration used as defualt.
2015-10-27 01:09:31 +04:00
O1L
1673ba217c
Do not try to change default config, use state configs.
2015-10-24 22:48:07 +04:00
Nekotekina
a974ee009e
vm::var improved, cleanup
...
Mostly vm::var initialization introduced.
Added vm::make_var function.
2015-10-14 18:17:37 +03:00
Nekotekina
8ae3401ffa
Some things improved
...
shared_mutex_t implemented
GUI Emu Callbacks rewritten
fxm::import, fxm::import_always implemented
cellMsgDialog rewritten
Emu.CallAfter improved (returns std::future)
2015-09-22 16:48:21 +03:00
Nekotekina
59f1077a36
Cleanup, be_t fixed
...
Some functions renamed:
get_ps3_function_name
execute_syscall_by_index
2015-09-22 13:28:34 +03:00
Vincent Lejeune
942f26509b
Memory: Factorize virtual memory reservation/allocation code in function
2015-08-26 21:54:40 +02:00
Nekotekina
e551e2bc5d
Bugfix
2015-08-24 21:22:49 +03:00
Nekotekina
5e14310071
noexcept usage fixed
...
thread_t renamed to named_thread_t
2015-08-24 21:22:48 +03:00
Nekotekina
be9a599beb
PPU Decoder Cache improved
2015-08-24 21:22:35 +03:00
Nekotekina
dd665e7363
ID manager simplified
...
ID manager refactoring, redundant "type" information removed
2015-08-24 21:22:19 +03:00
vlj
abd61538ea
PPU/LLVM: Rename ExecutionEngine to CPUHybridDecoderRecompiler
...
In order to avoid naming conflict with llvm own ExecutionEngine
2015-07-22 02:10:55 +03:00
Nekotekina
2f7fe35f5c
Minor style change
2015-07-21 23:14:31 +03:00
Nekotekina
48c75105e2
"Memory" eliminated
2015-07-18 03:12:06 +03:00
Nekotekina
4bacfcf847
sys_lv2dbg added, bugfix
2015-07-10 04:31:41 +03:00
Nekotekina
82781e620a
Small fixes
2015-07-10 04:31:36 +03:00
Nekotekina
c0f13f7084
sleep_queue_t rewritten, used in sys_cond/sys_mutex
...
Some synchronization fixes
2015-07-10 04:31:34 +03:00
Nekotekina
22e1da5e76
Minor cleanup
2015-07-10 04:31:29 +03:00
Nekotekina
8f9e1100c8
SPU fixes, various fixes
2015-07-10 04:31:25 +03:00
Nekotekina
721ad404d2
VM_CAST macro
2015-07-10 04:31:23 +03:00
Nekotekina
32d3d1fbe5
EXCEPTION() macro usage, sceNpTrophy improved
2015-07-10 04:31:20 +03:00
Nekotekina
6f1e76198a
Some fixes
2015-07-10 04:31:18 +03:00
Nekotekina
3aefa2b4e1
ThreadBase rewritten (wip)
2015-07-10 04:31:16 +03:00
Nekotekina
ef6f9f6ded
be_t constructor implemented, make() eliminated
...
be_t enums are forbidden, le_t improved, some operators cleaned.
2015-07-10 04:31:07 +03:00
Nekotekina
714da1aa7c
vm::var fix, vm::ptr improved
...
GetCurrentPPUThread() removed
2015-07-10 04:31:00 +03:00
Nekotekina
6c4148a949
Bugfix
2015-07-10 04:30:47 +03:00
Nekotekina
edb9595721
Using vm::ps3 namespace moved in proper places
...
Various fixes
2015-07-10 04:30:41 +03:00
Nekotekina
935302b620
Bugfix
2015-04-20 02:49:13 +03:00
Nekotekina
b1f7543436
PPU stack fixed (2)
2015-04-18 04:35:58 +03:00
Nekotekina
b7fd09740b
PPU stack fixed
2015-04-18 03:25:26 +03:00
Nekotekina
ef563f038d
SPU: some instructions updated
2015-03-21 02:36:05 +03:00
Nekotekina
63276a3f84
SPU interpreter (basic concept)
2015-03-20 19:53:54 +03:00
Nekotekina
620e937473
Basic load
2015-03-17 23:03:24 +03:00
Nekotekina
a71cb5f521
Basic concept
2015-03-17 00:38:21 +03:00
Nekotekina
6a0ce1850a
Initial commit
2015-03-16 21:50:59 +03:00
Nekotekina
3e412a2a1f
Syscall names registered
2015-03-15 16:26:01 +03:00
Nekotekina
961fc27215
Minor cleanup
2015-03-07 16:39:07 +03:00
Nekotekina
9e49a33b3c
SPU syscall improvements
2015-03-05 00:51:14 +03:00
Nekotekina
5f8cf18a5a
SPU refactoring
2015-03-03 00:09:20 +03:00
Nekotekina
be4e85f0f2
PPCThread removed (it does nothing anyway)
2015-02-26 03:54:49 +03:00
Nekotekina
9ee9523680
StaticFuncManager removed
2015-02-21 17:07:22 +03:00
Nekotekina
2d1d996c50
Small fix
2015-02-19 14:18:28 +03:00
Nekotekina
1f2eafc4f2
Loader fixed
2015-02-17 18:27:15 +03:00
Nekotekina
267de68441
Memory cleanup, page flags implemented
...
RSXCMDMem, SPRXMem, MmaperMem removed
MainMem range fixed
2015-02-13 17:04:03 +03:00
Nekotekina
e5dd03dbcb
ARMv7: argc, argv setting, LDRSB_IMM, bugfixes
2015-02-01 16:52:34 +03:00
Nekotekina
61a5459ccb
TLS for ARMv7 threads
2015-01-31 19:44:26 +03:00
Nekotekina
4ea1b8cffc
Fixed TLS for PPU threads
2015-01-30 23:01:13 +03:00
Andrew Church
ee508f85b4
Fix handling of VRSAVE, and remove references to nonexistent USPRG registers.
2015-01-18 07:01:52 +09:00
Nekotekina
809ba66290
vm::cast in PPUInterpreter
2015-01-14 19:48:50 +03:00
Nekotekina
056f93f3e4
Linux fixes
2015-01-09 01:17:26 +03:00
Nekotekina
697b699873
Some bugs fixed
...
ARMv7 partially restored
2014-12-01 01:04:47 +03:00
Nekotekina
9fc7197c4f
cellGameContentPermit: extremely DANGEROUS bug fixed
...
And few tiny changes.
2014-11-29 20:41:18 +03:00
DHrpcs3
cdfef3bf9e
Fixed compilation errors
...
Implemented converter_le_be
2014-11-20 21:41:04 +02:00
DHrpcs3
598d929aba
Implemented LLE Modules Manager (draft)
...
Improved loader core.
Implemented *_thread wrappers.
Minor fixes.
Temporary disabled ELF Compiler & DisAsm frame.
2014-11-19 16:16:30 +02:00
S Gopal Rajagopal
06a4c301cd
Merge remote-tracking branch 'upstream/master' into ppu_llvm_recompiler
...
Conflicts:
rpcs3/Emu/Cell/PPUInterpreter.h
rpcs3/Emu/Cell/PPULLVMRecompiler.cpp
rpcs3/Emu/Cell/PPULLVMRecompiler.h
rpcs3/Emu/Cell/PPUThread.cpp
rpcs3/emucore.vcxproj.filters
rpcs3/rpcs3.vcxproj
2014-11-10 02:31:35 +05:30
S Gopal Rajagopal
5c468d7591
Disabled call stack tracing when using the PPU LLVM recompiler
2014-11-09 11:50:01 +05:30
Hykem
5a27a84f5a
Merge branch 'master' of https://github.com/gopalsr83/rpcs3 into gopalsr83-master
2014-11-04 16:45:25 +00:00
S Gopal Rajagopal
160b58cf61
Fixed compilation issues
2014-10-25 06:56:57 +05:30
S Gopal Rajagopal
024c15d4d3
Some cleanup
2014-10-20 01:16:35 +05:30
S Gopal Rajagopal
d69de9c332
Fixed some bugs that prevented the recompiler from terminating properly
2014-10-13 15:26:09 +05:30
S Gopal Rajagopal
840ae2f86b
Run recompilation in the background
2014-10-13 15:26:09 +05:30
S Gopal Rajagopal
2bb63ad051
LLVM based PPU Recompiler. Intial commit
2014-10-13 15:18:17 +05:30
Nekotekina
05a7466a5a
m_custom_task thread member
2014-09-24 22:44:26 +04:00
Nekotekina
597d07bf24
Small refactoring
2014-09-15 02:17:24 +04:00
Nekotekina
860d7bd3f1
Small fix 2
2014-09-13 18:25:02 +04:00
Nekotekina
c1da446653
FastCall() removed
2014-09-12 23:27:33 +04:00
Nekotekina
43a61d0ab9
Memory.Write*/Read* replaced
2014-09-06 17:33:01 +04:00
Nekotekina
964c1bfd6c
WriteString replaced
...
strcpy_trunc (defined in GNU.h) is better for fixed-length char arrays
2014-09-05 03:23:36 +04:00
Nekotekina
a8cfefac07
vm::ptr for u8/char types, mem_list_ptr_t removed
2014-08-31 19:01:48 +04:00
Nekotekina
3269c88d02
Some warnings fixed, some code removed
2014-08-30 21:51:00 +04:00
Nekotekina
693e7a38fa
Some std include moved
2014-08-28 20:29:05 +04:00
Nekotekina
78cbb90ef6
Some leaks fixed
2014-08-26 03:55:37 +04:00
Nekotekina
b005ee3cda
Log include fixes
2014-08-23 18:51:51 +04:00
Nekotekina
efa538f9d7
include clearing
2014-08-23 04:16:54 +04:00
Nekotekina
861ce9e733
include clearing
2014-08-23 01:15:02 +04:00
Nekotekina
9eb280c367
SetCurrentNamedThread()
2014-08-20 18:23:48 +04:00
Nekotekina
89b944c397
REG_FUNC macros
...
And some auxiliary changes
2014-08-19 22:17:20 +04:00
Nekotekina
afe984ca29
Small fix
2014-08-19 02:33:21 +04:00