Commit graph

237 commits

Author SHA1 Message Date
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 a3f65084df Fix sys_process_exit2 when SPUs are at av handler 2019-03-31 14:57:21 +03:00
Nekotekina 3794f65bb6 Add cpu_flag::jit_return 2019-03-23 02:43:41 +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 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 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 d392379c7a Use vm::passive_lock for SPU threads 2018-04-06 15:47:00 +03: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 837c5dddee Add <typeinfo> 2017-09-19 15:07:07 +03:00
Nekotekina 6561ddae41 PPU LLVM: multithread compilation 2017-06-24 19:12:19 +03:00
Nekotekina f010b5b235 Configuration simplified 2017-05-20 16:01:48 +03:00
kd-11 df7b466656 spu: Speed hacks - Do not starve PPU threads
optionally hint to the OS scheduler to give less attention to SPUs

ui: Add speed 'hacks' as configurable options
2017-05-10 21:50:14 +03:00
Andrey 215a9f9e11 Gdb debug server (#2542) 2017-04-02 21:10:06 +03:00
Nekotekina 8590b66b4b Fix cpu_thread pause 2017-03-27 01:15:41 +03:00
Nekotekina 4739eb3601 Reservation fix 2017-03-11 15:48:43 +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 257b9a2015 Debugger fix
Crash fixes
GUI fixes
Debug enhancements
2017-02-10 16:33:22 +03:00
Nekotekina 246b9f3182 CHECK_EMU_STATUS removal 2017-02-05 17:35:27 +03:00
Nekotekina a5a2d43d7c Thread.cpp refinement
Hide thread mutex
Safe notify() method
Other refactoring
2017-01-29 19:52:19 +03:00
Nekotekina 591a6c8671 IdManager improved 2017-01-25 23:29:36 +03:00
Nekotekina 9232ddf0ab Minor changes 2017-01-25 04:43:12 +03:00
Nekotekina 05fb57baff VERIFY macro removed 2016-08-15 03:13:31 +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 46735d6b3d New bitsets (experimental) 2016-08-08 16:29:37 +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 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 7a921cbdf9 cpu_thread compressed 2016-06-27 16:43:57 +03:00
Nekotekina 266db1336d The rest 2016-05-23 16:22:25 +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 f8f067ca7c Partial commit: Emu (the rest) 2016-04-15 19:22:49 +03:00
Nekotekina 38531459df Logging system rewritten
GUI doesn't freeze anymore
Some things simplified
2016-01-13 18:54:57 +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 fd13a495de Replace remained old ini-manager calls 2015-11-14 23:59:46 +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 5e14310071 noexcept usage fixed
thread_t renamed to named_thread_t
2015-08-24 21:22:48 +03:00
Nekotekina c2897cddd6 id_traits, idm::get_last_id() added
id_traits for file/dir descriptors
idm::get_current_id() removed, thread-local last ID
2015-08-24 21:22:38 +03:00
Nekotekina d9403c2ed2 thread_t cleanup 2015-08-24 21:22:37 +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
Nekotekina 2f7fe35f5c Minor style change 2015-07-21 23:14:31 +03:00
Nekotekina 8175630619 sys_cond/sys_mutex improved 2015-07-21 23:14:29 +03:00
Nekotekina 9913c9059c Very bugfix
I reverted cellSaveData changes since they were relying on the
uninitialized local variable `save_entry` and thus were almost
completely wrong.
2015-07-21 23:14:26 +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 eafddd9e33 CPUThread fixes, thread_t cleanup 2015-07-10 04:31:32 +03:00
Nekotekina 83321c5be7 sys_time_get_current_time fixed, CALL_FUNC draft 2015-07-10 04:31:30 +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 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 714da1aa7c vm::var fix, vm::ptr improved
GetCurrentPPUThread() removed
2015-07-10 04:31:00 +03:00
Nekotekina a71cb5f521 Basic concept 2015-03-17 00:38:21 +03:00
Nekotekina 63b97d6817 cellFsSt* 2015-03-16 03:21:40 +03:00
Nekotekina 3e412a2a1f Syscall names registered 2015-03-15 16:26:01 +03:00
Nekotekina bc94d92cba nyu 2015-03-02 05:10:41 +03:00
Nekotekina af986d8f4c Loader improved, ModuleManager refactored 2015-02-18 19:22:06 +03:00
Nekotekina e5dd03dbcb ARMv7: argc, argv setting, LDRSB_IMM, bugfixes 2015-02-01 16:52:34 +03:00
Nekotekina 1a5d5c96ed Compilation fix 2015-01-22 00:39:25 +03:00
Nekotekina fd06f70387 cellAudio updated, thread_t updated 2015-01-16 17:36:53 +03:00
Nekotekina 42b748a881 Syscall name resolving improved 2015-01-14 22:45:36 +03:00
Nekotekina 809ba66290 vm::cast in PPUInterpreter 2015-01-14 19:48:50 +03:00
Nekotekina 6069071e4d Code moved, attempt to make SIGSEGV handler 2015-01-05 00:46:31 +03:00
Nekotekina 27cfdc897b PKG installer improved
Now it doesn't attempt to delete existing directory and overwrites only
existing files. It should fix installing updates.
2015-01-04 19:44:54 +03:00
Nekotekina 22497757e9 Prefix decoding improved 2015-01-04 18:33:25 +03:00
Nekotekina 896097da0d Experimental RawSPU MMIO implementation 2015-01-04 15:35:47 +03:00
Nekotekina b2de24db73 SMutex eliminated 2014-12-23 02:31:11 +03:00
S Gopal Rajagopal 5c468d7591 Disabled call stack tracing when using the PPU LLVM recompiler 2014-11-09 11:50:01 +05:30
Nekotekina 9a02add930 Bugfix 2014-10-08 16:29:29 +04:00
Nekotekina 94c30924dd Some things for u128 2014-10-08 01:37:04 +04:00
Nekotekina 626133c0eb declCPU removed, PPUThread& is passed as argument
Added experimental feature: passing PPUThread& to syscall
2014-09-16 21:49:50 +04:00
Nekotekina 5f1253598c Fix formatting 2014-09-15 23:04:18 +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 0df3e955c8 Small fix 2014-09-13 01:50:50 +04:00
Nekotekina 10e9d383d4 ExecAsCallback() removed 2014-09-13 01:14: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 a74e07dc40 Some cleanup 2014-08-25 22:09:48 +04:00
Nekotekina 4ffd03fe3e Include clearing 2014-08-24 00:40:04 +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 652c5901f8 Another try 2014-08-22 20:36:27 +04:00
Nekotekina a169c5bcac Reservation global struct removed
It wasn't solving anything, unfortunately.
2014-08-22 01:37:45 +04:00
Raul Tambre 54839b293b Log name of syscall, when access violation occurs 2014-08-10 22:56:42 +03:00
Nekotekina 18e1799980 Last syscall registering 2014-08-09 20:25:05 +04:00
Nekotekina 8f04ab07ed IsGood() check elimination
Reasons: 1) It's unsafe - we cannot guarantee that address is still good
while it is used. 2) It's wrong in many modules which are usually just
compare pointer with zero.
2014-08-05 14:18:22 +04:00
Nekotekina dab3d6c6d6 Callbacks 2014-07-13 23:05:28 +04:00
Nekotekina 1dbbbc55f6 Little fix 2014-07-13 22:59:54 +04:00
Nekotekina 2eafb235ba spu_printf fixed 2014-07-13 22:55:14 +04:00
Sacha 9816ec3aa0 Fix conflicts. 2014-07-12 17:02:39 +10:00
Nekotekina 2fe52451e1 Exceptions fixed 2014-07-11 15:32:34 +04:00
Nekotekina 50b42f8593 ifdefs and linux (posix) version (not tested) 2014-07-08 18:26:49 +04:00
Nekotekina d1fff053c2 Some cleanup 2014-07-07 21:22:36 +04:00
Peter Tissen 95f1a0e645 use only one set of logging macros instead of two and don't use free() as a function name 2014-06-27 15:28:17 +02:00
Peter Tissen 21da317453 Logging system rework
* use one central unified log with channels/priorities ad-hoc listener registration and de-registration
* disable buffering by default
* add multi-threaded ringbuffer implementation
* use buffered listener for the gui (using the ringbuffer)
2014-06-26 17:34:28 +02:00
Nekotekina 30b8e51234 rCriticalSection & rSemaphore removed
SC_Semaphore errors fixed
Room for interrupt threads
2014-06-22 14:59:28 +04:00
Peter Tissen c37905e465 initial start to eliminate static func init, not compilable atm
move module initialization into a module manager, still has some issues like stopping not working and debug crashing

