12210 Commits

Author SHA1 Message Date
InusualZ
4935e9b560 Allow to disable/enable breakpoints
Added `ToggleBreakPoint` to both interface BreakPoints/MemChecks. this would allow us to toggle the state of the breakpoint.

Also the TMemCheck::is_ranged is not longer serialized to string, since can be deduce by comparing the TMemCheck::start_address  and TMemCheck::end_address
2021-03-02 21:11:53 +00:00
Admiral H. Curtiss
4b784576d9 Core/Memmap: Don't try to map logical memory from inactive physical regions. 2021-03-02 18:41:33 +01:00
Admiral H. Curtiss
8199825c6f Core/Memmap: Store and check which physical regions are actually mapped instead of relying on SConfig staying the same. 2021-03-02 18:41:33 +01:00
Léo Lam
7712f0831f
Merge pull request #9535 from sepalani/threads-freeze
DebugInterface: Check visited addresses in GetThreads
2021-03-02 16:38:02 +01:00
Sepalani
8279613a49 DebugInterface: Check visited addresses in GetThreads 2021-03-02 19:29:47 +04:00
Admiral H. Curtiss
918f3d92e0 Core/Memmap: Give more detailed error messages if memory mapping fails. 2021-03-01 19:11:00 +01:00
Sepalani
6982832f82 MMU: Fix IsRAMAddress not working 2021-02-24 22:19:26 +04:00
Admiral H. Curtiss
22b300336a Core/MemoryWatcher: Use appropriate memory read function in ChasePointer(). 2021-02-24 19:02:30 +01:00
Léo Lam
1fe0953bd5
Merge pull request #9524 from InusualZ/master
Debugger: Fix issue were loaded memory breakpoints were not being triggered (break)
2021-02-21 15:49:24 +01:00
Léo Lam
c040b0151d
Merge pull request #8759 from sepalani/so-connect
IOS/NET: Add timeout on blocking connect
2021-02-21 15:26:59 +01:00
Sepalani
bf246c36f5 IOS/NET: Add timeout on blocking connect 2021-02-21 18:15:26 +04:00
Léo Lam
985ede9ca0
Core: Fix time base unit mixup
And add a strongly typed integer type so that making this kind of
mistake is more difficult
2021-02-20 14:18:21 +01:00
InusualZ
caf140dea9 Fix issue were loaded memory breakpoints were not being triggered
This was caused, because we were saving the `break_on_hit` flag with the letter `p`. Then while loading the breakpoints, we read the flag with the letter `b`, resulting in the `break_on_hit` flag being always false
2021-02-19 16:09:50 +00:00
Léo Lam
e3bf5fca93
IOS: Deduplicate IPC_OVERHEAD_TICKS timing constant 2021-02-18 21:10:55 +01:00
Léo Lam
f750208aa3
IOS/ES: Emulate FS timings for content wrapper IPC commands
Filesystem accesses aren't magically faster when they are done by ES,
so this commit changes our content wrapper IPC commands to take FS
access times and read operations into account.

This should make content read timings a lot more accurate and closer
to console. Note that the accuracy of the timings are limited to the
accuracy of the emulated FS timings, and currently performance
differences between IOS9-IOS28 and newer IOS versions are not emulated.

Part 1 of fixing https://bugs.dolphin-emu.org/issues/11346
(part 2 will involve emulating those differences)
2021-02-18 18:53:33 +01:00
Léo Lam
5eca82a6f2
IOS/ES: Allow various utility functions to return timing info 2021-02-18 18:53:33 +01:00
Léo Lam
f214df5d2c
IOS/FS: Allow IPC interface to be used internally from IOS HLE
This makes it more convenient to emulate timings for IPC commands that
perform internal IOS <-> IOS IPC, for example ES relying on FS
for filesystem access.
2021-02-18 18:53:32 +01:00
Léo Lam
1073463d35
IOS/ES: Log content reads for debugging
We log FS reads already, might as well log ES content reads.
2021-02-18 18:52:35 +01:00
Léo Lam
41e2fab54c
IOS/ES: Log content ID and index when opening contents for debugging
The content ID/index is what actually matters..
2021-02-18 18:52:35 +01:00
Léo Lam
d0c91380c7
IOS/FS: Implement timings for older IOS versions as well
According to hwtests, older versions of IOS are slower at performing
various filesystem operations:

