9397 Commits

Author SHA1 Message Date
JosJuice
0341a6052b DVDInterface: Reply to 0-length commands
This regression from the chunking PR was making a few games hang.
2017-09-03 15:09:14 +02:00
degasus
992893ba41 Jit64: Use ImmPtr. 2017-09-02 14:33:07 +02:00
degasus
da79ddbde7 JitArm64: Rewrite Exit functions.
The gpr must not be touched in the Exit functions as they are maybe conditional.
So just allocate everything here manually.
2017-09-02 13:45:24 +02:00
degasus
304e601ad3 JitArm64: Reimplement aarch64 cycle counters.
CNTVCT_EL0 is force-enabled on all linux plattforms.
Windows is untested, but as this is the best way to get *any* low
overhead performance counters, they likely use it as well.
2017-09-02 13:24:37 +02:00
degasus
9080192a65 Jit64: Move profiler to the end of th block.
Within Cleanup(), it is called at *every* end of the block. This generates bigger code,
but it is the only way to handle blocks with multiple exit nodes.
2017-09-02 13:05:58 +02:00
degasus
958b75b707 JitCommon: Restructure the profiler calls. 2017-09-02 13:05:58 +02:00
degasus
8ab34b1a3e Jit64: Inline the profiler calls. 2017-09-02 13:05:58 +02:00
Michael M
b58f8d19ab Rename Common::FifoQueue to Common::SPSCQueue
Since all queues are FIFO data structures, the name wasn't informative
as to why you'd use it over a normal queue. I originally thought it had
something to do with the hardware graphics FIFO.

This renames it using the common acronym SPSC, which stands for
single-producer single-consumer, and is most commonly used to talk about
lock-free data structures, both of which this is.
2017-08-23 17:00:52 -07:00
Léo Lam
52f26d462e WiimoteReal: Fix device handles not being closed
fail.

I have no idea how this didn't cause issues for more people.
2017-08-23 23:05:29 +02:00
Léo Lam
e4ea4da782 IOS: Check for available features when adding devices
Prevents resource managers that shouldn't be visible from being exposed
to titles.

This adds a new function to get features for an IOS version, and also
moves the version checks from the modules themselves to VersionInfo.
This hopefully documents some of the differences between IOS better
and should be slightly cleaner than having random version checks.
2017-08-23 15:18:12 +02:00
Léo Lam
24e7b465be IOS: Rename MemoryValues to VersionInfo 2017-08-23 14:44:51 +02:00
Léo Lam
ef888ef168 WFS: Fix logging types. 2017-08-22 23:41:38 +02:00
Léo Lam
344228ec10 WFSI: Implement noop ioctl 0x8f. 2017-08-22 23:41:38 +02:00
Léo Lam
70cb0cb126 WFSI: Implement GET_VERSION.
This ioctl writes a constant value to the output buffer.
2017-08-22 23:41:38 +02:00
Léo Lam
8a5d24ab4b WFSI: Implement IOCTL_WFSI_IMPORT_TITLE_CANCEL.
It gets called for cleaning up whenever something goes wrong, and
also when cancelling an update.
2017-08-22 23:41:38 +02:00
Léo Lam
5cc18bf116 WFSI: Add missing functionality to ImportTitleInit. 2017-08-22 23:41:38 +02:00
Léo Lam
f0aeeeaef6 WFSI: Implement internal Cancel{Title,Patch}Import. 2017-08-22 23:41:38 +02:00
Léo Lam
c1817b2c6d WFSI: Rename 2 ioctls to better reflect their purposes.
* IOCTL_WFSI_PREPARE_DEVICE -> IOCTL_WFSI_IMPORT_TITLE_INIT
  (equivalent of ES_ImportTitleInit, also the official name)

* IOCTL_WFSI_IMPORT_TITLE -> IOCTL_WFSI_IMPORT_TITLE_CANCEL
  (equivalent of ES_ImportTitleCancel)
2017-08-22 23:41:38 +02:00
Léo Lam
7423563386 WFSI: Fix the TMD size check. 2017-08-22 23:41:37 +02:00
Pierre Bourdon
a641609857 WFSI: Implement patch install finalization. 2017-08-22 23:41:37 +02:00
Pierre Bourdon
76bbfbb511 WFSI: Adapt FINALIZE_TITLE_INSTALL for patch support. 2017-08-22 23:14:00 +02:00
Pierre Bourdon
db24c94c6e WFSI: More work to support patching: split off current_tid/gid and import_tid/gid 2017-08-22 23:14:00 +02:00
Pierre Bourdon
aa445806a5 WFSI: Rename a few ioctl handlers. 2017-08-22 23:14:00 +02:00
Pierre Bourdon
5ed3a3f12d WFSI: Get the patch info from PREPARE_DEVICE. 2017-08-22 23:14:00 +02:00
Léo Lam
e004709b69 WFSI: Implement CHECK_HAS_SPACE. 2017-08-22 23:13:59 +02:00
Léo Lam
15f25783a8 WFS: Implement RENAME. 2017-08-22 23:13:58 +02:00
Pierre Bourdon
2a8d9a53b7 WFS: Share error codes with WFSI. 2017-08-22 23:13:14 +02:00
Pierre Bourdon
e6e00f6c8d WFSI: Implement install finalization. 2017-08-22 23:13:14 +02:00
Pierre Bourdon
88580b8d5f WFSI: Fix install directories creation. 2017-08-22 23:13:14 +02:00
Pierre Bourdon
e79392cb8e WFS: Implement WRITE and WRITE_ABSOLUTE. 2017-08-22 23:13:14 +02:00
Pierre Bourdon
dca70844a6 WFS: Implement CREATE_OPEN along with OPEN. 2017-08-22 23:13:14 +02:00
Pierre Bourdon
ef3232cd74 WFSI: Create meta/work/save dirs when applying title profile. 2017-08-22 23:13:14 +02:00
Pierre Bourdon
c0b3a68441 WFS: Implement MKDIR. 2017-08-22 23:13:13 +02:00
Pierre Bourdon
e45bb77512 WFS: Add a basic GET_ATTRIBUTES implementation. 2017-08-22 23:13:13 +02:00
Pierre Bourdon
56aa3cc558 WFSI: Implement both GET_TMD ioctls. 2017-08-22 23:13:13 +02:00
Pierre Bourdon
c81636d9a8 WFSI: Stub out SET_FST_BUFFER. 2017-08-22 23:13:13 +02:00
Pierre Bourdon
92387cb052 WFS: Implement CLOSE_2 as a clone of CLOSE. 2017-08-22 23:13:13 +02:00
Leo Lam
c12418788a Merge pull request #5963 from JMC47/mtmsrfix
Fix JIT64 mtmsr issue after PIE support.
2017-08-22 22:12:13 +02:00
Nick
3d01eeef00 Fix OSX hotkey defaults 2017-08-22 21:31:19 +02:00
Markus Wick
3094d6531d Merge pull request #5962 from degasus/arm-fixes
JitArm64: Fix rlwinmx.
2017-08-22 20:27:45 +02:00
JosJuice
09f3f9b41a Remove NonCopyable
The class NonCopyable is, like the name says, supposed to disallow
copying. But should it allow moving?