add #idef 0 to modules that aren't in the windows project

don't double initialize and don't de-initialize for now, since many modules don't expect it and it leads to many errors

remove duplicate module lists for empty modules and implemented ones, make Module non-copyable but movable

add secondary project, no real use for it now

add some memleak config to the emucore and add asmjit path to rpcs3

small rebase error fixed to get it to compile again

add filters for emucore

re-add the module manager and static file

WIP commit, linker errors abound

some more abstraction layer stuff

fix the remaining linker errors, re-enable platform specific mouse, pad and keyboard handlers

rebasing

fix memset undefined and re() usage of se_t before declaration

Add wxGUI define by default for cmake builds

fix copy constructors of Datetime header

fix copy constructors of other wx interface classes

remove static declarations of global variables

make wxGLCanvas constructor non-ambiguous even with wx2.8. compat mode, fix wrong std::exception constructor calls

remove duplicate definition for FromUTF8 and ToUTF8

temp changes
2014-06-08 23:16:06 +02:00
Peter Tissen 40add8f9a2 Seperate ConLog.h and ConLogFrame.h (for now only seperate headers)
make precompiled header slimmer under Linux to increase CI and dev-machine build-times

make sure unused modules don't compile
add unused modules to the VS project to easier keep track of them
2014-06-06 02:50:22 +02:00
nohbdy d136adc73f RSX Bugfixes and plugging memory leaks
BUGFIX: Add break after NV4097_SET_TEXTURE_BORDER_COLOR in RSXThread.cpp
BUGFIX: Fix parameters passed to RSXTexture::SetControl3 (they were being
passed in reverse order)
BUGFIX: Remove invalid, non-sensical call to glPixelStorei in GLGSRender.h
BUGFIX: Fix signed/unsigned comparison compiler warnings in GLGSRender.h
CHANGE: Make GLFragmentProgram::Decompiler synchronous by default
CHANGE: Update wxWidgets submodule to latest commit
BUGFIX: Fix several memory leaks
ADDED: Created a new MSVC debug configuration to output locations
  of allocations that end up leaking after the program
  is closed.