https://docs.google.com/spreadsheets/d/1OKo9IUuKCrniz4m0kYIaMP_qFtOCmAzHZ_zAmobvBcc/edit

(courtesy of JMC)

A quick glance at IOS9 reveals that older versions of IOS have a
simplistic implementation of memcpy that does not optimize large copies
by copying 16 bytes or 32 bytes per chunk, which makes cached reads
and writes noticeably slower -- the difference was significant enough
that the OoT speedrunning community noticed that IOS9 (the IOS that
is used for the OoT VC title) was slower.
2021-02-15 18:41:22 +01:00
Léo Lam
f9deb68aee
Merge pull request #9514 from JosJuice/jitarm64-offsetof
JitArm64: Fix improper uses of offsetof
2021-02-15 00:59:11 +01:00
JosJuice
f2f3a59dbf JitArm64: Fix improper uses of offsetof
Using a non-constant array index inside offsetof is not
standards compliant, and is rejected by GCC 11.
https://bugs.dolphin-emu.org/issues/12409#note-5
2021-02-14 20:47:41 +01:00
Léo Lam
f79e629119
Merge pull request #9499 from sepalani/pcap-ssl-raw
PCAP: Add raw SSL packets logging support
2021-02-14 18:39:33 +01:00
Sepalani
d3dd830e8f PCAP: Add raw SSL packets logging support 2021-02-14 20:24:28 +04:00
Léo Lam
efab17c025
Merge pull request #9498 from leoetlino/offsetof-constant
Core/DSP: Fix improper uses of offsetof
2021-02-14 16:34:39 +01:00
Léo Lam
be2cd2272d
Merge pull request #9507 from leoetlino/device-prepareforstate
IOS: Remove unnecessary and unused PrepareForState
2021-02-14 16:30:34 +01:00
Léo Lam
c33d944961
Merge pull request #9412 from JosJuice/jitarm64-movi2r
Arm64Emitter: Improve MOVI2R
2021-02-14 16:25:52 +01:00
Léo Lam
effd918837
Merge pull request #9508 from leoetlino/ipc-reply-cleanup
IOS: Clean up the way IPC replies are constructed
2021-02-14 01:59:41 +01:00
Léo Lam
e62c33c413
Merge pull request #9500 from sepalani/pcap-log-session
PCAP: Improve TCP session logging
2021-02-13 20:50:58 +01:00
Léo Lam
d0136dd7c2
IOS: Clean up the way IPC replies are constructed
Instead of constructing IPCCommandResult with static member functions
in the Device class, we can just add the relevant constructors to the
reply struct itself. Makes more sense than putting it in Device
when the struct is used in the kernel code and doesn't use any Device
specific members...

This commit also changes the IPC command handlers to return an optional
IPCCommandResult rather than an IPCCommandResult. This removes the need
for a separate boolean that indicates whether the "result" is actually
a reply, and also avoids the need to set dummy result values and ticks.

It also makes it really obvious which commands can result in no reply
being generated.

Finally, this commit renames IPCCommandResult to IPCReply since the
struct is now only used for actual replies. This new name is less
verbose in my opinion.

The diff is quite large since this touches every command handler, but
the only functional change is that I fixed EnqueueIPCReply to
take a s64 for cycles_in_future to match IPCReply.
2021-02-13 20:15:30 +01:00
Léo Lam
f52aa3d041
HW: Add a UDL for timebase ticks to cycles conversions 2021-02-13 18:24:23 +01:00
Léo Lam
6e8881a426
IOS: Remove unnecessary and unused PrepareForState
PrepareForState is now unnecessary with the new implementation of
HostFileSystem::DoState, which does what the old implementation
(CWII_IPC_HLE_Device_FileIO::PrepareForState) used to do.
2021-02-13 16:56:29 +01:00
JosJuice
d226b8f825 Arm64Emitter: Remove optimize parameter from MOVI2R
I don't really see the use of this. (Maybe in the past it
was used for when we need a constant number of instructions
for backpatching? But we don't use MOVI2R for that now.)
2021-02-13 11:33:27 +01:00
Léo Lam
99fc1c682a
IOS: Simplify unnecessarily qualified names
Now that the ES class (now called ESDevice) and the ES namespace do
not conflict anymore, "IOS::" can be dropped in a lot of cases.

