Ali Saidi [Wed, 2 Jun 2010 17:58:16 +0000 (12:58 -0500)]
DMA: Make DmaPort generic enough to be used other places
Ali Saidi [Wed, 2 Jun 2010 17:58:16 +0000 (12:58 -0500)]
ARM: SE needs a definition for PageTable::serialize/unserialize
Ali Saidi [Wed, 2 Jun 2010 17:58:16 +0000 (12:58 -0500)]
ARM: Add BKPT instruction
--HG--
rename : src/arch/arm/isa/formats/unknown.isa => src/arch/arm/isa/formats/breakpoint.isa
Ali Saidi [Wed, 2 Jun 2010 17:58:16 +0000 (12:58 -0500)]
ARM: Implement ARM CPU interrupts
Ali Saidi [Wed, 2 Jun 2010 17:58:16 +0000 (12:58 -0500)]
ARM: Start over with translation from Alpha code as opposed to something that has cruft from 4 different ISAs.
Gabe Black [Wed, 2 Jun 2010 17:58:16 +0000 (12:58 -0500)]
ARM: Implement conversion to/from half precision.
Gabe Black [Wed, 2 Jun 2010 17:58:16 +0000 (12:58 -0500)]
ARM: Clean up VFP
Gabe Black [Wed, 2 Jun 2010 17:58:16 +0000 (12:58 -0500)]
ARM: Clean up the implementation of the VFP instructions.
Gabe Black [Wed, 2 Jun 2010 17:58:15 +0000 (12:58 -0500)]
ARM: Fix double precision load/store multiple decrement.
When decrementing, the higher addressed half of a double word is at a 4 byte
smaller displacement.
Gabe Black [Wed, 2 Jun 2010 17:58:15 +0000 (12:58 -0500)]
ARM: Even though writes to MVFR0/1 should be unpredictable, we need to make them to do nothing.
Gabe Black [Wed, 2 Jun 2010 17:58:15 +0000 (12:58 -0500)]
ARM: Make various bits of the FP control registers read only.
Gabe Black [Wed, 2 Jun 2010 17:58:15 +0000 (12:58 -0500)]
ARM: Implement the version of VMRS that writes to the APSR.
Gabe Black [Wed, 2 Jun 2010 17:58:15 +0000 (12:58 -0500)]
ARM: Ignore reads and writes to DCIMVAC.
Gabe Black [Wed, 2 Jun 2010 17:58:15 +0000 (12:58 -0500)]
ARM: Make MPIDR return 0 and ignore writes.
Gabe Black [Wed, 2 Jun 2010 17:58:15 +0000 (12:58 -0500)]
ARM: Implement the VCMPE instruction.
Gabe Black [Wed, 2 Jun 2010 17:58:15 +0000 (12:58 -0500)]
ARM: Fix vcvtr so that it uses the rounding mode in the FPSCR.
Gabe Black [Wed, 2 Jun 2010 17:58:15 +0000 (12:58 -0500)]
ARM: Fix saturation of VCVT from fp to integer.
Gabe Black [Wed, 2 Jun 2010 17:58:15 +0000 (12:58 -0500)]
ARM: Compensate for ARM's underflow coming from -before- rounding, but x86's after.
Gabe Black [Wed, 2 Jun 2010 17:58:15 +0000 (12:58 -0500)]
ARM: Implement flush to zero for destinations as well.
Gabe Black [Wed, 2 Jun 2010 17:58:15 +0000 (12:58 -0500)]
ARM: Fix up nans to match ARM's expected behavior.
Gabe Black [Wed, 2 Jun 2010 17:58:15 +0000 (12:58 -0500)]
ARM: Set the value of the MVFR0 and MVFR1 registers.
Gabe Black [Wed, 2 Jun 2010 17:58:15 +0000 (12:58 -0500)]
ARM: Implement flush to zero mode for VFP, and clean up some corner cases.
Gabe Black [Wed, 2 Jun 2010 17:58:15 +0000 (12:58 -0500)]
ARM: Add barriers that make sure FP operations happen where they're supposed to.
Gabe Black [Wed, 2 Jun 2010 17:58:15 +0000 (12:58 -0500)]
ARM: Implement the version of VCVT float to int that rounds towards zero.
Gabe Black [Wed, 2 Jun 2010 17:58:15 +0000 (12:58 -0500)]
ARM: Implement the floating/fixed point VCVT instructions.
Gabe Black [Wed, 2 Jun 2010 17:58:14 +0000 (12:58 -0500)]
ARM: Add code to extract and record VFP exceptions.
Gabe Black [Wed, 2 Jun 2010 17:58:14 +0000 (12:58 -0500)]
ARM: Implement the VFP version of VCMP.
Gabe Black [Wed, 2 Jun 2010 17:58:14 +0000 (12:58 -0500)]
ARM: Add support for VFP vector mode.
Gabe Black [Wed, 2 Jun 2010 17:58:14 +0000 (12:58 -0500)]
ARM: Introduce new VFP base classes that are optionally microops.
Gabe Black [Wed, 2 Jun 2010 17:58:14 +0000 (12:58 -0500)]
ARM: Implement VCVT between double and single width FP.
Gabe Black [Wed, 2 Jun 2010 17:58:14 +0000 (12:58 -0500)]
ARM: Implement vcvt between int and fp. Ignore rounding.
Gabe Black [Wed, 2 Jun 2010 17:58:14 +0000 (12:58 -0500)]
ARM: Consolidate the VFP register index computation code.
Gabe Black [Wed, 2 Jun 2010 17:58:14 +0000 (12:58 -0500)]
ARM: Implement the VFP negated multiplies.
Gabe Black [Wed, 2 Jun 2010 17:58:14 +0000 (12:58 -0500)]
ARM: Implement the VFP versions of VMLA and VMLS.
Gabe Black [Wed, 2 Jun 2010 17:58:14 +0000 (12:58 -0500)]
ARM: Implement the VFP version of vdiv and vsqrt.
Gabe Black [Wed, 2 Jun 2010 17:58:14 +0000 (12:58 -0500)]
ARM: Implement the VFP version of vsub.
Gabe Black [Wed, 2 Jun 2010 17:58:14 +0000 (12:58 -0500)]
ARM: Implement the VFP version of vadd.
Gabe Black [Wed, 2 Jun 2010 17:58:14 +0000 (12:58 -0500)]
ARM: Implement the VFP version of vabs.
Gabe Black [Wed, 2 Jun 2010 17:58:14 +0000 (12:58 -0500)]
ARM: Implement the VFP version of vneg.
Gabe Black [Wed, 2 Jun 2010 17:58:14 +0000 (12:58 -0500)]
ARM: Implement the VFP version of vmul.
Gabe Black [Wed, 2 Jun 2010 17:58:14 +0000 (12:58 -0500)]
ARM: Move the VFP data operation decode into a function.
Gabe Black [Wed, 2 Jun 2010 17:58:14 +0000 (12:58 -0500)]
ARM: Implement and update the DFSR and IFSR registers on faults.
Gabe Black [Wed, 2 Jun 2010 17:58:13 +0000 (12:58 -0500)]
ARM: Make integer division by zero return a fault.
Gabe Black [Wed, 2 Jun 2010 17:58:13 +0000 (12:58 -0500)]
ARM: Add in some missing SCTLR fields.
Gabe Black [Wed, 2 Jun 2010 17:58:13 +0000 (12:58 -0500)]
ARM: Decode ARM unconditional MRC and MCR instructions.
Gabe Black [Wed, 2 Jun 2010 17:58:13 +0000 (12:58 -0500)]
ARM: Move the CP15 decode block into a function.
Gabe Black [Wed, 2 Jun 2010 17:58:13 +0000 (12:58 -0500)]
ARM: Decode the unconditional version of ARM fp instructions.
Gabe Black [Wed, 2 Jun 2010 17:58:13 +0000 (12:58 -0500)]
ARM: Move the FP decode blocks into functions.
Gabe Black [Wed, 2 Jun 2010 17:58:13 +0000 (12:58 -0500)]
ARM: Warn/ignore when TLB maintenance operations are performed.
Gabe Black [Wed, 2 Jun 2010 17:58:13 +0000 (12:58 -0500)]
ARM: Handle accesses to TLBTR.
Gabe Black [Wed, 2 Jun 2010 17:58:13 +0000 (12:58 -0500)]
ARM: Handle accesses to the DACR.
Gabe Black [Wed, 2 Jun 2010 17:58:13 +0000 (12:58 -0500)]
ARM: Handle accesses to TTBR0 and TTBR1.
Gabe Black [Wed, 2 Jun 2010 17:58:13 +0000 (12:58 -0500)]
ARM: Convert the CP15 registers from MPU to MMU.
Ali Saidi [Wed, 2 Jun 2010 17:58:13 +0000 (12:58 -0500)]
ARM: Add some support for wfi/wfe/yield/etc
Ali Saidi [Wed, 2 Jun 2010 17:58:13 +0000 (12:58 -0500)]
ARM: Move PC mode bits around so they can be used for exectrace
Ali Saidi [Wed, 2 Jun 2010 17:58:13 +0000 (12:58 -0500)]
ARM: Add a traceflag to print cpsr
Ali Saidi [Wed, 2 Jun 2010 17:58:13 +0000 (12:58 -0500)]
ARM: Undef instruction on invalid user CP15 access
Gabe Black [Wed, 2 Jun 2010 17:58:12 +0000 (12:58 -0500)]
ARM: Decode the VSTR instruction.
Gabe Black [Wed, 2 Jun 2010 17:58:12 +0000 (12:58 -0500)]
ARM: Implement the vstr instruction.
Ali Saidi [Wed, 2 Jun 2010 17:58:12 +0000 (12:58 -0500)]
ARM: BXJ should be BX when there is no J support
Gabe Black [Wed, 2 Jun 2010 17:58:12 +0000 (12:58 -0500)]
ARM: Make sure macroops aren't interrupted midinstruction.
Do this by setting the delayed commit flag for all but the last microop.
Gabe Black [Wed, 2 Jun 2010 17:58:12 +0000 (12:58 -0500)]
ARM: Fix the implementation of the VFP ldm and stm macroops.
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.
Gabe Black [Wed, 2 Jun 2010 17:58:12 +0000 (12:58 -0500)]
Simple CPU: Make the FloatRegs trace flag do something.
Gabe Black [Wed, 2 Jun 2010 17:58:12 +0000 (12:58 -0500)]
ARM: Fix up thumb decoding of coproc instructions.
Gabe Black [Wed, 2 Jun 2010 17:58:12 +0000 (12:58 -0500)]
ARM: Clean up some redundancy and fault behavior for unimplemented thumb MCR, MRC.
Ali Saidi [Wed, 2 Jun 2010 17:58:12 +0000 (12:58 -0500)]
CPU: Reset fetch offset after a exception
Gabe Black [Wed, 2 Jun 2010 17:58:12 +0000 (12:58 -0500)]
ARM: Decode the VLDR instruction.
Gabe Black [Wed, 2 Jun 2010 17:58:12 +0000 (12:58 -0500)]
ARM: Implement the VLDR instruction.
Gabe Black [Wed, 2 Jun 2010 17:58:12 +0000 (12:58 -0500)]
ARM: Decode all the various forms of vmov.
Gabe Black [Wed, 2 Jun 2010 17:58:12 +0000 (12:58 -0500)]
ARM: Make VFP load/store and 64 bit move decode correspond with CP10 and CP11.
Gabe Black [Wed, 2 Jun 2010 17:58:12 +0000 (12:58 -0500)]
ARM: Implement the various versions of VMOV.
Gabe Black [Wed, 2 Jun 2010 17:58:12 +0000 (12:58 -0500)]
ARM: Add a new RegImmOp base class.
Gabe Black [Wed, 2 Jun 2010 17:58:12 +0000 (12:58 -0500)]
ARM: Add a RegRegImmOp base class.
Gabe Black [Wed, 2 Jun 2010 17:58:12 +0000 (12:58 -0500)]
ARM: Widen the immediate fields in the misc instruction classes.
Gabe Black [Wed, 2 Jun 2010 17:58:12 +0000 (12:58 -0500)]
ARM: Add a function to decode VFP modified immediate constants.
Gabe Black [Wed, 2 Jun 2010 17:58:12 +0000 (12:58 -0500)]
ARM: Add a function to decode SIMD modified immediate constants.
Gabe Black [Wed, 2 Jun 2010 17:58:12 +0000 (12:58 -0500)]
ARM: Add fp operands to operands.isa.
Gabe Black [Wed, 2 Jun 2010 17:58:11 +0000 (12:58 -0500)]
ARM: Decode the VMRS instruction.
Gabe Black [Wed, 2 Jun 2010 17:58:11 +0000 (12:58 -0500)]
ARM: Update the set of FP related miscregs.
Gabe Black [Wed, 2 Jun 2010 17:58:11 +0000 (12:58 -0500)]
ARM: Implement the VMRS instruction.
Gabe Black [Wed, 2 Jun 2010 17:58:11 +0000 (12:58 -0500)]
ARM: Decode the VMSR instruction.
Gabe Black [Wed, 2 Jun 2010 17:58:11 +0000 (12:58 -0500)]
ARM: Implement the VMSR instruction.
Gabe Black [Wed, 2 Jun 2010 17:58:11 +0000 (12:58 -0500)]
ARM: Decode 8, 16, and 32 bit transfers between core and extension (fp) registers.
Gabe Black [Wed, 2 Jun 2010 17:58:11 +0000 (12:58 -0500)]
ARM: Ignore attempts to disable coprocessors that aren't implemented anyway.
Gabe Black [Wed, 2 Jun 2010 17:58:11 +0000 (12:58 -0500)]
ARM: Implement the udiv instruction.
Gabe Black [Wed, 2 Jun 2010 17:58:11 +0000 (12:58 -0500)]
ARM: Implement the sdiv instruction.
Gabe Black [Wed, 2 Jun 2010 17:58:11 +0000 (12:58 -0500)]
ARM: Ignore writing a bad mode to CPSR with MSR.
Gabe Black [Wed, 2 Jun 2010 17:58:11 +0000 (12:58 -0500)]
ARM: Decode the CPS instruction.
Gabe Black [Wed, 2 Jun 2010 17:58:11 +0000 (12:58 -0500)]
ARM: Implement the CPS instruction.
Gabe Black [Wed, 2 Jun 2010 17:58:11 +0000 (12:58 -0500)]
ARM: Decode the SRS instruction.
Gabe Black [Wed, 2 Jun 2010 17:58:11 +0000 (12:58 -0500)]
ARM: Implement the SRS instruction.
Gabe Black [Wed, 2 Jun 2010 17:58:11 +0000 (12:58 -0500)]
ARM: Add a base class for SRS.
Gabe Black [Wed, 2 Jun 2010 17:58:11 +0000 (12:58 -0500)]
ARM: Implement a badMode function that says whether a mode is legal.
Gabe Black [Wed, 2 Jun 2010 17:58:11 +0000 (12:58 -0500)]
ARM: Allow flattening into any mode.
Gabe Black [Wed, 2 Jun 2010 17:58:11 +0000 (12:58 -0500)]
ARM: Decode TBB and TBH.
Gabe Black [Wed, 2 Jun 2010 17:58:11 +0000 (12:58 -0500)]
ARM: Decode the setend instruction.
Gabe Black [Wed, 2 Jun 2010 17:58:10 +0000 (12:58 -0500)]
ARM: Define the setend instruction.
Gabe Black [Wed, 2 Jun 2010 17:58:10 +0000 (12:58 -0500)]
ARM: Make a base class for instructions that use only an immediate.
Gabe Black [Wed, 2 Jun 2010 17:58:10 +0000 (12:58 -0500)]
ARM: Decode the arm version of ldrexd.
Gabe Black [Wed, 2 Jun 2010 17:58:10 +0000 (12:58 -0500)]
ARM: Decode the strex instructions.