BUGFIX: Fix the stupid PadHandler crash due to the lack of a virtual d'tor
2014-04-17 15:15:43 -05:00
Bigpet 25c3aa8e19 fixes to get llvm to compile (excepti for utils.cpp, that'll get fixed
later)

Eradicate the Array almost everywhere, some usages like Stack still
remains
2014-04-12 12:06:52 +02:00
Peter Tissen febe8624bf remove redundant c_str -> string -> c_str conversions 2014-04-01 17:22:57 +02:00
Peter Tissen 8ac226ae69 replace all instances of wxString with std::string in all cases not
directly involved in either the GUI or other wxWidget classes like wxFile
2014-04-01 16:23:03 +02:00
Anthony Miyaguchi 544bacf54e Quick one line change fixes a hang after failing to run an *.elf file and stopping the emulator via the Stop button. 2014-03-27 18:57:28 -07:00
Nekotekina d0ea397492 cellAtrac draft
sys_spu_thread_group_resume
Some bugs fixed
2014-03-22 15:08:07 +04:00
Nekotekina 8cc6a287a7 Update 2014-03-13 13:17:45 +04:00
Nekotekina 7f7d5a57c8 rldcr, rldcl instructions
Some intructions fixed
2014-03-11 20:20:01 +04:00
Nekotekina 3127543b6e sys_ppu_thread_join, sys_ppu_thread_exit fixed
Some diagnostic messages in mutexes
2014-03-07 16:03:42 +04:00
Nekotekina 384536ba4f prx_mem memory leak fixed
CPUThread::ExecAsCallback (experimental)
2014-03-04 23:18:17 +04:00
Nekotekina 0bd5dc5363 Demuxer improved, cellPamf improved
File reading improved
2014-02-26 11:51:00 +04:00
Nekotekina 931929a82c Fixed conflicts 2014-02-16 21:57:36 +04:00
Nekotekina e066bcf261 Small cellAudio update 2014-02-15 00:08:02 +04:00
Peter Tissen f179bd4cd7 fix stepping a little better than last time 2014-02-14 20:50:02 +01:00
Peter Tissen 8bf8c7e6e9 undo thread behavior changes and add html subproject to dependencies. 2014-02-14 18:14:14 +01:00
Peter Tissen 11ba83738f make stepping work again, it's impossible to use it without these changes 2014-02-14 00:08:32 +01:00
Nekotekina 5a240c32a9 log fixes (to wx_str()) 2014-02-13 20:59:13 +04:00
Peter Tissen b05e466e8f clean up more output conversions, everything that wants to get printed needs to be explicitly convertex to the wxCharType otherwise the VFormat prints nothing 2014-02-10 19:51:03 +01:00
Peter Tissen b9c3dc352d use .wx_str() instead of .mb_str(), Dbg console is still broken 2014-02-10 13:53:09 +01:00
Nekotekina 6c606be09f Reservation implemented
Some SPU bugs fixed;
sys_spu_thread_get_exit_status
sys_spu_thread_group_destroy
2014-02-07 02:55:48 +04:00
Nekotekina 311486ed79 Fixed thread issues
Fixed args passing
Fixed thread stopping/pausing (temporarily)
Fixed problems with SC_Condition and SC_Mutex (partially)
2014-02-03 17:12:25 +04:00
DH 4b8d6b6919 Improved ThreadBase.
Improved Vertex Shader Decompiler.
2014-01-31 20:40:18 +02:00
elisha464 8a3835bcef fix thread exit crash 2014-01-23 21:37:59 +02:00
DH ab41540064 Improved ID manager.
Improved MemoryBlock.
2014-01-19 05:14:11 +02:00
Sacha 6bcaf469e8 First stage of WX dependency removal. 2013-11-28 05:16:19 +10:00
DH 9ce30fdd74 Improved OpenGL renderer & RAW SPU
- Improved Fragment Shader Decompiler.
- Fixed NV308A_COLOR cmd.
- Fixed break points for RAW SPU Thread.
- Added cellMsgDialogOpen2 to cellSysutil module.
2013-11-26 06:34:19 +02:00
Mislav Blažević d8bd34b57e Start porting to GNU compiler 2013-11-23 23:27:58 +01:00
DH 8463694d4f - Improved call stack. 2013-11-23 17:20:31 +02:00
Alexandro Sánchez Bach 382ae8a78f Improved cellResc module
* cellResc module improved

