summaryrefslogtreecommitdiff
path: root/src/arch/arm/isa/decoder
diff options
context:
space:
mode:
authorGabe Black <gblack@eecs.umich.edu>2010-06-02 12:58:17 -0500
committerGabe Black <gblack@eecs.umich.edu>2010-06-02 12:58:17 -0500
commit22d1a84509dec6544bd91e63597b1b2274c590cc (patch)
treebd525d9bee85a3732a3ab31b8d6c7dd8f801cf4a /src/arch/arm/isa/decoder
parent0e556e9dfbd9a3b3f06a023d4edf3b3678fd0a40 (diff)
downloadgem5-22d1a84509dec6544bd91e63597b1b2274c590cc.tar.xz
ARM: Move some miscellaneous instructions out of the decoder to share with thumb.
Diffstat (limited to 'src/arch/arm/isa/decoder')
-rw-r--r--src/arch/arm/isa/decoder/arm.isa43
1 files changed, 1 insertions, 42 deletions
diff --git a/src/arch/arm/isa/decoder/arm.isa b/src/arch/arm/isa/decoder/arm.isa
index 49f70e5e4..29ec46f9b 100644
--- a/src/arch/arm/isa/decoder/arm.isa
+++ b/src/arch/arm/isa/decoder/arm.isa
@@ -81,48 +81,7 @@ format DataOp {
}
0x1: decode IS_MISC {
0: ArmDataProcImm::armDataProcImm();
- 1: decode OPCODE {
- // The following two instructions aren't supposed to be defined
- 0x8: DataOp::movw({{ Rd = IMMED_11_0 | (RN << 12) ; }});
- 0x9: decode RN {
- 0: decode IMM {
- 0: PredImmOp::nop({{ ; }});
-#if FULL_SYSTEM
- 1: PredImmOp::yield({{ ; }});
- 2: PredImmOp::wfe({{
- if (SevMailbox)
- SevMailbox = 0;
- else
- PseudoInst::quiesce(xc->tcBase());
- }}, IsNonSpeculative, IsQuiesce);
- 3: PredImmOp::wfi({{
- PseudoInst::quiesce(xc->tcBase());
- }}, IsNonSpeculative, IsQuiesce);
- 4: PredImmOp::sev({{
- // Need a way for O3 to not scoreboard these
- // accesses as pipeflushs
- System *sys = xc->tcBase()->getSystemPtr();
- for (int x = 0; x < sys->numContexts(); x++) {
- ThreadContext *oc = sys->getThreadContext(x);
- oc->setMiscReg(MISCREG_SEV_MAILBOX, 1);
- }
- }});
-#endif
- }
- default: PredImmOp::msr_i_cpsr({{
- SCTLR sctlr = Sctlr;
- uint32_t newCpsr =
- cpsrWriteByInstr(Cpsr | CondCodes,
- rotated_imm, RN, false, sctlr.nmfi);
- Cpsr = ~CondCodesMask & newCpsr;
- CondCodes = CondCodesMask & newCpsr;
- }});
- }
- 0xa: PredOp::movt({{ Rd = IMMED_11_0 << 16 | RN << 28 | Rd<15:0>; }});
- 0xb: PredImmOp::msr_i_spsr({{
- Spsr = spsrWriteByInstr(Spsr, rotated_imm, RN, false);
- }});
- }
+ 1: ArmMisc::armMisc();
}
0x2: AddrMode2::addrMode2(True);
0x3: decode OPCODE_4 {