gem5.git
14 years agoARM: Don't rely on undefined behavior to get arithmetic right shift.
Gabe Black [Wed, 2 Jun 2010 17:58:04 +0000 (12:58 -0500)]
ARM: Don't rely on undefined behavior to get arithmetic right shift.
Shifting to the right of a signed value when the MSB is one is technically
undefined behavior, even though in my experience it's done the "right thing"
and sign extended the value. This replaces the arithmetic right shift code in
ARM that uses that coincidence with some code that relies on bit math.

14 years agoARM: Restrict the shift amount from a register to 8 bits.
Gabe Black [Wed, 2 Jun 2010 17:58:04 +0000 (12:58 -0500)]
ARM: Restrict the shift amount from a register to 8 bits.
The shift amount when taken from a register is supposed to be truncated to an
8 bit value.

14 years agoARM: Update the stats now that VFP load/store multiple is implemented.
Gabe Black [Wed, 2 Jun 2010 17:58:04 +0000 (12:58 -0500)]
ARM: Update the stats now that VFP load/store multiple is implemented.

14 years agoARM: Define the VFP load/store multiple instructions.
Gabe Black [Wed, 2 Jun 2010 17:58:04 +0000 (12:58 -0500)]
ARM: Define the VFP load/store multiple instructions.

14 years agoARM: Decode the VFP load/store multiple instructions.
Gabe Black [Wed, 2 Jun 2010 17:58:04 +0000 (12:58 -0500)]
ARM: Decode the VFP load/store multiple instructions.

14 years agoARM: Fix the constant describing the number of floating point registers.
Gabe Black [Wed, 2 Jun 2010 17:58:04 +0000 (12:58 -0500)]
ARM: Fix the constant describing the number of floating point registers.

14 years agoARM: Add templates for VFP load/store multiple instructions.
Gabe Black [Wed, 2 Jun 2010 17:58:04 +0000 (12:58 -0500)]
ARM: Add templates for VFP load/store multiple instructions.

14 years agoARM: Add base classes for VFP load/store multiple.
Gabe Black [Wed, 2 Jun 2010 17:58:04 +0000 (12:58 -0500)]
ARM: Add base classes for VFP load/store multiple.

14 years agoARM: Add floating point load/store microops.
Gabe Black [Wed, 2 Jun 2010 17:58:04 +0000 (12:58 -0500)]
ARM: Add floating point load/store microops.

14 years agoARM: Add an fp version of one of the microop indexed registers.
Gabe Black [Wed, 2 Jun 2010 17:58:04 +0000 (12:58 -0500)]
ARM: Add an fp version of one of the microop indexed registers.

14 years agoARM: Move the mmap region to where Linux actually has it.
Gabe Black [Wed, 2 Jun 2010 17:58:04 +0000 (12:58 -0500)]
ARM: Move the mmap region to where Linux actually has it.

14 years agoARM: Eliminate the unused rhi and rlo operands.
Gabe Black [Wed, 2 Jun 2010 17:58:03 +0000 (12:58 -0500)]
ARM: Eliminate the unused rhi and rlo operands.

14 years agoARM: Move the macro mem constructor out of the isa desc.
Gabe Black [Wed, 2 Jun 2010 17:58:03 +0000 (12:58 -0500)]
ARM: Move the macro mem constructor out of the isa desc.
This code doesn't use the parser at all, and moving it out reduces the
conceptual complexity of that code.

14 years agoARM: Make macroops panic if executed directly.
Gabe Black [Wed, 2 Jun 2010 17:58:03 +0000 (12:58 -0500)]
ARM: Make macroops panic if executed directly.
The macroop should never be executed, only it's microops will.

14 years agoARM: GCC < 4.3 has some issues with attribute no return on some functions. Fix so...
Ali Saidi [Wed, 2 Jun 2010 17:58:03 +0000 (12:58 -0500)]
ARM: GCC < 4.3 has some issues with attribute no return on some functions. Fix so it works for older gccs.

14 years agoARM: Split out the "basic" templates and format.
Gabe Black [Wed, 2 Jun 2010 17:58:03 +0000 (12:58 -0500)]
ARM: Split out the "basic" templates and format.

--HG--
rename : src/arch/arm/isa/formats/basic.isa => src/arch/arm/isa/templates/basic.isa

