ARM: Fix RFE macrop.
authorMatt Horsnell <Matt.Horsnell@arm.com>
Fri, 18 Mar 2011 00:20:19 +0000 (19:20 -0500)
committerMatt Horsnell <Matt.Horsnell@arm.com>
Fri, 18 Mar 2011 00:20:19 +0000 (19:20 -0500)
commit031f396c71e750fede19651ba3a14e262a87e117
treebfd6520d87f36775200aff930b632bfe3c80af1e
parente65f480d62e0112e89af6130e2f2024d89417df0
ARM: Fix RFE macrop.

This changes the RFE macroop into 3 microops:

URa = [sp]; URb = [sp+4]; // load CPSR,PC values from stack
sp = sp + offset;         // optionally auto-increment
PC = URa; CPSR = URb;     // write to the PC and CPSR.

Importantly:
- writing to PC is handled in the last micro-op.
- loading occurs prior to state changes.
src/arch/arm/insts/macromem.cc
src/arch/arm/insts/macromem.hh
src/arch/arm/insts/mem.hh
src/arch/arm/intregs.hh
src/arch/arm/isa/insts/ldr.isa
src/arch/arm/isa/insts/macromem.isa
src/arch/arm/isa/insts/mem.isa
src/arch/arm/isa/templates/macromem.isa
src/arch/arm/isa/templates/mem.isa