Merge zizzer:/bk/newmem
authorGabe Black <gblack@eecs.umich.edu>
Sun, 17 Dec 2006 16:55:24 +0000 (11:55 -0500)
committerGabe Black <gblack@eecs.umich.edu>
Sun, 17 Dec 2006 16:55:24 +0000 (11:55 -0500)
into  zower.eecs.umich.edu:/eecshome/m5/newmem

src/arch/sparc/isa/formats/mem/blockmem.isa:
src/arch/sparc/isa/operands.isa:
    Hand Merge

--HG--
extra : convert_revision : 4c54544e5c7a61f055ea9b00ccf5f8510df0e6c2

1  2 
src/arch/sparc/isa/decoder.isa
src/arch/sparc/isa/formats/mem/blockmem.isa
src/arch/sparc/isa/formats/mem/util.isa
src/arch/sparc/isa/operands.isa

Simple merge
index a0b235a614af0c28aca7f67f50ee496b94f61468,8bbbdc1dad24d19a3af75405abcbfc29c1422db2..25fffc02b0a97d772b262d304254e00e2d50afc8
@@@ -335,5 -537,13 +537,13 @@@ def format BlockStore(code, asi, *opt_f
           decoder_output,
           exec_output,
           decode_block) = doBlockMemFormat(code, faultCode,
 -             StoreExecute, name, Name, asi, opt_flags)
 +             StoreFuncs, name, Name, asi, opt_flags)
  }};
+ def format TwinLoad(code, asi, *opt_flags) {{
+     faultCode = AlternateASIPrivFaultCheck + TwinAlignmentFaultCheck
+     (header_output,
+      decoder_output,
+      exec_output,
+      decode_block) = doTwinLoadFormat(code, faultCode, name, Name, asi, opt_flags)
+ }};
index 256f2fa43976010828d8f34348db200cb4ed8222,abb82f88c28a1a90a49f8e2838f5b560977ce846..2d1c3d3b9b041eb9f6106edb7c96f1534135b8fe
@@@ -56,23 -56,15 +56,26 @@@ def operands {
      # Int regs default to unsigned, but code should not count on this.
      # For clarity, descriptions that depend on unsigned behavior should
      # explicitly specify '.uq'.
 +
      'Rd':             ('IntReg', 'udw', 'RD', 'IsInteger', 1),
 -    # for the instruction and is replaced by RdLow or RdHigh by the format
 +    # The Rd from the previous window
 +    'Rd_prev':                ('IntReg', 'udw', 'RD + NumIntArchRegs + NumMicroIntRegs', 'IsInteger', 2),
 +    # The Rd from the next window
 +    'Rd_next':                ('IntReg', 'udw', 'RD + 2 * NumIntArchRegs + NumMicroIntRegs', 'IsInteger', 3),
+     # For microcoded twin load instructions, RdTwin appears in the "code"
 -    'RdLow':          ('IntReg', 'udw', 'RD & (~1)', 'IsInteger', 2),
 -    'RdHigh':         ('IntReg', 'udw', 'RD | 1', 'IsInteger', 3),
 -    'Rs1':            ('IntReg', 'udw', 'RS1', 'IsInteger', 4),
 -    'Rs2':            ('IntReg', 'udw', 'RS2', 'IsInteger', 5),
 -    'uReg0':          ('IntReg', 'udw', 'NumIntArchRegs', 'IsInteger', 6),
++    # for the instruction is replaced by RdLow or RdHigh by the format
+     # before it's processed by the iop.
 +    # The low (even) register of a two register pair
 +    'RdLow':          ('IntReg', 'udw', 'RD & (~1)', 'IsInteger', 4),
 +    # The high (odd) register of a two register pair
 +    'RdHigh':         ('IntReg', 'udw', 'RD | 1', 'IsInteger', 5),
 +    'Rs1':            ('IntReg', 'udw', 'RS1', 'IsInteger', 6),
 +    'Rs2':            ('IntReg', 'udw', 'RS2', 'IsInteger', 7),
 +    # A microcode register. Right now, this is the only one.
 +    'uReg0':          ('IntReg', 'udw', 'NumIntArchRegs', 'IsInteger', 8),
 +    # Because double and quad precision register numbers are decoded
 +    # differently, they get different operands. The single precision versions
 +    # have an s post pended to their name.
      'Frds':           ('FloatReg', 'sf', 'RD', 'IsFloating', 10),
      'Frd':            ('FloatReg', 'df', 'dfpr(RD)', 'IsFloating', 10),
      # Each Frd_N refers to the Nth double precision register from Frd.