gem5.git
14 years agoARM: Add a RegRegImmOp base class.
Gabe Black [Wed, 2 Jun 2010 17:58:12 +0000 (12:58 -0500)]
ARM: Add a RegRegImmOp base class.

14 years agoARM: Widen the immediate fields in the misc instruction classes.
Gabe Black [Wed, 2 Jun 2010 17:58:12 +0000 (12:58 -0500)]
ARM: Widen the immediate fields in the misc instruction classes.

14 years agoARM: 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 VFP modified immediate constants.

14 years agoARM: Add a function to decode SIMD 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.

14 years agoARM: Add fp operands to operands.isa.
Gabe Black [Wed, 2 Jun 2010 17:58:12 +0000 (12:58 -0500)]
ARM: Add fp operands to operands.isa.

14 years agoARM: Decode the VMRS instruction.
Gabe Black [Wed, 2 Jun 2010 17:58:11 +0000 (12:58 -0500)]
ARM: Decode the VMRS instruction.

14 years agoARM: Update the set of FP related miscregs.
Gabe Black [Wed, 2 Jun 2010 17:58:11 +0000 (12:58 -0500)]
ARM: Update the set of FP related miscregs.

14 years agoARM: Implement the VMRS instruction.
Gabe Black [Wed, 2 Jun 2010 17:58:11 +0000 (12:58 -0500)]
ARM: Implement the VMRS instruction.

14 years agoARM: Decode the VMSR instruction.
Gabe Black [Wed, 2 Jun 2010 17:58:11 +0000 (12:58 -0500)]
ARM: Decode the VMSR instruction.

14 years agoARM: Implement the VMSR instruction.
Gabe Black [Wed, 2 Jun 2010 17:58:11 +0000 (12:58 -0500)]
ARM: Implement the VMSR instruction.

14 years agoARM: 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: Decode 8, 16, and 32 bit transfers between core and extension (fp) registers.

14 years agoARM: Ignore attempts to disable coprocessors that aren't implemented anyway.
Gabe Black [Wed, 2 Jun 2010 17:58:11 +0000 (12:58 -0500)]
ARM: Ignore attempts to disable coprocessors that aren't implemented anyway.

14 years agoARM: Implement the udiv instruction.
Gabe Black [Wed, 2 Jun 2010 17:58:11 +0000 (12:58 -0500)]
ARM: Implement the udiv instruction.

14 years agoARM: Implement the sdiv instruction.
Gabe Black [Wed, 2 Jun 2010 17:58:11 +0000 (12:58 -0500)]
ARM: Implement the sdiv instruction.

14 years agoARM: Ignore writing a bad mode to CPSR with MSR.
Gabe Black [Wed, 2 Jun 2010 17:58:11 +0000 (12:58 -0500)]
ARM: Ignore writing a bad mode to CPSR with MSR.

14 years agoARM: Decode the CPS instruction.
Gabe Black [Wed, 2 Jun 2010 17:58:11 +0000 (12:58 -0500)]
ARM: Decode the CPS instruction.

14 years agoARM: Implement the CPS instruction.
Gabe Black [Wed, 2 Jun 2010 17:58:11 +0000 (12:58 -0500)]
ARM: Implement the CPS instruction.

14 years agoARM: Decode the SRS instruction.
Gabe Black [Wed, 2 Jun 2010 17:58:11 +0000 (12:58 -0500)]
ARM: Decode the SRS instruction.

14 years agoARM: Implement the SRS instruction.
Gabe Black [Wed, 2 Jun 2010 17:58:11 +0000 (12:58 -0500)]
ARM: Implement the SRS instruction.

14 years agoARM: Add a base class for SRS.
Gabe Black [Wed, 2 Jun 2010 17:58:11 +0000 (12:58 -0500)]
ARM: Add a base class for SRS.

14 years agoARM: 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: Implement a badMode function that says whether a mode is legal.

14 years agoARM: Allow flattening into any mode.
Gabe Black [Wed, 2 Jun 2010 17:58:11 +0000 (12:58 -0500)]
ARM: Allow flattening into any mode.

14 years agoARM: Decode TBB and TBH.
Gabe Black [Wed, 2 Jun 2010 17:58:11 +0000 (12:58 -0500)]
ARM: Decode TBB and TBH.

14 years agoARM: Decode the setend instruction.
Gabe Black [Wed, 2 Jun 2010 17:58:11 +0000 (12:58 -0500)]
ARM: Decode the setend instruction.

