summaryrefslogtreecommitdiffstats
path: root/src/core/arm/dyncom/arm_dyncom_interpreter.cpp (follow)
Commit message (Collapse)AuthorAgeFilesLines
* Merge pull request #1008 from lioncash/pcbunnei2015-07-301-1/+6
|\ | | | | dyncom: Handle the case where PC is the source register for STR/VSTM/VLDM
| * dyncom: Handle the case where PC is the source register for STR/VSTM/VLDMLioncash2015-07-291-1/+6
| |
* | dyncom: Remove an unused variableLioncash2015-07-291-3/+0
|/ | | | This was used prior to InterpreterTranslate existing.
* dyncom: Handle left-operand PC correctly for data-processing opsLioncash2015-07-291-7/+33
| | | | | | This is considered deprecated in the ARM manual (using PC as an operand), however, this is still able to be executed on the MPCore (which I'm quite sure would be rare to begin with).
* dyncom: Use enum class for instruction decoding resultsLioncash2015-07-281-10/+9
|
* dyncom: Remove code duplication regarding thumb instructionsLioncash2015-07-281-9/+3
|
* dyncom: Migrate exclusive memory access control into armstateLioncash2015-07-281-47/+13
|
* dyncom: Remove duplicated typedef and externLioncash2015-07-281-4/+0
| | | | These are already present in arm_dyncom_dec.h.
* dyncom: Use ARMul_State as an objectLioncash2015-07-261-183/+182
| | | | Gets rid of C-like parameter passing.
* dyncom: Rename armdefs.h to armstate.hLioncash2015-07-261-1/+1
|
* dyncom: Get rid of skyeye typedefsLioncash2015-07-261-5/+4
|
* dyncom: Move helper functions to their own headerLioncash2015-07-261-0/+1
|
* dyncom: Pass SVC immediates directly.Lioncash2015-07-211-1/+2
| | | | Previously it would just re-read the already decoded instruction and extract the immediate value.
* dyncom: Properly retrieve the PC value in BX if used.Lioncash2015-07-201-3/+5
|
* arm_dyncom_interpreter: Simplify assignment in SMLAWLioncash2015-07-171-1/+1
| | | | Also a side-benefit of not having implementation-defined behavior.
* Remove every trailing whitespace from the project (but externals).Emmanuel Gil Peyrot2015-05-291-16/+16
|
* arm_dyncom_interpreter: Remove unused variableLioncash2015-05-261-5/+1
| | | | Thum decoding directly checks if the thumb bit is set instead of using a temporary.
* arm_dyncom_interpreter: Remove unused macroLioncash2015-05-251-1/+0
|
* dyncom: Remove unused cpu parameter from decode_thumb_instrLioncash2015-05-231-3/+2
|
* dyncom: remove load_r15 from arm_instLioncash2015-05-231-362/+235
| | | | It's entirely unused. Also allows getting rid of more clunky macros.
* dyncom: Remove unnecessary parameter for load/store operationsLioncash2015-05-231-39/+39
|
* dyncom: Eliminate clang warningsLioncash2015-05-211-1/+1
| | | | Gets rid of a whole load of missing brace initialization warnings.
* Merge pull request #774 from lioncash/decodingsYuri Kunde Schlesner2015-05-151-28/+168
|\ | | | | dyncom: Add ARMv6K NOP and hint instructions to the interpreter.
| * dyncom: Add ARMv6K NOP and hint instructions to the decoding tableLioncash2015-05-141-12/+142
| |
| * dyncom: Handle some MSR variants individuallyLioncash2015-05-141-23/+32
| | | | | | | | This is necessary, as hint instructions will be recognized as MSR, which is pretty bad.
| * dyncom: Move exclusive load/stores above bbl and swi in the decoding tableLioncash2015-05-141-10/+11
| |
* | Merge pull request #770 from lioncash/dyncom_cleanbunnei2015-05-151-211/+196
|\ \ | | | | | | dyncom: Minor cleanup.
| * | dyncom: Remove duplicate enums/prototypesLioncash2015-05-141-7/+1
| | | | | | | | | | | | These are already defined in arm_dyncom_interpreter_dec.cpp.
| * | dyncom: Remove unnecessary definesLioncash2015-05-141-4/+4
| | | | | | | | | | | | These can simply be const vars.
| * | dyncom: Make translation-unit functions and variables staticLioncash2015-05-141-66/+64
| | |
| * | dyncom: Remove unnecessary typedefsLioncash2015-05-141-132/+133
| | |
| * | dyncom: Remove unused structsLioncash2015-05-141-8/+0
| |/
* / Memmap: Re-organize memory function in two filesYuri Kunde Schlesner2015-05-151-1/+1
|/ | | | | | | memory.cpp/h contains definitions related to acessing memory and configuring the address space mem_map.cpp/h contains higher-level definitions related to configuring the address space accoording to the kernel and allocating memory.
* dyncom: Fix decoding of BKPT's immediateLioncash2015-05-131-1/+1
| | | | A shift here is intended since the representation is imm12:imm4
* dyncom: Stub MCRR and MRRCLioncash2015-05-121-7/+68
| | | | | There's no other coprocessor outside the VFP (which has its own VMOV variants) in which the MPCore can send/retrieve data from. Stubbed so citra won't crash and burn on the odd chance someone actually tries to use these.
* dyncom: Remove an unnecessary variable in the interpreterLioncash2015-05-081-19/+17
| | | | All this was doing was needlessly aliasing a variable.
* HLE: Clean up SVC dispatch mechanismYuri Kunde Schlesner2015-05-061-2/+2
|
* Dyncom: Move cream cache to ARMul_State.bunnei2015-05-021-22/+9
|
* dyncom: Remove unnecessary enum and typedefLioncash2015-04-071-4/+4
| | | | Also fixes descriptions in the process.
* Merge pull request #685 from lioncash/cpregsbunnei2015-04-061-1/+0
|\ | | | | dyncom: Set the MPCore CP15 register reset values on initialization.
| * Move CP15 enum definitions into their own enum.Lioncash2015-04-061-1/+0
| | | | | | | | Also gets rid of preprocessor mumbo-jumbo
* | dyncom: Suppress uninitialized variable warningsLioncash2015-04-061-4/+4
|/ | | | The switch cases will always be hit, but this makes compilers stop complaining.
* dyncom: Move CP15 register writing into its own function.Lioncash2015-04-021-88/+2
| | | | Also implements writing to the rest of the ARM11 MPCore CP15 register set.
* dyncom: Move CP15 register reading into its own function.Lioncash2015-04-021-44/+3
| | | | Keeps everything contained. Added all supported readable registers in an ARM11 MPCore.
* dyncom: Migrate InAPrivilegedMode to armsuppLioncash2015-03-261-4/+0
| | | | It's a generic helper function, so it should be here anyway.
* dyncom: Implement SRSLioncash2015-03-241-1/+32
|
* dyncom: Implement RFELioncash2015-03-241-1/+30
|
* dyncom: Make Load/Store instructions support big endianLioncash2015-03-171-52/+62
|
* dyncom: Implement SETENDLioncash2015-03-151-1/+35
|
* dyncom: Minor cleanupLioncash2015-03-101-26/+7
| | | | Assemblers will exit with an error when trying to assemble instructions with disallowed registers.
* dyncom: Fix an indexing bug in STMLioncash2015-03-091-5/+4
| | | | Previously it would write the contents of register 13 for the case where the link register (r14) is supposed to be written.
* dyncom: General cleanup of STMLioncash2015-03-091-16/+14
|
* dyncom: Increment addr when accessing LR in LDMLioncash2015-03-091-0/+2
|
* Add profiling infrastructure and widgetYuri Kunde Schlesner2015-03-021-0/+8
|
* arm: The CP15 Main ID register is not writeableLioncash2015-02-261-3/+1
|
* Cleaned up unaligned access.Kevin Hartman2015-02-221-17/+2
|
* dyncom: Support conditional BKPT instructionsLioncash2015-02-171-1/+27
|
* dyncom: Actually set the destination register for USAD8/USADA8.Lioncash2015-02-161-0/+1
| | | | Idiotville: Population: 1 - Inhabitant name: Lioncash
* core: Apply static to local functionsLioncash2015-02-131-189/+190
|
* arm: General cleanupLioncash2015-02-131-74/+48
| | | | | | | - Remove several typedefs for ARMul_State. - Remove unused functions - Remove unused/unnecessary headers - Removed unused enums, etc.
* dyncom: Remove warning for SXTAHLioncash2015-02-131-1/+0
| | | | This is tested to work correctly.
* dyncom: Add more regs to MCR/MRCLioncash2015-02-101-17/+32
| | | | Adds the registers that were left out of some coprocessor ranges.
* dyncom: Remove more unnecessary codeLioncash2015-02-031-45/+3
|
* core: Fix some warnings on OSXLioncash2015-02-031-2/+4
|
* arm: Adios armemuLioncash2015-02-011-4/+0
|
* dyncom: Minor cleanupLioncash2015-01-271-126/+137
| | | | Narrow scopes for the instruction variables. Remove unnecessary parentheses.
* dyncom: Minor cleanupLioncash2015-01-221-282/+270
| | | | Removes some unused macros and cleans up indentation inconsistencies
* dyncom: Clarify precedence for ternary statementsLioncash2015-01-201-1/+1
|
* dyncom: Implement missing shifts in ScaledRegisterPostIndexed, etcLioncash2015-01-191-7/+33
|
* dyncom: Handle the ARM A2 encoding of STRT/LDRTLioncash2015-01-171-10/+24
| | | | These were also missing the shifted register case.
* dyncom: Handle the ARM A2 encoding of LDRBT/STRBT.Lioncash2015-01-171-17/+15
|
* dyncom: Fix 32-bit ASR shifts for immediatesLioncash2015-01-121-5/+3
|
* dyncom: Remove unused flag macrosLioncash2015-01-121-15/+3
|
* dyncom: Get rid of unnecessary outer-scope variables in InterpreterMainLoopLioncash2015-01-121-97/+108
|
* dyncom: Fix overflow flag setting for ADD/RSB/RSC/SUB/SBCLioncash2015-01-121-38/+41
| | | | Also cleans up CMN, and CMP.
* dyncom: Add a helper function for addition with a carryLioncash2015-01-121-12/+9
|
* dyncom: Fix ADC overflow flag settingLioncash2015-01-121-8/+12
|
* dyncom: Fix conditional execution of MSRLioncash2015-01-121-29/+31
|
* dyncom: Fix UMAALLioncash2015-01-081-4/+4
| | | | These need to be done as a 64-bit operation.
* dyncom: Fix SMULWB/SMULWTLioncash2015-01-071-10/+7
| | | | Wasn't doing proper sign-extension
* Merge pull request #438 from lioncash/swpbunnei2015-01-071-0/+1
|\ | | | | dyncom: Fix SWPB
| * dyncom: Fix SWPBLioncash2015-01-071-0/+1
| |
* | dyncom: Move over SMLALXYLioncash2015-01-071-1/+56
|/
* Merge pull request #417 from kevinhartman/exclusive-tag-fixbunnei2015-01-061-5/+7
|\ | | | | Added exclusive reservation granule from ARMv7 spec to dyncom...
| * Added exclusive reservation granule from ARMv7 spec to dyncom to protect LDR/STREX.Kevin Hartman2015-01-061-5/+7
| |
* | dyncom: Partially emulate BXJLioncash2015-01-051-8/+25
| | | | | | | | Just in case some game studio let the intern write inline assembly or something.
* | dyncom: Actually set the Q flag for SMLABB/SMLABT/SMLATB/SMLATTLioncash2015-01-051-1/+2
| | | | | | | | Easy skyeye todo fix.
* | Merge pull request #418 from lioncash/qdbunnei2015-01-051-8/+103
|\ \ | | | | | | dyncom: Implement QADD/QSUB/QDADD/QDSUB
| * | dyncom: Implement QADD/QSUB/QDADD/QDSUBLioncash2015-01-051-8/+103
| | |
* | | skyeye: Remove duplicate typedefsLioncash2015-01-041-4/+4
|/ / | | | | | | citra already has its own typedefs like this.
* / dyncom: Implement SMLAWLioncash2015-01-031-1/+43
|/
* Merge pull request #395 from lioncash/revbunnei2015-01-031-45/+45
|\ | | | | dyncom: Implement REVSH
| * dyncom: Implement REVSHLioncash2015-01-031-45/+45
| | | | | | | | Also joins the REV ops into one common place.
* | dyncom: Implement SMLALD/SMLSLDLioncash2015-01-031-3/+72
|/
* Merge pull request #392 from lioncash/smbunnei2015-01-031-3/+64
|\ | | | | dyncom: Implement SMMLA/SMMUL/SMMLS
| * dyncom: Implement SMMLA/SMMUL/SMMLSLioncash2015-01-031-3/+64
| |
* | dyncom: Implemented LDREXD/STREXD/LDREXH/STREXHbunnei2015-01-031-100/+182
|/
* Merge pull request #390 from lioncash/wutbunnei2015-01-031-27/+0
|\ | | | | dyncom: Remove dead function InterpreterInitInstLength
| * dyncom: Remove dead function InterpreterInitInstLengthLioncash2015-01-031-27/+0
| | | | | | | | Technically eliminates two memory leaks as well.
* | dyncom: Implement SMLAD/SMUAD/SMLSD/SMUSDLioncash2015-01-031-44/+73
|/
* dyncom: Implement SXTAB16 and SXTB16Lioncash2015-01-021-3/+58
|
* Merge pull request #379 from lioncash/shbunnei2015-01-021-8/+110
|\ | | | | dyncom: Implement SHADD8/SHADD16/SHSUB8/SHSUB16/SHASX/SHSAX
| * dyncom: Implement SHADD8/SHADD16/SHSUB8/SHSUB16/SHASX/SHSAXLioncash2015-01-011-8/+110
| |
* | dyncom: Implement SADD8/SSUB8Lioncash2015-01-011-55/+108
|/
* Merge pull request #375 from lioncash/uopsbunnei2014-12-311-9/+208
|\ | | | | dyncom: Implement UADD8/UADD16/USUB8/USUB16/UASX/USAX
| * dyncom: Implement UADD8/UADD16/USUB8/USUB16/UASX/USAXLioncash2014-12-311-9/+208
| |
* | dyncom: Massive refactorbunnei2014-12-311-514/+191
| |
* | Merge pull request #369 from darkf/mingw_bunnei2014-12-311-0/+8
|\ \ | |/ |/| Fix MinGW build (2)
| * Fix merge conflictsdarkf2014-12-301-5604/+5460
| |\
| * | Add comment regarding __WIN32__ in SkyEye codedarkf2014-11-291-0/+4
| | |
| * | Fix MinGW builddarkf2014-11-291-0/+4
| | |
* | | dyncom: Implement USAT16/SSAT16Lioncash2014-12-301-2/+61
| |/ |/|
* | dyncom: Implement USAT/SSATbunnei2014-12-301-2/+94
| |
* | dyncom: Various cleanups to match coding style, no functional changes.bunnei2014-12-301-6066/+5168
| |
* | Merge pull request #361 from lioncash/moreqopsbunnei2014-12-291-32/+42
|\ \ | | | | | | dyncom/armemu: Implement QADD8/QSUB8.
| * | dyncom: Implement QADD8/QSUB8Lioncash2014-12-291-32/+42
| | |
* | | dyncom: Fix SMLALXY's instruction labelsLioncash2014-12-291-2/+2
|/ / | | | | | | They were erroneously labeled as SMLAL.
* | dyncom: Implement UXTB16/UXTAB16Lioncash2014-12-291-2/+55
| |
* | vfp: Actually make the code somewhat readableLioncash2014-12-291-8/+41
| |
* | dyncom: Implement PKHBT and PKHTB.bunnei2014-12-281-2/+57
| |
* | dyncom: Implement USAD8/USADA8Lioncash2014-12-281-2/+52
| |
* | dyncom: Implement UQADD8, UQADD16, UQSUB8, UQSUB16, UQASX, and UQSAX.Lioncash2014-12-271-8/+97
| |
* | dyncom: Implement UHADD8, UHADD16, UHSUB8, UHSUB16, UHASX, and UHSAXLioncash2014-12-271-11/+123
| |
* | dyncom: Move over QADD16/QASX/QSAX/QSUB16Lioncash2014-12-221-7/+87
| |
* | Merge pull request #322 from chinhodado/masterbunnei2014-12-221-6/+6
|\ \ | | | | | | More warning cleanups
| * | More warning cleanupsChin2014-12-211-6/+6
| | |
* | | dyncom: Move SEL overLioncash2014-12-221-1/+58
| | |
* | | dyncom: Move over SASX/SSAX/SADD16/SSUB16Lioncash2014-12-221-7/+102
|/ /
* | dyncom: Implement UMAALLioncash2014-12-191-1/+47
| |
* | Convert old logging calls to new logging macrosYuri Kunde Schlesner2014-12-131-99/+101
| |
* | Merge pull request #235 from yuriks/dyncom-mapbunnei2014-11-301-33/+15
|\ \ | | | | | | dyncom: Use unordered_map rather than the terrible 2-level bb_map
| * | dyncom: Use unordered_map rather than the terrible 2-level bb_mapYuri Kunde Schlesner2014-11-291-33/+15
| |/ | | | | | | | | | | Seems (probably just placebo/wishful thinking) to make it slightly faster. Also reduces memory usage and makes shutdown when debugging from MSVC fast.
* / arm_dyncom_interpreter: Get rid of unused var warningsLioncash2014-11-291-4/+2
|/
* ARM: Removed unnecessary goto with each instruction.bunnei2014-11-121-43/+39
|
* ARM: Fixed several dyncom bugs.bunnei2014-11-121-14/+19
| | | | | | | - 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.
* ARM: Updated dyncom core to use fast label lookup table on clang.bunnei2014-10-251-3/+7
|
* ARM: Integrate SkyEye faster "dyncom" interpreter.bunnei2014-10-251-0/+6559
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.