* Many changes in this commit are from [DH]: The implementation of
cellRescSetConvertAndFlip, cellRescSetWaitFlip and cellRescSetSrc as
well as all the other changes that are not in cellResc module.

* Fixed another conflict from O1L/rpcs3 (master): Deleted
"cellPhotoUtility" (which already exists in cellPhotoExport)
Now all the conflicts are solved. :-)

NOTE: We should search for a better name for 's_rescInternalInstance'.
This one is just too long and some lines don't even fit in my screen
because of this.
2013-11-16 01:38:22 +01:00
DH 6ea2c7d6a8 - Fixed memory leaks in cellRtc module.
- Fixed CPUThread crash.
- Improved ARMv7 Interpreter.
2013-11-09 14:25:12 +02:00
DH b263c3ebaf - Renamed ARM9 to ARMv7.
- Improved ELF32 loader.
2013-11-05 21:22:58 +02:00
DH 6b22e7d90a - Implemented ARM9Interpreter & ARM9DisAsm.
- Implemented MemoryBlockLE & DynamicMemoryBlockLE.
- Implemented CPUDecoder.
2013-11-05 20:12:18 +02:00
DH 0b35be32a4 - Implemented ARM9Thread.
- Improved OpenGL Renderer.
- Improved RAW SPU mfc.
2013-11-03 21:23:16 +02:00