14 years agoARM: Remove unnecessary cruft from includes.isa.
Gabe Black [Wed, 2 Jun 2010 17:58:03 +0000 (12:58 -0500)]
ARM: Remove unnecessary cruft from includes.isa.

14 years agoARM: Move the inst2string function out of the isa_desc.
Gabe Black [Wed, 2 Jun 2010 17:58:03 +0000 (12:58 -0500)]
ARM: Move the inst2string function out of the isa_desc.
Delete the now empty formats/util.isa.

14 years agoARM: Get rid of the unused ArmGenericCodeSubs.
Gabe Black [Wed, 2 Jun 2010 17:58:03 +0000 (12:58 -0500)]
ARM: Get rid of the unused ArmGenericCodeSubs.

14 years agoARM: Make the predecoder print out the ExtMachInst it gathered when traced.
Gabe Black [Wed, 2 Jun 2010 17:58:03 +0000 (12:58 -0500)]
ARM: Make the predecoder print out the ExtMachInst it gathered when traced.

14 years agoARM: Remove special naming for the new version of multiply.
Gabe Black [Wed, 2 Jun 2010 17:58:03 +0000 (12:58 -0500)]
ARM: Remove special naming for the new version of multiply.

14 years agoARM: Hook the new multiply instructions into all the decoders.
Gabe Black [Wed, 2 Jun 2010 17:58:03 +0000 (12:58 -0500)]
ARM: Hook the new multiply instructions into all the decoders.

14 years agoARM: Implement all integer multiply instructions.
Gabe Black [Wed, 2 Jun 2010 17:58:03 +0000 (12:58 -0500)]
ARM: Implement all integer multiply instructions.

14 years agoARM: Add templates for multiply instructions.
Gabe Black [Wed, 2 Jun 2010 17:58:03 +0000 (12:58 -0500)]
ARM: Add templates for multiply instructions.

14 years agoARM: Add base classes for multiply instructions.
Gabe Black [Wed, 2 Jun 2010 17:58:03 +0000 (12:58 -0500)]
ARM: Add base classes for multiply instructions.

14 years agoARM: Decode plain binary immediate thumb data processing instructions.
Gabe Black [Wed, 2 Jun 2010 17:58:03 +0000 (12:58 -0500)]
ARM: Decode plain binary immediate thumb data processing instructions.

14 years agoARM: Define a new "movt" data processing instruction.
Gabe Black [Wed, 2 Jun 2010 17:58:03 +0000 (12:58 -0500)]
ARM: Define a new "movt" data processing instruction.

14 years agoARM: Hook the new branch instructions into the 32 bit thumb decoder.
Gabe Black [Wed, 2 Jun 2010 17:58:03 +0000 (12:58 -0500)]
ARM: Hook the new branch instructions into the 32 bit thumb decoder.

14 years agoARM: Hook the new branch instructions into the 16 bit thumb decoder.
Gabe Black [Wed, 2 Jun 2010 17:58:03 +0000 (12:58 -0500)]
ARM: Hook the new branch instructions into the 16 bit thumb decoder.

14 years agoARM: Eliminate the old style branch instructions.
Gabe Black [Wed, 2 Jun 2010 17:58:03 +0000 (12:58 -0500)]
ARM: Eliminate the old style branch instructions.

14 years agoARM: Hook the new branch instructions into the ARM decoder.
Gabe Black [Wed, 2 Jun 2010 17:58:02 +0000 (12:58 -0500)]
ARM: Hook the new branch instructions into the ARM decoder.

14 years agoARM: Implement branch instructions external to the decoder.
Gabe Black [Wed, 2 Jun 2010 17:58:02 +0000 (12:58 -0500)]
ARM: Implement branch instructions external to the decoder.

14 years agoARM: Add new templates for branch instructions.
Gabe Black [Wed, 2 Jun 2010 17:58:02 +0000 (12:58 -0500)]
ARM: Add new templates for branch instructions.

14 years agoARM: Implement new base classes for branches.
Gabe Black [Wed, 2 Jun 2010 17:58:02 +0000 (12:58 -0500)]
ARM: Implement new base classes for branches.