14 years agoARM: Define the setend instruction.
Gabe Black [Wed, 2 Jun 2010 17:58:10 +0000 (12:58 -0500)]
ARM: Define the setend instruction.

14 years agoARM: 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: Make a base class for instructions that use only an immediate.

14 years agoARM: Decode the arm version of ldrexd.
Gabe Black [Wed, 2 Jun 2010 17:58:10 +0000 (12:58 -0500)]
ARM: Decode the arm version of ldrexd.

14 years agoARM: Decode the strex instructions.
Gabe Black [Wed, 2 Jun 2010 17:58:10 +0000 (12:58 -0500)]
ARM: Decode the strex instructions.

14 years agoARM: Implement the strex instructions.
Gabe Black [Wed, 2 Jun 2010 17:58:10 +0000 (12:58 -0500)]
ARM: Implement the strex instructions.

14 years agoARM: Set CPSR.E to SCTLR.EE on faults.
Gabe Black [Wed, 2 Jun 2010 17:58:10 +0000 (12:58 -0500)]
ARM: Set CPSR.E to SCTLR.EE on faults.

14 years agoARM: Warn about not implementing MPU translation, not panic about MMU.
Gabe Black [Wed, 2 Jun 2010 17:58:10 +0000 (12:58 -0500)]
ARM: Warn about not implementing MPU translation, not panic about MMU.

We'll start out with a stbu version of PMSA and switch over to VMSA for the
full implementation.

14 years agoARM: Ignore/warn on accesses to the DRBAR, DRACR, and DRSR registers.
Gabe Black [Wed, 2 Jun 2010 17:58:10 +0000 (12:58 -0500)]
ARM: Ignore/warn on accesses to the DRBAR, DRACR, and DRSR registers.

14 years agoARM: Allow access to the RGNR register.
Gabe Black [Wed, 2 Jun 2010 17:58:10 +0000 (12:58 -0500)]
ARM: Allow access to the RGNR register.

14 years agoARM: Make the MPUIR register report that 1 unified data region is supported.
Gabe Black [Wed, 2 Jun 2010 17:58:10 +0000 (12:58 -0500)]
ARM: Make the MPUIR register report that 1 unified data region is supported.

14 years agoARM: Ignore/warn on accesses to the BPIALLIS and BPIALL registers.
Gabe Black [Wed, 2 Jun 2010 17:58:10 +0000 (12:58 -0500)]
ARM: Ignore/warn on accesses to the BPIALLIS and BPIALL registers.

14 years agoARM: Respect the E bit of the CPSR when doing loads and stores.
Gabe Black [Wed, 2 Jun 2010 17:58:10 +0000 (12:58 -0500)]
ARM: Respect the E bit of the CPSR when doing loads and stores.

14 years agoARM: Zero the micropc when vectoring to a fault.
Gabe Black [Wed, 2 Jun 2010 17:58:10 +0000 (12:58 -0500)]
ARM: Zero the micropc when vectoring to a fault.

14 years agoARM: Implement the V7 version of alignment checking.
Gabe Black [Wed, 2 Jun 2010 17:58:10 +0000 (12:58 -0500)]
ARM: Implement the V7 version of alignment checking.

14 years agoARM: Decode the RFE instruction.
Gabe Black [Wed, 2 Jun 2010 17:58:10 +0000 (12:58 -0500)]
ARM: Decode the RFE instruction.

14 years agoARM: Implement the RFE instruction.
Gabe Black [Wed, 2 Jun 2010 17:58:10 +0000 (12:58 -0500)]
ARM: Implement the RFE instruction.

14 years agoARM: Add a base class for the RFE instruction.
Gabe Black [Wed, 2 Jun 2010 17:58:10 +0000 (12:58 -0500)]
ARM: Add a base class for the RFE instruction.

14 years agoARM: Make sure some undefined thumb32 instructions fault.
Gabe Black [Wed, 2 Jun 2010 17:58:10 +0000 (12:58 -0500)]
ARM: Make sure some undefined thumb32 instructions fault.

14 years agoARM: Squash the low order bits of the PC when performing a regular branch.
Gabe Black [Wed, 2 Jun 2010 17:58:10 +0000 (12:58 -0500)]
ARM: Squash the low order bits of the PC when performing a regular branch.

14 years agoARM: When changing the CPSR and branching, make sure the branch is second.
Gabe Black [Wed, 2 Jun 2010 17:58:09 +0000 (12:58 -0500)]
ARM: When changing the CPSR and branching, make sure the branch is second.