This also removes "IOS::HLE::" for code that is already in that
namespace. Some of those names used to be explicitly qualified
only for historical reasons.

There are no functional changes.
2021-02-13 01:36:09 +01:00
Léo Lam
522cb6b137
IOS: Use less ambiguous names for classes
Some of the device names can be ambiguous and require fully or partly
qualifying the name (e.g. IOS::HLE::FS::) in a somewhat verbose way.

Additionally, insufficiently qualified names are prone to breaking.
Consider the example of IOS::HLE::FS:: (namespace) and
IOS::HLE::Device::FS (class). If we use FS::Foo in a file that doesn't
know about the class, everything will work fine. However, as soon as
Device::FS is declared via a header include or even just forward
declared, that code will cease to compile because FS:: now resolves
to Device::FS if FS::Foo was used in the Device namespace.

It also leads to having to write IOS::ES:: to access ES types and
utilities even for code that is already under the IOS namespace.

The fix for this is simple: rename the device classes and give them
a "device" suffix in their names if the existing ones may be ambiguous.
This makes it clear whether we're referring to the device class or to
something else.

This is not any longer to type, considering it lets us get rid of the
Device namespace, which is now wholly unnecessary.

There are no functional changes in this commit.

A future commit will fix unnecessarily qualified names.
2021-02-12 21:40:31 +01:00
Sepalani
fabf6f51cd PCAP: Improve TCP session logging 2021-02-12 13:42:18 +04:00
Sepalani
2a15bc6ab2 SSL: Workaround to remove SNI from ClientHello 2021-02-11 23:13:59 +04:00
Léo Lam
1fc6fbc2c0
Merge pull request #6075 from sepalani/pcap-log
PCAP logging with fake TCP/UDP packet
2021-02-11 00:15:37 +01:00
Léo Lam
ddacbf83f6
Merge pull request #9461 from cbartondock/master
Working Game IDs for Elf/Dol files
2021-02-10 22:50:40 +01:00
Léo Lam
118b2a3580
Core/DSP: Fix improper uses of offsetof
According to the C standard, an offsetof expression must evaluate to an
address constant, otherwise it's undefined behavior.

Fixes https://bugs.dolphin-emu.org/issues/12409

See also https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95942

There are still improper uses of offsetof (mostly in JitArm64) but
fixing that will take more effort since there's a PPCSTATE_OFF wrapper
macro that is sometimes used with non-array members and sometimes used
with arrays and variable indices... Let's keep that for another PR.
2021-02-10 02:03:16 +01:00
JosJuice
761d7748b6 JitArm64: Fix mistaken use of LSL imm 2021-02-07 13:55:55 +01:00
JosJuice
efeda3b759 JitArm64: More constant propagation optimizations
PR 9262 added a bunch of Jit64 optimizations, some of
which were already in JitArm64 and some which weren't.
This change ports the latter ones to JitArm64.
2021-02-07 13:55:35 +01:00
Markus Wick
b6e9cca64f
Merge pull request #9485 from JosJuice/jitarm64-pc-stp
JitArm64: Use STP for pc/npc
2021-02-03 12:22:37 +01:00
MerryMage
a0b8956f22 JitArm64_Integer: Add optimizations for rlwimix
* Check for case when source field is at LSB
* Use BFXIL if possible
* Avoid ROR where possible
2021-01-31 12:05:43 +00:00
Sepalani
82bb5d9915 NetworkCaptureLogger: PCAP support added
Log TCP/UDP read/write with fake packet.
2021-01-30 19:35:09 +04:00
cbartondock
83c127784b Working Game IDs for Elf/Dol files 2021-01-30 09:51:37 -05:00
JosJuice
dd8e504c80 JitArm64: Use STP for pc/npc 2021-01-30 11:56:25 +01:00
Markus Wick
b22073ef59
Merge pull request #9484 from JosJuice/jitarm64-ps-stp
JitArm64: Use STP for (parts of) ppcState.ps
2021-01-30 08:51:56 +01:00
JosJuice
91b55824f9 JitArm64: Use STP for (parts of) ppcState.ps
The savestate incompatibility problem mentioned in a comment
was solved by d266be5.
2021-01-30 01:01:01 +01:00
Admiral H. Curtiss
dc2d234284 GCMemcardUtils: Fix typo in comment. 2021-01-28 22:01:33 +01:00