summaryrefslogtreecommitdiff
path: root/src/arch/arm/insts/macromem.cc
AgeCommit message (Collapse)Author
2013-04-17arm: set ldr_ret_uop as conditional or unconditional controlNathanael Premillieu
This patch adds a missing flag to the ldr_ret_uop microop instruction. The flag is added when the instruction is used, not directly in the constructor of the instruction. Committed by: Nilay Vaish <nilay@cs.wisc.edu>"
2012-12-12arm: set movret_uop as conditional or unconditional controlNathanael Premillieu
A flag was missing for the movret_uop microop instruction. This patch adds that flag when the instruction is used, not directly in the constructor of the instruction. Committed by: Nilay Vaish <nilay@cs.wisc.edu>
2012-09-25ARM: Predict target of more instructions that modify PC.Ali Saidi
2012-04-23ISA: Put parser generated files in a "generated" directory.Gabe Black
This is to avoid collision with non-generated files.
2011-09-09StaticInst: Merge StaticInst and StaticInstBase.Gabe Black
Having two StaticInst classes, one nominally ISA dependent and the other ISA dependent, has not been historically useful and makes the StaticInst class more complicated that it needs to be. This change merges StaticInstBase into StaticInst.
2011-04-15includes: sort all includesNathan Binkert
2011-04-04ARM: Remove debugging warn that was accidently left in.Ali Saidi
2011-03-17ARM: Fix subtle bug in LDM.Ali Saidi
If the instruction faults mid-op the base register shouldn't be written back.
2011-03-17ARM: Fix RFE macrop.Matt Horsnell
This changes the RFE macroop into 3 microops: URa = [sp]; URb = [sp+4]; // load CPSR,PC values from stack sp = sp + offset; // optionally auto-increment PC = URa; CPSR = URb; // write to the PC and CPSR. Importantly: - writing to PC is handled in the last micro-op. - loading occurs prior to state changes.
2011-01-18ARM: The ARM decoder should not panic when decoding undefined holes is arch.Matt Horsnell
This can abort simulations when the fetch unit runs ahead and speculatively decodes instructions that are off the execution path.
2010-08-25ARM: Use fewer micro-ops for register update loads if possible.Gene WU
Allow some loads that update the base register to use just two micro-ops. three micro-ops are only used if the destination register matches the offset register or the PC is the destination regsiter. If the PC is updated it needs to be the last micro-op otherwise O3 will mispredict.
2010-08-25ARM: Implement all ARM SIMD instructions.Gabe Black
2010-08-23ARM: Improve printing of uop disassembly.Min Kyu Jeong
2010-06-02ARM: Fix double precision load/store multiple decrement.Gabe Black
When decrementing, the higher addressed half of a double word is at a 4 byte smaller displacement.
2010-06-02ARM: Make sure macroops aren't interrupted midinstruction.Gabe Black
Do this by setting the delayed commit flag for all but the last microop.
2010-06-02ARM: Fix the implementation of the VFP ldm and stm macroops.Gabe Black
There were four bugs in these instructions. First, the loaded value was being stored into a floating point register as floating point, changing the value as it was transfered. Second, the meaning of the "up" bit had been reversed. Third, the statically sized microop array wasn't bit enough for all possible inputs. It's now dynamically sized and should always be big enough. Fourth, the offset was stored as an unsigned 8 bit value. Negative offsets would look like moderately large positive offsets.
2010-06-02ARM: Allow flattening into any mode.Gabe Black
2010-06-02ARM: Make sure ldm exception return writes back its base in the right mode.Gabe Black
This change moves the writeback of load multiple instructions to the beginning of the macroop. That way, the MicroLdrRetUop that changes the mode will necessarily happen later, ensuring the writeback happens in the original mode. The actual value in the base register if it also shows up in the register list is undefined, so it's fine if it gets clobbered by one of the loads. For stores where the base register is the lowest numbered in the register list, the original value should be written back. That means stores can't write back at the beginning, but the mode changing problem doesn't affect them so they can continue to write back at the end.
2010-06-02ARM: Add base classes for VFP load/store multiple.Gabe Black
2010-06-02ARM: Move the macro mem constructor out of the isa desc.Gabe Black
This code doesn't use the parser at all, and moving it out reduces the conceptual complexity of that code.