14 years agoARM: Ignore/warn when CSSELR or CCSIDR are accessed.
Gabe Black [Wed, 2 Jun 2010 17:58:09 +0000 (12:58 -0500)]
ARM: Ignore/warn when CSSELR or CCSIDR are accessed.

These registers provide information about the caches. Since we can't provide
that information, these will be harmlessly inert.

14 years agoARM: Ignore/warn access to the bpimva registers.
Gabe Black [Wed, 2 Jun 2010 17:58:09 +0000 (12:58 -0500)]
ARM: Ignore/warn access to the bpimva registers.

14 years agoARM: Ignore/warn on accesses to the dccmvac register.
Gabe Black [Wed, 2 Jun 2010 17:58:09 +0000 (12:58 -0500)]
ARM: Ignore/warn on accesses to the dccmvac register.

14 years agoARM: Decode the enterx and leavex instructions.
Gabe Black [Wed, 2 Jun 2010 17:58:09 +0000 (12:58 -0500)]
ARM: Decode the enterx and leavex instructions.

14 years agoARM: Implement the enterx and leavex instructions.
Gabe Black [Wed, 2 Jun 2010 17:58:09 +0000 (12:58 -0500)]
ARM: Implement the enterx and leavex instructions.

These enter and leave thumbEE mode. Currently thumbEE mode behaves exactly the
same as Thumb mode, but at least this will make it -look- like we're enter and
leaving it. The actual behavioral changes will be implemented in future
changes.

14 years agoARM: Fix the implementation of BX to work in thumbEE mode.
Gabe Black [Wed, 2 Jun 2010 17:58:09 +0000 (12:58 -0500)]
ARM: Fix the implementation of BX to work in thumbEE mode.

14 years agoARM: When an instruction is intentionally undefined, fault on it.
Gabe Black [Wed, 2 Jun 2010 17:58:09 +0000 (12:58 -0500)]
ARM: When an instruction is intentionally undefined, fault on it.

14 years agoARM: Decode the thumb version of the ldrd and strd instructions.
Gabe Black [Wed, 2 Jun 2010 17:58:09 +0000 (12:58 -0500)]
ARM: Decode the thumb version of the ldrd and strd instructions.

14 years agoARM: Explicitly keep track of the second destination for double loads/stores.
Gabe Black [Wed, 2 Jun 2010 17:58:09 +0000 (12:58 -0500)]
ARM: Explicitly keep track of the second destination for double loads/stores.

14 years agoARM: Decode the thumb32 load byte/memory hint instructions.
Gabe Black [Wed, 2 Jun 2010 17:58:09 +0000 (12:58 -0500)]
ARM: Decode the thumb32 load byte/memory hint instructions.

14 years agoARM: Decode the load halfword, memory hints instructions for 32 bit Thumb.
Gabe Black [Wed, 2 Jun 2010 17:58:09 +0000 (12:58 -0500)]
ARM: Decode the load halfword, memory hints instructions for 32 bit Thumb.

14 years agoARM: Ignore/warn on accesses to icimvau.
Gabe Black [Wed, 2 Jun 2010 17:58:09 +0000 (12:58 -0500)]
ARM: Ignore/warn on accesses to icimvau.

14 years agoARM: Ignore/warn on iciallu.
Gabe Black [Wed, 2 Jun 2010 17:58:09 +0000 (12:58 -0500)]
ARM: Ignore/warn on iciallu.

14 years agoARM: Ignore/warn on ICIALLUIS.
Gabe Black [Wed, 2 Jun 2010 17:58:09 +0000 (12:58 -0500)]
ARM: Ignore/warn on ICIALLUIS.

14 years agoARM: Add support for the clidr register.
Gabe Black [Wed, 2 Jun 2010 17:58:09 +0000 (12:58 -0500)]
ARM: Add support for the clidr register.

This register will always report 0 caches as implemented. It's not clear how
to find out how many there really are when dealing with an arbitrary
hierarchy.

14 years agoARM: Decode the unimplemented data barrier CP15 accesses.
Gabe Black [Wed, 2 Jun 2010 17:58:09 +0000 (12:58 -0500)]
ARM: Decode the unimplemented data barrier CP15 accesses.

These are CP15DSB (Data Synchronization Barrier), and CP15DMB (Data Memory
Barrier).

14 years agoARM: Implement a stub of CPACR.
Gabe Black [Wed, 2 Jun 2010 17:58:09 +0000 (12:58 -0500)]
ARM: Implement a stub of CPACR.