14 years agoARM: Replace the interworking branch base class with a special operand.
Gabe Black [Wed, 2 Jun 2010 17:58:02 +0000 (12:58 -0500)]
ARM: Replace the interworking branch base class with a special operand.

14 years agoARM: Fix PC operand handling.
Gabe Black [Wed, 2 Jun 2010 17:58:02 +0000 (12:58 -0500)]
ARM: Fix PC operand handling.

14 years agoARM: Remove the special naming from the new version of data processing instructions.
Gabe Black [Wed, 2 Jun 2010 17:58:02 +0000 (12:58 -0500)]
ARM: Remove the special naming from the new version of data processing instructions.

14 years agoARM: Get rid of unnecessary flag calculating functions.
Gabe Black [Wed, 2 Jun 2010 17:58:02 +0000 (12:58 -0500)]
ARM: Get rid of unnecessary flag calculating functions.

14 years agoARM: Get rid of the unused Jump format.
Gabe Black [Wed, 2 Jun 2010 17:58:02 +0000 (12:58 -0500)]
ARM: Get rid of the unused Jump format.

14 years agoARM: Get rid of obsoleted predicated inst formats, etc.
Gabe Black [Wed, 2 Jun 2010 17:58:02 +0000 (12:58 -0500)]
ARM: Get rid of obsoleted predicated inst formats, etc.

14 years agoARM: Implement disassembly for the new data processing classes.
Gabe Black [Wed, 2 Jun 2010 17:58:02 +0000 (12:58 -0500)]
ARM: Implement disassembly for the new data processing classes.

14 years agoARM: Hook the external data processing instructions into the Thumb decoder.
Gabe Black [Wed, 2 Jun 2010 17:58:02 +0000 (12:58 -0500)]
ARM: Hook the external data processing instructions into the Thumb decoder.

14 years agoARM: Move the modified_imm function from all ARM instructions to just data processing...
Gabe Black [Wed, 2 Jun 2010 17:58:02 +0000 (12:58 -0500)]
ARM: Move the modified_imm function from all ARM instructions to just data processing ones.

14 years agoARM: Hook the new external data processing instructions to the ARM decoder.
Gabe Black [Wed, 2 Jun 2010 17:58:02 +0000 (12:58 -0500)]
ARM: Hook the new external data processing instructions to the ARM decoder.

14 years agoARM: Implement data processing instructions external to the decoder.
Gabe Black [Wed, 2 Jun 2010 17:58:02 +0000 (12:58 -0500)]
ARM: Implement data processing instructions external to the decoder.

14 years agoARM: Add new base classes for data processing instructions.
Gabe Black [Wed, 2 Jun 2010 17:58:02 +0000 (12:58 -0500)]
ARM: Add new base classes for data processing instructions.

14 years agoARM: Hook up 32 bit thumb load/store multiple.
Gabe Black [Wed, 2 Jun 2010 17:58:02 +0000 (12:58 -0500)]
ARM: Hook up 32 bit thumb load/store multiple.

14 years agoARM: Hook up 16 bit thumb load/store multiple.
Gabe Black [Wed, 2 Jun 2010 17:58:02 +0000 (12:58 -0500)]
ARM: Hook up 16 bit thumb load/store multiple.

14 years agoARM: Reimplement load/store multiple external to the decoder.
Gabe Black [Wed, 2 Jun 2010 17:58:02 +0000 (12:58 -0500)]
ARM: Reimplement load/store multiple external to the decoder.

--HG--
rename : src/arch/arm/isa/formats/macromem.isa => src/arch/arm/isa/insts/macromem.isa
rename : src/arch/arm/isa/formats/macromem.isa => src/arch/arm/isa/templates/macromem.isa

14 years agoARM: Move the templates for predicated instructions into a separate file.
Gabe Black [Wed, 2 Jun 2010 17:58:01 +0000 (12:58 -0500)]
ARM: Move the templates for predicated instructions into a separate file.
This allows the templates to all be available at the same time before any of
the formats, etc. This breaks an artificial circular dependence.

--HG--
rename : src/arch/arm/isa/formats/pred.isa => src/arch/arm/isa/templates/pred.isa

14 years agoARM: Remove the special naming for the new memory instructions.
Gabe Black [Wed, 2 Jun 2010 17:58:01 +0000 (12:58 -0500)]
ARM: Remove the special naming for the new memory instructions.
These are the only memory instructions now.

