118a119,152
> def buildSrsStore(mnem, post, add, writeback):
> name = mnem
> Name = "SRS_" + storeImmClassName(post, add, writeback, 8)
>
> offset = 0
> if post != add:
> offset += 4
> if not add:
> offset -= 8
>
> eaCode = "EA = SpMode + %d;" % offset
>
> wbDiff = -8
> if add:
> wbDiff = 8
> accCode = '''
> CPSR cpsr = Cpsr;
> Mem.ud = (uint64_t)cSwap(LR.uw, cpsr.e) |
> ((uint64_t)cSwap(Spsr.uw, cpsr.e) << 32);
> '''
> if writeback:
> accCode += "SpMode = SpMode + %s;\n" % wbDiff
>
> global header_output, decoder_output, exec_output
>
> (newHeader,
> newDecoder,
> newExec) = SrsBase(name, Name, eaCode, accCode,
> ["ArmISA::TLB::AlignWord", "ArmISA::TLB::MustBeOne"], [])
>
> header_output += newHeader
> decoder_output += newDecoder
> exec_output += newExec
>
243a278,287
> def buildSrsStores(mnem):
> buildSrsStore(mnem, True, True, True)
> buildSrsStore(mnem, True, True, False)
> buildSrsStore(mnem, True, False, True)
> buildSrsStore(mnem, True, False, False)
> buildSrsStore(mnem, False, True, True)
> buildSrsStore(mnem, False, True, False)
> buildSrsStore(mnem, False, False, True)
> buildSrsStore(mnem, False, False, False)
>
250a295,296
> buildSrsStores("srs")
>