Commit graph

586 commits

Author SHA1 Message Date
Lioncash 49a22acd02 arm: Remove ARM26 support.
This will never be used. 32-bit is the norm.
2015-02-11 12:23:21 -05:00
bunnei c51b23b052 Merge pull request #559 from lioncash/clean
arm: Some cleanup. Also fixed the initial ARM mode that is emulated.
2015-02-11 12:02:35 -05:00
Lioncash c94c41f95a arm: Get rid of some magic constants. Specify proper ARM mode.
Initially, we were starting the emulator in USER26MODE, which is incorrect, this should be USER32MODE.
2015-02-11 10:49:55 -05:00
Lioncash 93cd199633 arm: Change some more constants into enums 2015-02-11 10:14:20 -05:00
archshift ef24e72b26 Asserts: break/crash program, fit to style guide; log.h->assert.h
Involves making asserts use printf instead of the log functions (log functions are asynchronous and, as such, the log won't be printed in time)
As such, the log type argument was removed (printf obviously can't use it, and it's made obsolete by the file and line printing)

Also removed some GEKKO cruft.
2015-02-10 18:30:31 -08:00
bunnei 5b735bdeea Merge pull request #556 from lioncash/clean
arm: Remove TRUE/FALSE defines
2015-02-10 18:28:30 -05:00
Lioncash 088fab743f arm: Remove TRUE/FALSE defines
- Removed the Debug parameter from ARMul_State since it isn't used.
- Changed ARMul_CoProInit to a void function. It always returned true.
2015-02-10 13:09:41 -05:00
Lioncash 8d2fb3bb2b arm_dyncom_thumb: Make lookup tables static
These don't need to be recreated all the time.
2015-02-10 10:42:09 -05:00
bunnei 67db6aa4ce Merge pull request #553 from lioncash/denorm
vfp: Normalize accumulator for multiply accumulate instructions
2015-02-10 10:09:45 -05:00
Lioncash 3eccc66abf dyncom: Add more regs to MCR/MRC
Adds the registers that were left out of some coprocessor ranges.
2015-02-10 09:34:42 -05:00
Lioncash a86d5e2752 vfp: Normalize accumulator for multiply accumulate instructions 2015-02-10 08:16:26 -05:00
Kevin Hartman 5fcbfc06eb Scheduler refactor Pt. 1
* Simplifies scheduling logic, specifically regarding thread status. It should be much clearer which statuses are valid
for a thread at any given point in the system.
* Removes dead code from thread.cpp.
* Moves the implementation of resetting a ThreadContext to the corresponding core's implementation.

Other changes:
* Fixed comments in arm interfaces.
* Updated comments in thread.cpp
* Removed confusing, useless, functions like MakeReady() and ChangeStatus() from thread.cpp.
* Removed stack_size from Thread. In the CTR kernel, the thread's stack would be allocated before thread creation.
2015-02-09 21:47:12 -08:00
Lioncash 53fa04f326 vfpdouble: Fix the FTOUI NaN sign setting
This was fixed for vfpsingle, but not vfpdouble
2015-02-09 17:18:29 -05:00
Lioncash a734e9fdca Throw more unused/unnecessary VFP code out 2015-02-09 11:54:39 -05:00
Lioncash ca7babe062 vfp_helper: Convert some flags to enums. Throw out more duplicated FPSCR stuff 2015-02-09 09:53:17 -05:00
Lioncash d832c48864 vfp_helper: Normalize tabs to spaces 2015-02-09 09:32:56 -05:00
Lioncash 1ecd75ea1a vfp_helper: Remove unnecessary extern C blocks 2015-02-06 14:52:29 -05:00
Lioncash 3e576219c4 vfp: Move FPSID, FPEXC, and FPSCR values over to enums.
Also got rid of duplicate definitions of some of these values.
2015-02-06 14:52:05 -05:00
bunnei 7f900ac68e Merge pull request #537 from lioncash/vfp
vfp: Fix VCVT
2015-02-04 14:58:36 -05:00
bunnei 4d36a6a255 Merge pull request #536 from lioncash/dead
vfp: Throw out unused code
2015-02-04 14:57:00 -05:00
Lioncash 82e8f25fe7 vfp: Fix VCVT
These variants exclusively read from the single precision regs and write to double-precision registers
Fixes issues where converted values would be way off from what they should be due to the results being stored in the wrong registers.
2015-02-04 14:06:10 -05:00
Lioncash 7ecedfb970 vfp: Throw out unused code 2015-02-04 13:11:03 -05:00
Lioncash 3a5a39c6aa dyncom: Remove more unnecessary code 2015-02-03 14:05:53 -05:00
Lioncash 676daef3c7 core: Fix some warnings on OSX 2015-02-03 08:14:42 -05:00
bunnei c8628f5d56 Merge pull request #525 from lioncash/armwarn
vfp: Get rid of some compile warnings
2015-02-01 00:28:50 -05:00
Lioncash 8c944bd1f0 vfp: Get rid of some compile warnings 2015-01-31 22:14:00 -05:00
Lioncash 3f00dd9117 arm: Clean up ARMul_State
Remove unnecessary/unused struct variables.
2015-01-31 21:55:34 -05:00
Lioncash f44781fd7b arm: Adios armemu 2015-01-31 20:43:03 -05:00
Lioncash b6cfc48a0b dyncom: clean up arm_dyncom_dec.h 2015-01-30 16:28:52 -05:00
Lioncash fc1a9e35fb arm: Move headers over to pragma once 2015-01-30 16:17:02 -05:00
Lioncash 83bc1a3120 arm: Get rid of armcpu.h and skyeye_types.h 2015-01-30 16:16:58 -05:00
Lioncash 904194c3e8 arm: Clean out armos.h and armmmu.h 2015-01-30 15:48:57 -05:00
Lioncash 09a66860e2 arm: Throw out a lot of unnecessary code 2015-01-30 13:32:03 -05:00
Lioncash 3dfef1701c armdefs: Move some defines over to enums 2015-01-30 12:43:58 -05:00
Lioncash 7a3e371141 dyncom: Minor cleanup
Narrow scopes for the instruction variables. Remove unnecessary parentheses.
2015-01-27 08:51:18 -05:00
bunnei 547737f720 Update vfp.cpp
VFP: Changed a debug log to trace.
2015-01-26 21:38:53 -05:00
bunnei cc34462b71 Merge pull request #410 from chinhodado/cleanup
Cleanup: Logging in Core
2015-01-24 00:41:10 -05:00
Lioncash e09fb7becc vfp: Clean up vertical alignment for instructions 2015-01-23 13:35:08 -05:00
Lioncash 8810dfe1de dyncom: Minor cleanup
Removes some unused macros and cleans up indentation inconsistencies
2015-01-22 09:39:41 -05:00
Lioncash 8c6edc680c dyncom: Clarify precedence for ternary statements 2015-01-19 20:35:55 -05:00
Chin fa8e6272c8 Cleanup: Logging in Core 2015-01-19 16:01:06 -05:00
Lioncash a873f157d0 dyncom: Implement missing shifts in ScaledRegisterPostIndexed, etc 2015-01-18 18:32:02 -05:00
Lioncash 8575010a68 dyncom: Handle the ARM A2 encoding of STRT/LDRT
These were also missing the shifted register case.
2015-01-17 13:53:35 -05:00
Lioncash 0a5d450e94 dyncom: Handle the ARM A2 encoding of LDRBT/STRBT. 2015-01-16 21:05:27 -05:00
Lioncash 9288893d29 vfp: Remove dead code 2015-01-12 15:24:57 -05:00
Lioncash f7770b83d4 dyncom: Fix 32-bit ASR shifts for immediates 2015-01-12 14:15:24 -05:00
Lioncash e16b35eb53 dyncom: Remove unused flag macros 2015-01-12 12:57:15 -05:00
Lioncash 2843d1b98b dyncom: Get rid of unnecessary outer-scope variables in InterpreterMainLoop 2015-01-12 01:11:46 -05:00
Lioncash 3ace75a49f dyncom: Fix overflow flag setting for ADD/RSB/RSC/SUB/SBC
Also cleans up CMN, and CMP.
2015-01-12 01:03:58 -05:00
Lioncash 9c2c89b7e1 dyncom: Add a helper function for addition with a carry 2015-01-12 00:44:28 -05:00
Lioncash d2a05bbbc6 dyncom: Fix ADC overflow flag setting 2015-01-11 22:27:09 -05:00
Lioncash eabfa5cf43 dyncom: Fix conditional execution of MSR 2015-01-11 18:45:45 -05:00
Yuri Kunde Schlesner 7b3452c730 Move ThreadContext to core/core.h and deal with the fallout 2015-01-09 03:51:55 -02:00
Subv fc842963c8 DynCom: Add a comment to GetTicks. 2015-01-08 19:46:00 -05:00
Subv 620d77b7e3 Timing: Use CoreTiming::GetTicks to keep track of ticks.
This will keep track of idle ticks for us, and fixes some tickcount-related issues
2015-01-08 19:39:14 -05:00
Lioncash 1cef6e92d5 dyncom: Fix UMAAL
These need to be done as a 64-bit operation.
2015-01-08 11:09:21 -05:00
bunnei 4c583732f2 Merge pull request #442 from lioncash/smul
dyncom: Fix SMULWB/SMULWT
2015-01-07 16:49:30 -05:00
Lioncash df5e0f9f28 dyncom: Fix SMULWB/SMULWT
Wasn't doing proper sign-extension
2015-01-07 16:41:08 -05:00
bunnei 3eca33c6a4 Merge pull request #425 from Subv/coretiming
Ported the CoreTiming namespace from PPSSPP
2015-01-07 15:30:46 -05:00
Subv 9bf82beb4c CoreTiming: Ported the CoreTiming namespace from PPSSPP
Implemented the required calls to make it work.

CoreTiming: Added a new logging class Core_Timing.
2015-01-07 15:08:35 -05:00
bunnei 317fe1e528 Merge pull request #438 from lioncash/swp
dyncom: Fix SWPB
2015-01-07 09:53:29 -05:00
Lioncash 75c211c10f dyncom: Fix SWPB 2015-01-07 09:36:06 -05:00
Lioncash 511e13f3e3 dyncom: Move over SMLALXY 2015-01-07 00:53:56 -05:00
bunnei 89bb0ecbd5 Merge pull request #417 from kevinhartman/exclusive-tag-fix
Added exclusive reservation granule from ARMv7 spec to dyncom...
2015-01-06 12:42:10 -05:00
Kevin Hartman 8132c01830 Added exclusive reservation granule from ARMv7 spec to dyncom to protect LDR/STREX. 2015-01-05 22:29:51 -05:00
Lioncash f75def619c dyncom: Partially emulate BXJ
Just in case some game studio let the intern write inline assembly or something.
2015-01-05 15:55:09 -05:00
Lioncash e08a39a2f4 dyncom: Actually set the Q flag for SMLABB/SMLABT/SMLATB/SMLATT
Easy skyeye todo fix.
2015-01-05 10:41:02 -05:00
bunnei 8b1ec1a82a Merge pull request #418 from lioncash/qd
dyncom: Implement QADD/QSUB/QDADD/QDSUB
2015-01-05 09:59:12 -05:00
Lioncash d00c22c706 dyncom: Implement QADD/QSUB/QDADD/QDSUB 2015-01-05 09:13:41 -05:00
Lioncash 41e1cb12e5 skyeye: Remove duplicate typedefs
citra already has its own typedefs like this.
2015-01-04 12:34:02 -05:00
bunnei caa6d431ee Merge pull request #398 from lioncash/sm
dyncom: Implement SMLAW
2015-01-03 11:47:01 -05:00
Lioncash 6adc0a4622 dyncom: Implement SMLAW 2015-01-03 03:13:49 -05:00
bunnei b11518c272 VFP: Minor cleanup, functionally the same. 2015-01-03 01:22:38 -05:00
bunnei dd21f986b8 Merge pull request #395 from lioncash/rev
dyncom: Implement REVSH
2015-01-02 22:44:39 -05:00
Lioncash 2f19acf064 dyncom: Implement REVSH
Also joins the REV ops into one common place.
2015-01-02 22:40:43 -05:00
Lioncash e0e54f55d7 dyncom: Implement SMLALD/SMLSLD 2015-01-02 22:08:26 -05:00
bunnei 3e230d6c9e Merge pull request #392 from lioncash/sm
dyncom: Implement SMMLA/SMMUL/SMMLS
2015-01-02 21:47:53 -05:00
Lioncash 64161bcb41 dyncom: Implement SMMLA/SMMUL/SMMLS 2015-01-02 21:40:29 -05:00
bunnei dd8a57cb80 dyncom: Implemented LDREXD/STREXD/LDREXH/STREXH 2015-01-02 20:51:54 -05:00
bunnei 3b2da87080 Merge pull request #390 from lioncash/wut
dyncom: Remove dead function InterpreterInitInstLength
2015-01-02 20:40:29 -05:00
Lioncash 67187c15a0 dyncom: Remove dead function InterpreterInitInstLength
Technically eliminates two memory leaks as well.
2015-01-02 20:24:00 -05:00
Lioncash bee4ff8454 armemu: Fix missing Q flag check for SMLSD. 2015-01-02 18:29:36 -05:00
Lioncash 3337b84620 dyncom: Implement SMLAD/SMUAD/SMLSD/SMUSD 2015-01-02 18:29:30 -05:00
Lioncash 48bf0f9996 dyncom: Implement SXTAB16 and SXTB16 2015-01-01 21:59:37 -05:00
bunnei fa4cc502e7 Merge pull request #379 from lioncash/sh
dyncom: Implement SHADD8/SHADD16/SHSUB8/SHSUB16/SHASX/SHSAX
2015-01-01 20:43:04 -05:00
Lioncash 524da47698 dyncom: Implement SHADD8/SHADD16/SHSUB8/SHSUB16/SHASX/SHSAX 2015-01-01 10:34:20 -05:00
Lioncash 481a6c9652 Fix SADD8/SSUB8 in the armemu 2015-01-01 09:44:32 -05:00
Lioncash 4e2cb06b81 dyncom: Implement SADD8/SSUB8 2015-01-01 09:39:40 -05:00
bunnei 59bba04628 Merge pull request #375 from lioncash/uops
dyncom: Implement UADD8/UADD16/USUB8/USUB16/UASX/USAX
2014-12-31 10:14:37 -05:00
Lioncash 3cc4af99d1 dyncom: Implement UADD8/UADD16/USUB8/USUB16/UASX/USAX 2014-12-31 06:45:41 -05:00
bunnei 631f13e462 dyncom: Massive refactor 2014-12-30 23:56:45 -05:00
bunnei 29da5da951 Merge pull request #369 from darkf/mingw_
Fix MinGW build (2)
2014-12-30 23:54:02 -05:00
Lioncash 5894c407c2 vfp: Get rid of a few warnings 2014-12-30 13:08:56 -05:00
Lioncash 6ce4b7b666 vfp: Implement VMOVBRRSS 2014-12-30 11:04:22 -05:00
Lioncash cc9f458ad3 dyncom: Implement USAT16/SSAT16 2014-12-30 09:43:24 -05:00
darkf 8ba9ac0f74 Fix merge conflicts 2014-12-29 19:47:41 -08:00
bunnei 021fb42075 dyncom: Implement USAT/SSAT 2014-12-29 22:15:15 -05:00
bunnei aa49019afb dyncom: Various cleanups to match coding style, no functional changes. 2014-12-29 21:50:47 -05:00
bunnei 2d2aa2c0be Merge pull request #361 from lioncash/moreqops
dyncom/armemu: Implement QADD8/QSUB8.
2014-12-29 14:53:04 -05:00
Lioncash d08d9f8747 dyncom: Fix SMLALXY's instruction labels
They were erroneously labeled as SMLAL.
2014-12-29 12:04:34 -05:00
Lioncash e412c0fc46 dyncom: Implement QADD8/QSUB8 2014-12-29 00:54:48 -05:00
Lioncash 7ad400d5a7 armemu: Implement QADD8/QSUB8 2014-12-29 00:49:10 -05:00
Lioncash 5c198686ce dyncom: Implement UXTB16/UXTAB16 2014-12-28 22:45:04 -05:00
bunnei df728cb4c2 Merge pull request #355 from lioncash/simp
armemu: Simplify some instructions.
2014-12-28 22:20:49 -05:00
Lioncash 9c7f2570f7 vfp: Actually make the code somewhat readable 2014-12-28 18:55:01 -05:00
bunnei bf9b33aa9f dyncom: Implement PKHBT and PKHTB. 2014-12-28 16:50:08 -05:00
bunnei 58cb62fe7b armemu: Fix PKHTB to do an arithmetic shift and correctly decode immediate field. 2014-12-28 16:18:52 -05:00
Lioncash 7d322b5c6f dyncom: Implement USAD8/USADA8 2014-12-28 12:40:51 -05:00
Lioncash 6ce2a38ec4 armemu: Simplify SSAT/SSAT16/SXTB/SXTAB 2014-12-28 12:19:31 -05:00
Lioncash 9f5b53f9ff armemu: Simplify REV/REV16/SXTH/SXTAH 2014-12-28 12:13:13 -05:00
bunnei 762f16c4ad Merge pull request #354 from lioncash/usaduflow
armemu: Fix underflows in USAD8/USADA8
2014-12-28 11:57:25 -05:00
Lioncash 914ecfe04f armemu: Simplify USAT16/UXTB/UXTAB 2014-12-28 11:57:14 -05:00
Lioncash 5e16216afb armemu: Simplify REVSH/UXTH/UXTAH 2014-12-28 11:57:09 -05:00
Lioncash 059c65a27a armemu: Fix underflows in USAD8/USADA8
Initially reported by xdec.
2014-12-28 06:09:43 -05:00
Lioncash af69b0840b dyncom: Implement UQADD8, UQADD16, UQSUB8, UQSUB16, UQASX, and UQSAX. 2014-12-27 17:24:34 -05:00
Lioncash 60523113a9 armemu: Implement UQADD8, UQADD16, UQSUB16, UQASX, and UQSAX 2014-12-27 17:06:19 -05:00
Lioncash 52d889d85d dyncom: Implement UHADD8, UHADD16, UHSUB8, UHSUB16, UHASX, and UHSAX 2014-12-27 00:57:32 -05:00
Lioncash 84a0438cf5 armemu: Implement UHADD8, UHADD16, UHSUB8, UHSUB16, UHASX, and UHSAX 2014-12-26 23:55:39 -05:00
bunnei e5ddbfee02 Merge pull request #339 from bunnei/fixup-gsp-synch
Fixup gsp synch
2014-12-25 22:52:40 -05:00
bunnei 4783133bbd ARM: Add a mechanism for faking CPU time elapsed during HLE.
- Also a few cleanups.
2014-12-25 22:46:44 -05:00
bunnei 9c8ec675d9 Merge pull request #343 from lioncash/smmla
armemu: Implement SMMUL, SMMLA, and SMMLS.
2014-12-25 21:57:31 -05:00
bunnei 254567056f Merge pull request #341 from lioncash/moresmops
armemu: Implement SMLALD/SMLSLD
2014-12-25 21:46:54 -05:00
Lioncash 35dbfc7ab0 armemu: Implement SMMUL, SMMLA, and SMMLS. 2014-12-25 13:52:46 -05:00
Lioncash 82c3962b95 armemu: Implement SMLALD/SMLSLD 2014-12-24 09:29:48 -05:00
Lioncash 6b7808e412 armemu: Fix GE/Q flag setting semantics 2014-12-24 07:56:57 -05:00
Lioncash 20fc5f2a35 armemu: Set the Q flag correctly for much of the other ops
They were setting the old S flag.
2014-12-23 09:59:37 -05:00
Lioncash 79a7a432c5 armemu: Set the Q flag properly for SMLAD/SMUAD 2014-12-23 09:58:21 -05:00
bunnei d31a94f06b Merge pull request #334 from lioncash/cpsr
armemu: Fix retrieval of the CPSR in MRS instructions.
2014-12-23 09:44:04 -05:00
bunnei 53447da142 Merge pull request #335 from lioncash/cpsrcreate
armemu: Emulate the GE and Q flags.
2014-12-23 09:43:46 -05:00
Lioncash 6446331938 armemu: Properly set the Q flag for SSAT16/USAT16 upon saturation. 2014-12-22 23:52:05 -05:00
Lioncash f66d356938 armemu: Fix SEL
Needs to use the updated state of the CPSR.
2014-12-22 23:52:05 -05:00
Lioncash 8e2accd974 armemu: Fix construction of the CPSR 2014-12-22 23:51:59 -05:00
Lioncash 8c72322422 armemu: Fix retrieval of the CPSR in MRS instructions. 2014-12-22 21:44:03 -05:00
Lioncash 97f3e884d2 dyncom: Move over QADD16/QASX/QSAX/QSUB16 2014-12-22 01:09:42 -05:00
bunnei 2188af4a65 Merge pull request #322 from chinhodado/master
More warning cleanups
2014-12-22 00:12:43 -05:00
Lioncash 245276c9cc dyncom: Move SEL over 2014-12-21 21:19:15 -05:00
bunnei 770b274c86 Merge pull request #324 from lioncash/dync
dyncom: Move over SASX/SSAX/SADD16/SSUB16
2014-12-21 20:33:14 -05:00
Lioncash c6f27055c9 dyncom: Move over SASX/SSAX/SADD16/SSUB16 2014-12-21 19:50:36 -05:00
bunnei 0de6a08d75 Merge pull request #291 from purpasmart96/license
License change
2014-12-21 16:05:44 -05:00
Chin 0199a7d9ef More warning cleanups 2014-12-21 10:58:55 -05:00
purpasmart96 ebfd831ccb License change 2014-12-20 21:20:24 -08:00
Lioncash 855eda6f85 armemu: Implement SADD8/SSUB8 2014-12-20 23:10:35 -05:00
bunnei 0e9262885d Merge pull request #296 from lioncash/dyn
dyncom: Implement UMAAL
2014-12-20 16:24:12 -05:00
bunnei 993afd3bf0 Merge pull request #310 from lioncash/ssat16
armemu: Fix SSAT16.
2014-12-20 16:23:54 -05:00
Lioncash 2a097f0990 armemu: Should be using labs for USAD8/USADA8 2014-12-20 15:34:14 -05:00
bunnei 7095c4959b Merge pull request #311 from lioncash/usada
armemu: Implement USAD8 and USADA8
2014-12-20 15:21:25 -05:00
bunnei 52bc58283d Merge pull request #313 from lioncash/smlsd
armemu: Implement SMLSD
2014-12-20 15:18:52 -05:00
bunnei 1c50a036dd Merge pull request #314 from lioncash/qsax-qasx
armemu: Implement QASX and QSAX
2014-12-20 15:18:05 -05:00
bunnei 245abb4125 Merge pull request #294 from lioncash/var
armemu: Narrow the scope of some variables in handle_v6_insn
2014-12-19 16:46:56 -05:00
bunnei dc5d1a9061 Merge pull request #305 from lioncash/paren
armemu: Get rid of bitwise parenthesis warnings
2014-12-19 16:46:36 -05:00
Lioncash 4b506cec01 armemu: Implement QASX and QSAX 2014-12-19 14:09:18 -05:00
Lioncash 0f3a6a161c armemu: Implement SMLSD 2014-12-19 09:53:54 -05:00
Lioncash 4a646ace1f dyncom: Implement UMAAL 2014-12-19 04:02:14 -05:00
Lioncash 00e8ec4a9e armemu: Implement USAD8 and USADA8 2014-12-18 23:38:57 -05:00
Lioncash 92c53fe522 armemu: Fix SSAT16
The lower-bound would never be negative like it should
2014-12-18 20:35:14 -05:00
Lioncash b9fc0b4b80 armemu: Clean up naming and formatting for SSAT16 2014-12-18 20:34:22 -05:00
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 eaae0ad502 armemu: Get rid of bitwise parenthesis warnings 2014-12-18 12:07:18 -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 2d91164bb9 armemu: Narrow the scope of some variables in handle_v6_insn
There's no reason to have these in the outer-most scope.
2014-12-17 10:26:20 -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
darkf a19354aced Add comment regarding __WIN32__ in SkyEye code 2014-11-28 21:50:50 -08:00
darkf 459502e48c Fix MinGW build 2014-11-28 21:38:20 -08: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
Sean Maas d06420807c Fix compilation errors 2014-11-02 18:43:52 -05:00
bunnei 0832cf7cd7 ARM: Merged additional ARMv6 instructions implemented by 3dmoo. 2014-11-02 01:04:54 -05:00
bunnei bc6989b075 ARM: Merge latest VFP fixes from 3dmoo team. 2014-11-02 01:04:41 -05:00
Yuri Kunde Schlesner c6e3c7df62 Fix VFP compilation errors with gcc 2014-10-30 22:24:03 -02:00
bunnei 19d91a45f5 Merge pull request #153 from yuriks/add-override
Add override keyword where appropriate
2014-10-27 21:23:16 -04:00
Lioncash d155586801 vfp_helper: Get rid of integer type redefinitions 2014-10-26 14:19:47 -04:00
Yuri Kunde Schlesner d72708c1f5 Add override keyword through the code.
This was automated using `clang-modernize`.
2014-10-26 16:18:05 -02:00
bunnei 818ba32746 ARM: Removed unnecessary and unused SkyEye MMU code.
Added license header back in. I originally removed this because I mostly rewrote the file, but meh
2014-10-25 14:11:41 -04:00
bunnei 3c823c0028 ARM: Removed unused armos code from SkyEye. 2014-10-25 14:11:40 -04:00
bunnei 130efd461d ARM: Updated dyncom core to use fast label lookup table on clang. 2014-10-25 14:11:40 -04:00
bunnei 53a22b84da ARM: Integrate SkyEye faster "dyncom" interpreter.
Fixed typo (make protected member public)

Added license header back in. I originally removed this because I mostly rewrote the file, but meh

ARM: Fixed a type error in dyncom interpreter.

ARM: Updated dyncom to use unique_ptr for internal ARM state.
2014-10-25 14:11:39 -04:00
bunnei b5e6524594 ARM: Reorganized file structure to move shared SkyEye code to a more common area.
Removed s_ prefix
2014-10-25 14:11:39 -04:00
bunnei 5481115e71 Merge pull request #97 from archshift/cleanup
Small, general code cleanup
2014-09-13 22:58:58 -04:00
bunnei 532a9e80a0 Merge pull request #99 from archshift/ext-check
loader.cpp: improved file extension checking, made Upper/LowerStr useful, moved string_util into Common namespace
2014-09-11 00:04:36 -04:00
archshift 6e606c515f core: Prune redundant includes 2014-09-08 17:54:14 -07:00
archshift 5472fd4d9b Added string_util to common, small changes in loader.cpp 2014-09-08 15:43:22 -07:00
archshift 1c02c03e32 Dead code removal: video_core.cpp, load_symbol_map.cpp 2014-09-07 12:09:02 -07:00
Lioncash 403c84cdab core: Make the ARM disassembler use std::string internally 2014-09-06 14:45:56 -04:00
bunnei 304999dfeb Threading: Fix thread starting to execute first instruction correctly. 2014-08-28 17:51:49 -04:00
Emmanuel Gil Peyrot ef27770a53 ARM: Remove a forgotten const in vfp. 2014-08-20 17:50:27 +00:00
bunnei 77fc029a00 ARM: Synchronize Citra's SkyEye core with 3dmoo's. 2014-07-23 19:16:40 -04:00
Lioncash 8761461003 core: Kill off type redefenitions in armdefs.h 2014-07-19 22:02:21 -04:00
bunnei 004df76795 Merge branch 'threading' of https://github.com/bunnei/citra
Conflicts:
	src/core/hle/function_wrappers.h
	src/core/hle/service/gsp.cpp
2014-06-14 12:13:16 -04:00
bunnei 6cdad8390c arm: fixed a bug where ARM_Interpreter::ExecuteInstructions was actually executing one more instruction than expected 2014-06-05 00:25:32 -04:00
bunnei 9ece9da50d arm: fixed bug in how thread context switch occurs with SkyEye 2014-06-05 00:20:11 -04:00
bunnei c330a0a1d6 arm: reverting a change made with cb0663de - this has to have been a typo! 2014-06-04 18:41:44 -04:00
bunnei e8a17ee6fd arm: added option to prepare CPU core (while mid-instruction) for thread reschedule 2014-06-01 21:40:10 -04:00
Disruption 0be75c13ee Added 'this' reference to num_instructions field so it's properly updated,as before the method was affecting the local method parameter rather than the class field 2014-06-01 21:08:26 +02:00
bunnei 55a540eb02 arm: removed unnecessary code when calling SVC from skyeye 2014-05-29 23:03:47 -04:00
bunnei 32c314c992 Merge branch 'threading' 2014-05-22 22:57:45 -04:00
bunnei 481d936d34 arm_interpreter: fixed load context to currently resume a thread 2014-05-22 18:47:42 -04:00
bunnei a721a4eb33 arm: removed include of windows.h from armdefs.h to arminit.c (only module that uses it) 2014-05-20 22:26:40 -04:00
bunnei 22eb9a8981 armemu: missed rename of "Syscall" to "SVC" 2014-05-20 22:25:40 -04:00
bunnei 0012802456 ARM_Interpreter/ARM_Interface: Fixed member variable naming to be consistent with style guide 2014-05-20 18:52:54 -04:00
bunnei 49dc2ce8ac ARM_Interface: added SaveContext and LoadContext functions for HLE thread switching 2014-05-20 18:50:16 -04:00
bunnei 29930ac110 VFP: disable DBG messages because they spam the console with unimportant skyeye junk 2014-05-19 22:19:10 -04:00
bunnei 204c6bfeca Merge pull request #2 from archshift/issue-7-fix
Fixes issues with building Citra on OSX
2014-05-19 21:46:57 -04:00
archshift c396a5ac57 Fixed vfp issues 2014-05-17 10:55:45 -07:00
bunnei fbc04ad0c7 ignore thumbemu 0xDEADCODE debugging catch on MCR 2014-05-17 13:48:27 -04:00
bunnei 3fac6dc39e Merge branch 'master' into threading 2014-05-17 13:35:20 -04:00
bunnei 265c770a9d updated how we call ARM core to make things much faster 2014-05-17 11:59:18 -04:00
bunnei 0b1ba2f37a Merge master into threading to add support for VFP 2014-05-16 22:24:34 -04:00
bunnei 92be5517c4 same fix as last commit - just for vfpsingle.cpp 2014-05-16 21:25:33 -04:00
bunnei 1dc08765a8 another VFP fix for GCC 2014-05-16 21:18:01 -04:00
bunnei 509f63486a fixed VFP DBG log for GCC 2014-05-16 21:10:30 -04:00
bunnei 145a91f21f - reenabled MCR and MRC functions now that VFP is attached
- removed HLE::CallMCR function (was pointless)
2014-05-16 20:52:46 -04:00
bunnei a2804bf701 - removed unused stubbed out code
- fixed some compiler issues with xscale_copro when porting code to Windows
- fixed some #include's
2014-05-16 20:04:13 -04:00
bunnei f872807de2 added maverick.cpp to ARM core from skyeye 2014-05-16 00:52:42 -04:00
bunnei f3c9875acb fixed includes 2014-05-16 00:52:13 -04:00
bunnei f5400080bd enabled CP_ACCESS_ALLOWED 2014-05-16 00:51:59 -04:00
bunnei 68408ed9b9 fixed include path 2014-05-16 00:51:45 -04:00
bunnei 7cd7d17954 removed undefined function ARMul_ConsolePrint 2014-05-16 00:51:36 -04:00
bunnei ad49d481a8 added missing armcopro from skyeye 2014-05-16 00:23:36 -04:00
bunnei 9a642caee7 added missing skyeye mmu code 2014-05-15 23:39:06 -04:00
bunnei 56846a4200 fixed armmmu imports 2014-05-15 22:58:21 -04:00
bunnei 3e1eafa244 - moved mmu to arm/interpreter folder
- added initial VFP code from skyeye
2014-05-15 22:54:17 -04:00
bunnei ce4d271a53 added option to set CPSR register to arm_interface 2014-05-11 22:14:13 -04:00
bunnei d1472b816f - disable strict alignment on LDRD/STRD
- handle RD in STREX/STREXB
2014-05-06 21:34:00 -04:00
bunnei e3ee3e441b commented out useless debug logs that just spammed console 2014-05-06 17:17:00 -04:00
bunnei f7c6302009 - added CallMCR function to coprocessor HLE module
- moved instruction decoding to coprocessor HLE module
2014-05-01 23:03:50 -04:00
bunnei f043424915 renamed hle "mrc" module to "coprocessor" 2014-05-01 19:20:44 -04:00
bunnei 29da6e9ab5 added a module to load symbol map files for debugging 2014-04-30 23:46:06 -04:00
bunnei a48c6b947d removed DISALLOW_COPY_AND_ASSIGN in favor of NonCopyable class 2014-04-27 18:29:51 -04:00
bunnei f76a60be05 removed commented out line - this was for an unimplemented MRC call, no longer need to leave this here 2014-04-27 18:22:30 -04:00
bunnei cb0663de51 moved HLE::MRC to its own module, added support for catching data synchronization barrier command 2014-04-25 17:15:19 -04:00
bunnei 6151e26958 added disassembly to unimplemented instruction 2014-04-25 15:57:32 -04:00
bunnei 7a136b8a84 fixes to build on linux 2014-04-22 19:42:29 -07:00
bunnei 68e198476f - added HLE to connect to "srv:" service
- added a manager for keeping track of services/ports
- added a memory mapped region for memory accessed by HLE
- added HLE for GetThreadCommandBuffer function
2014-04-12 21:55:36 -04:00
bunnei 4d88318903 hacked CPU interpreter to ignore branch on SVC instruction (as we are HLEing this...) 2014-04-12 01:36:39 -04:00
bunnei cd7de52fea added a SETABORT method that does not update LR (for HLE'd SVC that does not jump appcore CPU to an IRQ vector) 2014-04-12 01:35:45 -04:00
bunnei 2bde8f2856 base code to call a syscall from ARM11 appcore 2014-04-10 23:26:12 -04:00
bunnei fccbfc208c missed this file with commit 95e5436f 2014-04-10 19:57:56 -04:00
bunnei 95e5436f41 cleaned up arm_interface, added a setter to set registers for use with HLE return values 2014-04-10 19:55:59 -04:00
bunnei d0674cc98b fixed licensing and updated code style naming for arm_interface/arm_interpreter frontend module 2014-04-08 20:38:33 -04:00
bunnei de0a034a84 fixed project includes to use new directory structure 2014-04-08 20:15:08 -04:00
bunnei 63e46abdb8 got rid of 'src' folders in each sub-project 2014-04-08 19:25:03 -04:00