14 years agoARM: Eliminate the old memory formats which are no longer used.
Gabe Black [Wed, 2 Jun 2010 17:58:01 +0000 (12:58 -0500)]
ARM: Eliminate the old memory formats which are no longer used.

14 years agoARM: Eliminate decoding for the very deprecated FPA instructions.
Gabe Black [Wed, 2 Jun 2010 17:58:01 +0000 (12:58 -0500)]
ARM: Eliminate decoding for the very deprecated FPA instructions.

14 years agoARM: Make the addressing mode 3 loads/stores use the externally defined instructions.
Gabe Black [Wed, 2 Jun 2010 17:58:01 +0000 (12:58 -0500)]
ARM: Make the addressing mode 3 loads/stores use the externally defined instructions.

14 years agoARM: Pull double memory instructions out of the decoder.
Gabe Black [Wed, 2 Jun 2010 17:58:01 +0000 (12:58 -0500)]
ARM: Pull double memory instructions out of the decoder.

14 years agoARM: Force the condition code for 16 bit thumb instructions to be unconditional.
Gabe Black [Wed, 2 Jun 2010 17:58:01 +0000 (12:58 -0500)]
ARM: Force the condition code for 16 bit thumb instructions to be unconditional.
Before, because 16 bit thumb instructions didn't set the upper 16 bits of the
ExtMachInst, that field would be interpretted as "equals".

14 years agoARM: Decode 16 bit thumb PC relative memory instructions.
Gabe Black [Wed, 2 Jun 2010 17:58:01 +0000 (12:58 -0500)]
ARM: Decode 16 bit thumb PC relative memory instructions.

14 years agoARM: Decode 16 bit thumb immediate addressed memory instructions.
Gabe Black [Wed, 2 Jun 2010 17:58:01 +0000 (12:58 -0500)]
ARM: Decode 16 bit thumb immediate addressed memory instructions.

14 years agoARM: Decode 16 bit thumb register addressed memory instructions.
Gabe Black [Wed, 2 Jun 2010 17:58:01 +0000 (12:58 -0500)]
ARM: Decode 16 bit thumb register addressed memory instructions.

14 years agoARM: Make single stores decode to the new external store instructions.
Gabe Black [Wed, 2 Jun 2010 17:58:01 +0000 (12:58 -0500)]
ARM: Make single stores decode to the new external store instructions.

14 years agoARM: Add a .w to the disassembly of 32 bit thumb instructions.
Gabe Black [Wed, 2 Jun 2010 17:58:01 +0000 (12:58 -0500)]
ARM: Add a .w to the disassembly of 32 bit thumb instructions.
This isn't technically correct since the .w should only be added if there are
32 and 16 bit encodings, but always having it always is better than never
having it.

14 years agoARM: Make 32 bit thumb use the new, external load instructions.
Gabe Black [Wed, 2 Jun 2010 17:58:01 +0000 (12:58 -0500)]
ARM: Make 32 bit thumb use the new, external load instructions.

14 years agoARM: Define the store instructions from outside the decoder.
Gabe Black [Wed, 2 Jun 2010 17:58:01 +0000 (12:58 -0500)]
ARM: Define the store instructions from outside the decoder.

--HG--
rename : src/arch/arm/isa/insts/ldr.isa => src/arch/arm/isa/insts/str.isa

14 years agoARM: Define the load instructions from outside the decoder.
Gabe Black [Wed, 2 Jun 2010 17:58:01 +0000 (12:58 -0500)]
ARM: Define the load instructions from outside the decoder.

14 years agoARM: Implement a new set of base classes for non macro memory instructions.
Gabe Black [Wed, 2 Jun 2010 17:58:01 +0000 (12:58 -0500)]
ARM: Implement a new set of base classes for non macro memory instructions.

14 years agoARM: Create a "decoder" directory for the files implementing the decoder.
Gabe Black [Wed, 2 Jun 2010 17:58:01 +0000 (12:58 -0500)]
ARM: Create a "decoder" directory for the files implementing the decoder.