For a long time, NonCopyable used to not allow moving. (It declared
a deleted copy constructor and assigment operator without declaring
a move constructor and assignment operator, making the compiler
implicitly delete the move constructor and assignment operator.)
That's fine if the classes that inherit from NonCopyable don't need
to be movable or if writing the move constructor and assignment
operator by hand is fine, but that's not the case for all classes,
as I discovered when I was working on the DirectoryBlob PR.

Because of that, I decided to make NonCopyable movable in c7602cc,
allowing me to use NonCopyable in DirectoryBlob.h. That was however
an unfortunate decision, because some of the classes that inherit
from NonCopyable have incorrect behavior when moved by default-
generated move constructors and assignment operators, and do not
explicitly delete the move constructors and assignment operators,
relying on NonCopyable being non-movable.

So what can we do about this? There are four solutions that I can
think of:

1. Make NonCopyable non-movable and tell DirectoryBlob to suck it.

2. Keep allowing moving NonCopyable, and expect that classes that
   don't support moving will delete the move constructor and
   assignment operator manually. Not only is this inconsistent
   (having classes disallow copying one way and disallow moving
   another way), but deleting the move constructor and assignment
   operator manually is too easy to forget compared to how tricky
   the resulting problems are.

3. Have one "MovableNonCopyable" and one "NonMovableNonCopyable".
   It works, but it feels rather silly...

4. Don't have a NonCopyable class at all. Considering that deleting
   the copy constructor and assignment operator only takes two lines
   of code, I don't see much of a reason to keep NonCopyable. I
   suppose that there was more of a point in having NonCopyable back
   in the pre-C++11 days, when it wasn't possible to use "= delete".

I decided to go with the fourth one (like the commit title says).
The implementation of the commit is fairly straight-forward, though
I would like to point out that I skipped adding "= delete" lines
for classes whose only reason for being uncopyable is that they
contain uncopyable classes like File::IOFile and std::unique_ptr,
because the compiler makes such classes uncopyable automatically.
2017-08-22 16:40:34 +02:00
JMC47
f7b133b39a Fix JIT64 mtmsr - PIE support caused the codesize
to get bigger, breaking an optimization.  This forces the emitter to use a
32bit pointer instead of an 8bit one, fixing the issue at the expense of
efficiency.
2017-08-22 06:44:38 -04:00
degasus
b00c60618b JitArm64: Fix rlwinmx.
Seems like I was wrong that ANDI2R doesn't require a temporary register here.
There is *one* case when the mask won't fit in the ARM AND instruction:
mask = 0xFFFFFFFF
But let's just use MOV instead of AND here for this case...
2017-08-22 08:47:43 +02:00
Mat M
5aed9a67ef Merge pull request #5904 from leoetlino/indirect-include
PowerPC: Fix indirect includes for GDBStub
2017-08-20 19:59:53 -04:00
Léo Lam
4b4e488189 WFS: Use a separate log type for WFS related logs
Makes it easier to turn off general IOS messages that can be
distracting (e.g. /dev/net/ssl being opened hundreds of time...)
without losing the ability to view WFS messages.
2017-08-16 22:27:29 +02:00
Leo Lam
799b01b6af Merge pull request #5751 from leoetlino/region
Config: Fall back to the system menu region
2017-08-17 03:40:19 +08:00
Leo Lam
a53b01360c Merge pull request #5898 from ligfx/extractupnp
Common: extract UPnP namespace from NetPlayServer
2017-08-17 03:11:41 +08:00
Leo Lam
70931f460d Merge pull request #5929 from JonnyH/PR/fix-oprofile-build-linked-as-needed
Fix OPROFILE linux build with -Wl,--as-needed
2017-08-17 03:06:59 +08:00
Leo Lam
3748384008 Merge pull request #5746 from leoetlino/disc-updates
Add support for installing disc updates from the game list
2017-08-16 19:02:42 +08:00
Sepalani
93b5a5369b SymbolDB: Blank stripped symbol name fixed 2017-08-16 04:07:19 +01:00