Commit graph

126 commits

Author SHA1 Message Date
bunnei
24b5e87279 Merge pull request #304 from lioncash/sflags
armemu: Set GE flags properly for SSUB16, SADD16, SSAX, and SASX.
2014-12-18 17:46:10 -05:00
Lioncash
e683f654ce armemu: Fix lower-bounds clamping for USAT16 2014-12-18 16:54:01 -05:00
Lioncash
6b632bbe37 armemu: More concise names for USAT16-related variables 2014-12-18 14:25:07 -05:00
Lioncash
4dc8eb40be armemu: Set GE flags correctly for SSUB16, SADD16, SSAX, and SASX. 2014-12-18 11:45:40 -05:00
bunnei
8ac22e7efc Merge pull request #299 from lioncash/join
Combine SSUB16, SADD16, SASX, and SSAX.
2014-12-18 10:04:31 -05:00
bunnei
797efbde1a Merge pull request #298 from lioncash/flags
armemu: Unset GE flags for UADD8 if results are < 0x100
2014-12-17 22:06:27 -05:00
bunnei
a968adf50e Merge pull request #295 from lioncash/umaal
armemu: Implement UMAAL
2014-12-17 21:44:13 -05:00
Lioncash
85c318078d armemu: Combine SSUB16, SADD16, SASX, and SSAX. 2014-12-17 21:17:54 -05:00
bunnei
075126247f Merge pull request #292 from lioncash/backports
Backport more skyeye fixes from 3dmoo
2014-12-17 20:58:00 -05:00
Lioncash
41fee1c940 armemu: Unset GE flags for UADD8 if results are < 0x100
Reference manual states these must be set to zero if this case is true.
2014-12-17 17:54:49 -05:00
Lioncash
58dc554733 armemu: Fix SSUB16
Broken from the same reason SADD16 was.

The lo part of the result should only be constructed from the lo halfwords of rm and rn.
The hi part of the result should only be constructed from the hi halfwords of rm and rn.
2014-12-17 15:40:10 -05:00
bunnei
e6f440ea7f Merge pull request #293 from lioncash/sops
armemu: Fix SADD16
2014-12-17 14:54:24 -05:00
bunnei
3e9d4a7917 Merge pull request #287 from lioncash/qaddsub16
armemu: Join QADD16/QSUB16 and fix saturation clamping.
2014-12-17 12:34:52 -05:00
Lioncash
5820dba6b7 armemu: Implement UMAAL 2014-12-17 12:21:21 -05:00
Lioncash
5289a496a7 armemu: Fix SADD16
The lo and hi parts of the result were being constructed as a result of hi and lo halfword intermixing from the rm and rn regs. However the lo part of the result should be constructed only from the lo halfwords of rm and rn, and the hi part of the result should only be constructed from the hi halfwords of rm and rn.
2014-12-17 09:36:25 -05:00
Normmatt
73211dc8fe armemu: Fix PKHTB 2014-12-17 03:26:12 -05:00
Normmatt
8045df14d2 armemu: Implement REVSH 2014-12-17 03:26:01 -05:00
Normmatt
bc81cc9490 armemu: Fix UXTAB/UXTAH 2014-12-17 03:24:25 -05:00
Normmatt
b5dbd6f2a2 armemu: Fix SXTAB 2014-12-17 03:17:44 -05:00
Normmatt
efebd5589a armemu: Fix SXTAH 2014-12-17 03:16:40 -05:00
bunnei
fdb4ef5210 Merge pull request #289 from lioncash/smops
Join SMUAD, SMUSD, and SMLAD ops. Also fix them as well.
2014-12-17 00:08:43 -05:00
bunnei
ec9ac2f51a Merge pull request #290 from lioncash/vsub
armemu: Backport some VFP fixes from 3dmoo.
2014-12-16 23:22:58 -05:00
Normmatt
9c127f4a01 armemu: Fix FTOUI NaN sign. 2014-12-16 05:56:06 -05:00
Normmatt
2ed03c10e0 armemu: Fix FSUBS bug where NaN shouldn't be negated 2014-12-16 05:54:00 -05:00
Lioncash
d5bcddb77c armemu: Fix SMUAD, SMUSD, and SMLAD
Wrong values were being multiplied together.
2014-12-16 03:13:06 -05:00
Lioncash
0f9e3baf39 armemu: Join SMUAD, SMUSD, and SMLAD 2014-12-16 03:11:50 -05:00
Lioncash
4c53799229 armemu: Fix lower-bound signed saturation clamping for QADD16/QSUB16. 2014-12-16 00:11:51 -05:00
Lioncash
49817e89d9 armemu: Join QADD16 and QSUB16 together.
The only difference between these ops is one adds and one subtracts. Everything is literally the same.
2014-12-16 00:11:19 -05:00
Lioncash
1c7f77334c armemu: Implement UXTAB16 2014-12-15 20:47:27 -05:00
Lioncash
2b0acd36e1 armemu: Fix UXTB16
Rotation bits are 10 and 11, not 9 and 10.
2014-12-14 23:00:31 -05:00
bunnei
1ee740898a Merge pull request #276 from lioncash/decrappify
Clean up armdefs.h a little.
2014-12-14 22:08:14 -05:00
bunnei
d26b7146ce ARM: Pull some SkyEye fixes from 3dmoo. 2014-12-14 21:51:46 -05:00
Lioncash
f6cb8c1927 Clean up armdefs.h 2014-12-14 02:00:42 -05:00
Yuri Kunde Schlesner
0600e2d8b5 Convert old logging calls to new logging macros 2014-12-13 02:08:02 -02:00
Lioncash
905e3b616a armemu: Fix SSAX 2014-12-08 15:47:20 -05:00
Lioncash
62fd564854 armemu: Fix SASX 2014-12-08 01:44:37 -05:00
Lioncash
b4256431aa armemu: Fix parenthesis warnings regarding bitwise ops 2014-12-07 23:58:12 -05:00
bunnei
13005d54aa Merge pull request #235 from yuriks/dyncom-map
dyncom: Use unordered_map rather than the terrible 2-level bb_map
2014-11-30 08:35:03 -05:00
Yuri Kunde Schlesner
4a68e91a62 dyncom: Use unordered_map rather than the terrible 2-level bb_map
Seems (probably just placebo/wishful thinking) to make it slightly
faster. Also reduces memory usage and makes shutdown when debugging from
MSVC fast.
2014-11-29 17:42:39 -02:00
Lioncash
4f28861008 arm_dyncom_interpreter: Get rid of unused var warnings 2014-11-29 14:13:29 -05:00
Emmanuel Gil Peyrot
f8c05e53c4 Remove unused includes to common/thread.h 2014-11-25 20:39:25 +00:00
Yuri Kunde Schlesner
c2588403c0 HLE: Revamp error handling throrough the HLE code
All service calls in the CTR OS return result codes indicating the
success or failure of the call. Previous to this commit, Citra's HLE
emulation of services and the kernel universally either ignored errors
or returned dummy -1 error codes.