--HG--
rename : src/arch/arm/isa/armdecode.isa => src/arch/arm/isa/decoder/arm.isa
rename : src/arch/arm/isa/decoder.isa => src/arch/arm/isa/decoder/decoder.isa
rename : src/arch/arm/isa/thumbdecode.isa => src/arch/arm/isa/decoder/thumb.isa
rename : src/arch/arm/isa/vfpdecode.isa => src/arch/arm/isa/decoder/vfp.isa

14 years agoARM: Flesh out the 32 bit thumb store single instructions.
Gabe Black [Wed, 2 Jun 2010 17:58:01 +0000 (12:58 -0500)]
ARM: Flesh out the 32 bit thumb store single instructions.

14 years agoARM: Implement the 32 bit thumb load word instructions.
Gabe Black [Wed, 2 Jun 2010 17:58:01 +0000 (12:58 -0500)]
ARM: Implement the 32 bit thumb load word instructions.

14 years agoARM: Add an operand for accessing the current PC.
Gabe Black [Wed, 2 Jun 2010 17:58:00 +0000 (12:58 -0500)]
ARM: Add an operand for accessing the current PC.

14 years agoARM: Flesh out 32 bit thumb load word decoding.
Gabe Black [Wed, 2 Jun 2010 17:58:00 +0000 (12:58 -0500)]
ARM: Flesh out 32 bit thumb load word decoding.

14 years agoARM: Implement some 32 bit thumb data processing immediate instructions.
Gabe Black [Wed, 2 Jun 2010 17:58:00 +0000 (12:58 -0500)]
ARM: Implement some 32 bit thumb data processing immediate instructions.

14 years agoARM: Replace the "never" condition with the "unconditional" condition.
Gabe Black [Wed, 2 Jun 2010 17:58:00 +0000 (12:58 -0500)]
ARM: Replace the "never" condition with the "unconditional" condition.

14 years agoARM: Add a base class for 32 bit thumb data processing immediate instructions.
Gabe Black [Wed, 2 Jun 2010 17:58:00 +0000 (12:58 -0500)]
ARM: Add a base class for 32 bit thumb data processing immediate instructions.

14 years agoARM: Add a function to decode 32 bit thumb immediate values.
Gabe Black [Wed, 2 Jun 2010 17:58:00 +0000 (12:58 -0500)]
ARM: Add a function to decode 32 bit thumb immediate values.

14 years agoARM: Expand the decoding for 32 bit thumb data processing immediate instructions.
Gabe Black [Wed, 2 Jun 2010 17:58:00 +0000 (12:58 -0500)]
ARM: Expand the decoding for 32 bit thumb data processing immediate instructions.

14 years agoARM: Stub out the 32 bit Thumb portion of the decoder.
Gabe Black [Wed, 2 Jun 2010 17:58:00 +0000 (12:58 -0500)]
ARM: Stub out the 32 bit Thumb portion of the decoder.

14 years agoARM: Add bitfields for 32 bit thumb.
Gabe Black [Wed, 2 Jun 2010 17:58:00 +0000 (12:58 -0500)]
ARM: Add bitfields for 32 bit thumb.

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

14 years agoARM: Stub out the 16 bit thumb decoder.
Gabe Black [Wed, 2 Jun 2010 17:58:00 +0000 (12:58 -0500)]
ARM: Stub out the 16 bit thumb decoder.

14 years agoARM: Add thumb bitfields to the ExtMachInst and the isa definition.
Gabe Black [Wed, 2 Jun 2010 17:58:00 +0000 (12:58 -0500)]
ARM: Add thumb bitfields to the ExtMachInst and the isa definition.

14 years agoARM: Make the decoder handle thumb instructions separately.
Gabe Black [Wed, 2 Jun 2010 17:58:00 +0000 (12:58 -0500)]
ARM: Make the decoder handle thumb instructions separately.

--HG--
rename : src/arch/arm/isa/decoder.isa => src/arch/arm/isa/armdecode.isa
rename : src/arch/arm/isa/decoder.isa => src/arch/arm/isa/thumbdecode.isa

14 years agoARM: Add a thumb bit bitfield.
Gabe Black [Wed, 2 Jun 2010 17:58:00 +0000 (12:58 -0500)]
ARM: Add a thumb bit bitfield.

