arm.isa (7407:70f65d4c7fe3) arm.isa (7418:e81194228b6e)
1// -*- mode:c++ -*-
2
3// Copyright (c) 2010 ARM Limited
4// All rights reserved
5//
6// The license below extends only to copyright in the software and shall
7// not be construed as granting a license to any other intellectual
8// property including but not limited to intellectual property relating

--- 67 unchanged lines hidden (view full) ---

76 0x7: Breakpoint::bkpt();
77 }
78 0x1: ArmHalfWordMultAndMultAcc::armHalfWordMultAndMultAcc();
79 }
80 }
81 }
82 0x1: decode IS_MISC {
83 0: ArmDataProcImm::armDataProcImm();
1// -*- mode:c++ -*-
2
3// Copyright (c) 2010 ARM Limited
4// All rights reserved
5//
6// The license below extends only to copyright in the software and shall
7// not be construed as granting a license to any other intellectual
8// property including but not limited to intellectual property relating

--- 67 unchanged lines hidden (view full) ---

76 0x7: Breakpoint::bkpt();
77 }
78 0x1: ArmHalfWordMultAndMultAcc::armHalfWordMultAndMultAcc();
79 }
80 }
81 }
82 0x1: decode IS_MISC {
83 0: ArmDataProcImm::armDataProcImm();
84 1: decode OPCODE {
85 // The following two instructions aren't supposed to be defined
86 0x8: DataOp::movw({{ Rd = IMMED_11_0 | (RN << 12) ; }});
87 0x9: decode RN {
88 0: decode IMM {
89 0: PredImmOp::nop({{ ; }});
90#if FULL_SYSTEM
91 1: PredImmOp::yield({{ ; }});
92 2: PredImmOp::wfe({{
93 if (SevMailbox)
94 SevMailbox = 0;
95 else
96 PseudoInst::quiesce(xc->tcBase());
97 }}, IsNonSpeculative, IsQuiesce);
98 3: PredImmOp::wfi({{
99 PseudoInst::quiesce(xc->tcBase());
100 }}, IsNonSpeculative, IsQuiesce);
101 4: PredImmOp::sev({{
102 // Need a way for O3 to not scoreboard these
103 // accesses as pipeflushs
104 System *sys = xc->tcBase()->getSystemPtr();
105 for (int x = 0; x < sys->numContexts(); x++) {
106 ThreadContext *oc = sys->getThreadContext(x);
107 oc->setMiscReg(MISCREG_SEV_MAILBOX, 1);
108 }
109 }});
110#endif
111 }
112 default: PredImmOp::msr_i_cpsr({{
113 SCTLR sctlr = Sctlr;
114 uint32_t newCpsr =
115 cpsrWriteByInstr(Cpsr | CondCodes,
116 rotated_imm, RN, false, sctlr.nmfi);
117 Cpsr = ~CondCodesMask & newCpsr;
118 CondCodes = CondCodesMask & newCpsr;
119 }});
120 }
121 0xa: PredOp::movt({{ Rd = IMMED_11_0 << 16 | RN << 28 | Rd<15:0>; }});
122 0xb: PredImmOp::msr_i_spsr({{
123 Spsr = spsrWriteByInstr(Spsr, rotated_imm, RN, false);
124 }});
125 }
84 1: ArmMisc::armMisc();
126 }
127 0x2: AddrMode2::addrMode2(True);
128 0x3: decode OPCODE_4 {
129 0: AddrMode2::addrMode2(False);
130 1: decode OPCODE_24_23 {
131 0x0: ArmParallelAddSubtract::armParallelAddSubtract();
132 0x1: ArmPackUnpackSatReverse::armPackUnpackSatReverse();
133 0x2: ArmSignedMultiplies::armSignedMultiplies();

--- 29 unchanged lines hidden ---
85 }
86 0x2: AddrMode2::addrMode2(True);
87 0x3: decode OPCODE_4 {
88 0: AddrMode2::addrMode2(False);
89 1: decode OPCODE_24_23 {
90 0x0: ArmParallelAddSubtract::armParallelAddSubtract();
91 0x1: ArmPackUnpackSatReverse::armPackUnpackSatReverse();
92 0x2: ArmSignedMultiplies::armSignedMultiplies();

--- 29 unchanged lines hidden ---