This register controls access to the coprocessors. This doesn't actually
implement it, it allows writes which don't turn anything off. In other words,
it allows the simulated program to ask for what it already has.

14 years agoARM: Actually write the value of sctlr in ISA.clear().
Gabe Black [Wed, 2 Jun 2010 17:58:08 +0000 (12:58 -0500)]
ARM: Actually write the value of sctlr in ISA.clear().

14 years agoARM: Replace the ARM decode of CP15 MCR and MRC instructions.
Gabe Black [Wed, 2 Jun 2010 17:58:08 +0000 (12:58 -0500)]
ARM: Replace the ARM decode of CP15 MCR and MRC instructions.

14 years agoARM: Decode the unimplemented cp15 instruction barrier.
Gabe Black [Wed, 2 Jun 2010 17:58:08 +0000 (12:58 -0500)]
ARM: Decode the unimplemented cp15 instruction barrier.

14 years agoARM: Ignore accesses to DCCIMVAC.
Gabe Black [Wed, 2 Jun 2010 17:58:08 +0000 (12:58 -0500)]
ARM: Ignore accesses to DCCIMVAC.

14 years agoARM: Allow accesses to the software thread id registers.
Gabe Black [Wed, 2 Jun 2010 17:58:08 +0000 (12:58 -0500)]
ARM: Allow accesses to the software thread id registers.

14 years agoARM: Allow accesses to the contextidr register.
Gabe Black [Wed, 2 Jun 2010 17:58:08 +0000 (12:58 -0500)]
ARM: Allow accesses to the contextidr register.

14 years agoARM: Warn about and ignore accesses to DCCISW.
Gabe Black [Wed, 2 Jun 2010 17:58:08 +0000 (12:58 -0500)]
ARM: Warn about and ignore accesses to DCCISW.

This register is supposed to "Clean and invalidate data or unified cache line
by set/way." Since there isn't a good way to do that, we'll just ignore these
and warn about it.

14 years agoARM: Decode the thumb versions of the mcr and mrc instructions.
Gabe Black [Wed, 2 Jun 2010 17:58:08 +0000 (12:58 -0500)]
ARM: Decode the thumb versions of the mcr and mrc instructions.

14 years agoARM: Implement the mrc and mcr instructions.
Gabe Black [Wed, 2 Jun 2010 17:58:08 +0000 (12:58 -0500)]
ARM: Implement the mrc and mcr instructions.

14 years agoARM: Rename the RevOp base class to something more generic.
Gabe Black [Wed, 2 Jun 2010 17:58:08 +0000 (12:58 -0500)]
ARM: Rename the RevOp base class to something more generic.

14 years agoARM: Add a version of the Dest and Op1 operands for accessing the MiscRegs.
Gabe Black [Wed, 2 Jun 2010 17:58:08 +0000 (12:58 -0500)]
ARM: Add a version of the Dest and Op1 operands for accessing the MiscRegs.

14 years agoARM: Implement a function to decode CP15 registers to MiscReg indices.
Gabe Black [Wed, 2 Jun 2010 17:58:08 +0000 (12:58 -0500)]
ARM: Implement a function to decode CP15 registers to MiscReg indices.

14 years agoARM: Decode the bfi and bfc instructions.
Gabe Black [Wed, 2 Jun 2010 17:58:08 +0000 (12:58 -0500)]
ARM: Decode the bfi and bfc instructions.

14 years agoARM: Implement the bfc and bfi instructions.
Gabe Black [Wed, 2 Jun 2010 17:58:08 +0000 (12:58 -0500)]
ARM: Implement the bfc and bfi instructions.

14 years agoARM: Decode the ubfx and sbfx instructions.
Gabe Black [Wed, 2 Jun 2010 17:58:08 +0000 (12:58 -0500)]
ARM: Decode the ubfx and sbfx instructions.

14 years agoARM: Decode miscellaneous arm mode media instructions.
Gabe Black [Wed, 2 Jun 2010 17:58:08 +0000 (12:58 -0500)]
ARM: Decode miscellaneous arm mode media instructions.

14 years agoARM: Implement the ubfx and sbfx instructions.
Gabe Black [Wed, 2 Jun 2010 17:58:08 +0000 (12:58 -0500)]
ARM: Implement the ubfx and sbfx instructions.