14 years agoARM: Make the predecoder handle Thumb instructions.
Gabe Black [Wed, 2 Jun 2010 17:58:00 +0000 (12:58 -0500)]
ARM: Make the predecoder handle Thumb instructions.

14 years agoARM: Make sure ExtMachInst is used consistently instead of regular MachInst.
Gabe Black [Wed, 2 Jun 2010 17:58:00 +0000 (12:58 -0500)]
ARM: Make sure ExtMachInst is used consistently instead of regular MachInst.

14 years agoARM: Add a bitfield for setting the regular, inst bits of an ExtMachInst.
Gabe Black [Wed, 2 Jun 2010 17:58:00 +0000 (12:58 -0500)]
ARM: Add a bitfield for setting the regular, inst bits of an ExtMachInst.

14 years agoARM: Add a bit to the ExtMachInst to select thumb mode.
Gabe Black [Wed, 2 Jun 2010 17:58:00 +0000 (12:58 -0500)]
ARM: Add a bit to the ExtMachInst to select thumb mode.

14 years agoARM: Allow ARM processes to start in Thumb mode.
Gabe Black [Wed, 2 Jun 2010 17:58:00 +0000 (12:58 -0500)]
ARM: Allow ARM processes to start in Thumb mode.

14 years agoARM: Detect thumb mode elf images.
Gabe Black [Wed, 2 Jun 2010 17:58:00 +0000 (12:58 -0500)]
ARM: Detect thumb mode elf images.

14 years agoARM: Add a new base class for instructions that can do an interworking branch.
Gabe Black [Wed, 2 Jun 2010 17:57:59 +0000 (12:57 -0500)]
ARM: Add a new base class for instructions that can do an interworking branch.

14 years agoARM: Track the current ISA mode using the PC.
Gabe Black [Wed, 2 Jun 2010 17:57:59 +0000 (12:57 -0500)]
ARM: Track the current ISA mode using the PC.

14 years agoARM: Fix custom writer/reader code for non indexed operands.
Gabe Black [Wed, 2 Jun 2010 17:57:59 +0000 (12:57 -0500)]
ARM: Fix custom writer/reader code for non indexed operands.

14 years agoARM: Remove IsControl from operands that don't imply control transfers.
Gabe Black [Wed, 2 Jun 2010 17:57:59 +0000 (12:57 -0500)]
ARM: Remove IsControl from operands that don't imply control transfers.

Also remove IsInteger from CondCodes.

14 years agoARM: Adjust some copyrights
Ali Saidi [Wed, 2 Jun 2010 17:57:59 +0000 (12:57 -0500)]
ARM: Adjust some copyrights

14 years agostyle: clean up ruby's Set class
Nathan Binkert [Tue, 1 Jun 2010 18:38:56 +0000 (11:38 -0700)]
style: clean up ruby's Set class

Further cleanup should probably be done to make this class be non-Ruby
specific and put it in src/base.

There are probably several cases where this class is used, std::bitset
could be used instead.

14 years agox86: put back code that I accidentally deleted
Nathan Binkert [Wed, 26 May 2010 03:15:44 +0000 (20:15 -0700)]
x86: put back code that I accidentally deleted

14 years agocopyright: Change HP copyright on x86 code to be more friendly
Nathan Binkert [Mon, 24 May 2010 05:44:15 +0000 (22:44 -0700)]
copyright: Change HP copyright on x86 code to be more friendly

14 years agoBPRED: Update one missing regression
Ali Saidi [Wed, 19 May 2010 04:36:05 +0000 (00:36 -0400)]
BPRED: Update one missing regression

14 years agoSPARC: Implement the version of movcc that uses the fp condition codes.
Gabe Black [Fri, 14 May 2010 21:22:51 +0000 (14:22 -0700)]
SPARC: Implement the version of movcc that uses the fp condition codes.

14 years agoAutomated merge with ssh://m5sim.org//repo/m5
Ali Saidi [Fri, 14 May 2010 03:48:06 +0000 (23:48 -0400)]
Automated merge with ssh://m5sim.org//repo/m5

14 years agoBPRED: Update regressions for tournament predictor fix.
Ali Saidi [Fri, 14 May 2010 03:45:59 +0000 (23:45 -0400)]
BPRED: Update regressions for tournament predictor fix.