3c3
< // Copyright (c) 2010 ARM Limited
---
> // Copyright (c) 2010-2013 ARM Limited
94c94,95
< cpsrWriteByInstr(old_cpsr, Spsr, 0xF, true, sctlr.nmfi);
---
> cpsrWriteByInstr(old_cpsr, Spsr, Scr, Nsacr, 0xF, true,
> sctlr.nmfi, xc->tcBase());
161,162c162,163
< loadIops = (microLdrUopIop, microLdrRetUopIop,
< microLdrFpUopIop, microLdrDBFpUopIop, microLdrDTFpUopIop)
---
> loadIops = (microLdrUopIop, microLdrRetUopIop, microLdrFpUopIop,
> microLdrDBFpUopIop, microLdrDTFpUopIop)
181c182
< eaCode = 'EA = URa + imm;'
---
> eaCode = 'EA = XURa + imm;'
594a596,615
> microAddXiUopIop = InstObjParams('addxi_uop', 'MicroAddXiUop',
> 'MicroIntImmXOp',
> 'XURa = XURb + imm;',
> ['IsMicroop'])
>
> microAddXiSpAlignUopIop = InstObjParams('addxi_uop', 'MicroAddXiSpAlignUop',
> 'MicroIntImmXOp', '''
> if (isSP((IntRegIndex) urb) && bits(XURb, 3, 0) &&
> SPAlignmentCheckEnabled(xc->tcBase())) {
> return new SPAlignmentFault();
> }
> XURa = XURb + imm;
> ''', ['IsMicroop'])
>
> microAddXERegUopIop = InstObjParams('addxr_uop', 'MicroAddXERegUop',
> 'MicroIntRegXOp',
> 'XURa = XURb + ' + \
> 'extendReg64(XURc, type, shiftAmt, 64);',
> ['IsMicroop'])
>
606a628,632
> microSubXiUopIop = InstObjParams('subxi_uop', 'MicroSubXiUop',
> 'MicroIntImmXOp',
> 'XURa = XURb - imm;',
> ['IsMicroop'])
>
634,635c660,661
< cpsrWriteByInstr(cpsrOrCondCodes, URb,
< 0xF, true, sctlr.nmfi);
---
> cpsrWriteByInstr(cpsrOrCondCodes, URb, Scr, Nsacr,
> 0xF, true, sctlr.nmfi, xc->tcBase());
653a680,681
> MicroIntImmDeclare.subst(microAddXiUopIop) + \
> MicroIntImmDeclare.subst(microAddXiSpAlignUopIop) + \
654a683
> MicroIntImmDeclare.subst(microSubXiUopIop) + \
656a686
> MicroIntXERegDeclare.subst(microAddXERegUopIop) + \
661a692,693
> MicroIntImmXConstructor.subst(microAddXiUopIop) + \
> MicroIntImmXConstructor.subst(microAddXiSpAlignUopIop) + \
662a695
> MicroIntImmXConstructor.subst(microSubXiUopIop) + \
664a698
> MicroIntXERegConstructor.subst(microAddXERegUopIop) + \
669a704,705
> BasicExecute.subst(microAddXiUopIop) + \
> BasicExecute.subst(microAddXiSpAlignUopIop) + \
670a707
> BasicExecute.subst(microSubXiUopIop) + \
672a710
> BasicExecute.subst(microAddXERegUopIop) + \
683a722,740
> iop = InstObjParams("ldpstp", "LdpStp", 'PairMemOp', "", [])
> header_output += PairMemDeclare.subst(iop)
> decoder_output += PairMemConstructor.subst(iop)
>
> iopImm = InstObjParams("bigfpmemimm", "BigFpMemImm", "BigFpMemImmOp", "")
> iopPre = InstObjParams("bigfpmempre", "BigFpMemPre", "BigFpMemPreOp", "")
> iopPost = InstObjParams("bigfpmempost", "BigFpMemPost", "BigFpMemPostOp", "")
> for iop in (iopImm, iopPre, iopPost):
> header_output += BigFpMemImmDeclare.subst(iop)
> decoder_output += BigFpMemImmConstructor.subst(iop)
>
> iop = InstObjParams("bigfpmemreg", "BigFpMemReg", "BigFpMemRegOp", "")
> header_output += BigFpMemRegDeclare.subst(iop)
> decoder_output += BigFpMemRegConstructor.subst(iop)
>
> iop = InstObjParams("bigfpmemlit", "BigFpMemLit", "BigFpMemLitOp", "")
> header_output += BigFpMemLitDeclare.subst(iop)
> decoder_output += BigFpMemLitConstructor.subst(iop)
>