14 years agoARM: Add a register, immediate, immediate to register base for [su]bfx.
Gabe Black [Wed, 2 Jun 2010 17:58:08 +0000 (12:58 -0500)]
ARM: Add a register, immediate, immediate to register base for [su]bfx.

14 years agoARM: Decode the clz instruction.
Gabe Black [Wed, 2 Jun 2010 17:58:08 +0000 (12:58 -0500)]
ARM: Decode the clz instruction.

14 years agoARM: Implement the clz instruction.
Gabe Black [Wed, 2 Jun 2010 17:58:08 +0000 (12:58 -0500)]
ARM: Implement the clz instruction.

14 years agoARM: Decode the rbit instruction.
Gabe Black [Wed, 2 Jun 2010 17:58:07 +0000 (12:58 -0500)]
ARM: Decode the rbit instruction.

14 years agoARM: Implement the rbit instruction.
Gabe Black [Wed, 2 Jun 2010 17:58:07 +0000 (12:58 -0500)]
ARM: Implement the rbit instruction.

14 years agoARM: Decode the nop instruction.
Gabe Black [Wed, 2 Jun 2010 17:58:07 +0000 (12:58 -0500)]
ARM: Decode the nop instruction.

14 years agoARM: Implement nop.
Gabe Black [Wed, 2 Jun 2010 17:58:07 +0000 (12:58 -0500)]
ARM: Implement nop.

14 years agoARM: Decode the ldrex instruction.
Gabe Black [Wed, 2 Jun 2010 17:58:07 +0000 (12:58 -0500)]
ARM: Decode the ldrex instruction.

14 years agoARM: Rearrange the load/store double/exclusive, table branch thumb decoding.
Gabe Black [Wed, 2 Jun 2010 17:58:07 +0000 (12:58 -0500)]
ARM: Rearrange the load/store double/exclusive, table branch thumb decoding.

14 years agoARM: Implement the ldrex instruction.
Gabe Black [Wed, 2 Jun 2010 17:58:07 +0000 (12:58 -0500)]
ARM: Implement the ldrex instruction.

14 years agoARM: Decode the usad8 and usada8 instructions.
Gabe Black [Wed, 2 Jun 2010 17:58:07 +0000 (12:58 -0500)]
ARM: Decode the usad8 and usada8 instructions.

14 years agoARM: Implement the usad8 and usada8 instructions.
Gabe Black [Wed, 2 Jun 2010 17:58:07 +0000 (12:58 -0500)]
ARM: Implement the usad8 and usada8 instructions.

14 years agoARM: Add a base class to support usada8.
Gabe Black [Wed, 2 Jun 2010 17:58:07 +0000 (12:58 -0500)]
ARM: Add a base class to support usada8.

14 years agoARM: Decode the sel instruction.
Gabe Black [Wed, 2 Jun 2010 17:58:07 +0000 (12:58 -0500)]
ARM: Decode the sel instruction.

14 years agoARM: Implement the sel instruction.
Gabe Black [Wed, 2 Jun 2010 17:58:07 +0000 (12:58 -0500)]
ARM: Implement the sel instruction.

14 years agoARM: Add a base class for the sel instruction.
Gabe Black [Wed, 2 Jun 2010 17:58:07 +0000 (12:58 -0500)]
ARM: Add a base class for the sel instruction.

14 years agoARM: Decode pkh instructions.
Gabe Black [Wed, 2 Jun 2010 17:58:07 +0000 (12:58 -0500)]
ARM: Decode pkh instructions.

14 years agoARM: Implement the pkh instruction.
Gabe Black [Wed, 2 Jun 2010 17:58:07 +0000 (12:58 -0500)]
ARM: Implement the pkh instruction.

14 years agoARM: Decode the sign/zero extend instructions.
Gabe Black [Wed, 2 Jun 2010 17:58:07 +0000 (12:58 -0500)]
ARM: Decode the sign/zero extend instructions.

14 years agoARM: Implement zero/sign extend instructions.
Gabe Black [Wed, 2 Jun 2010 17:58:07 +0000 (12:58 -0500)]
ARM: Implement zero/sign extend instructions.

14 years agoARM: Add a base class for extend and add instructions.
Gabe Black [Wed, 2 Jun 2010 17:58:07 +0000 (12:58 -0500)]
ARM: Add a base class for extend and add instructions.

14 years agoARM: Generalize the saturation instruction bases for use in other instructions.
Gabe Black [Wed, 2 Jun 2010 17:58:07 +0000 (12:58 -0500)]
ARM: Generalize the saturation instruction bases for use in other instructions.