This commit makes an initial effort to provide an infrastructure for
error reporting and propagation which can be use going forward to make
HLE calls accurately return errors as the original system. A few parts
of the code have been updated to use the new system where applicable.

One part of this effort is the definition of the `ResultCode` type,
which provides facilities for constructing and parsing error codes in
the structured format used by the CTR.

The `ResultVal` type builds on `ResultCode` by providing a container for
values returned by function that can report errors. It enforces that
correct error checking will be done on function returns by preventing
the use of the return value if the function returned an error code.

Currently this change is mostly internal since errors are still
suppressed on the ARM<->HLE border, as a temporary compatibility hack.
As functionality is implemented and tested this hack can be eventually
removed.
2014-11-24 17:08:36 -02:00
Yuri Kunde Schlesner
924bbde89b Change some SkyEye defines to const ints
This prevents them from interfering with other constants defined in
different namespaces.
2014-11-24 16:47:01 -02:00
Emmanuel Gil Peyrot
f5d38649c7 Remove trailing spaces in every file but the ones imported from SkyEye, AOSP or generated 2014-11-19 09:03:07 +00:00
Lioncash
64cc6cb6cf Fix documentation of parameters 2014-11-18 08:31:24 -05:00
bunnei
613627205c Merge pull request #194 from lioncash/virt
ARM_Interface: Make destructor virtual
2014-11-15 01:38:51 -05:00
Lioncash
e8f4361d76 ARM_Interface: Make destructor virtual
Fixes some warnings on OSX.
2014-11-14 12:10:35 -05:00
bunnei
b8e6f52419 ARM: Fixed dyncom to use reg15 for PC (this core doesn't use pc variable).
- Fixes single stepping in debugger.
2014-11-11 19:54:18 -05:00
bunnei
573756e241 ARM: Removed unnecessary goto with each instruction. 2014-11-11 19:53:46 -05:00
bunnei
3409790668 ARM: Fixed several dyncom bugs.
- Fixed NZCVT flags to properly save state when function returns.
- Fixed counter to keep track of the actual number of instructions executed.
- Fixed single-step mode to only execute one instruction at a time.
- DefaultIni: Removed comment that no longer applied to dyncom.
2014-11-11 19:53:19 -05:00