31: decode IMM {
1: decode INTIMM {
// return EV5 for FULL_SYSTEM and EV6 otherwise
- 1: implver({{
-#if FULL_SYSTEM
- Rc = 1;
-#else
- Rc = 2;
-#endif
- }});
+ 1: implver({{ Rc = FULL_SYSTEM ? 1 : 2 }});
}
}
}
-#if FULL_SYSTEM
// The mysterious 11.25...
0x25: WarnUnimpl::eleven25();
-#endif
}
0x12: decode INTFUNC {
format BasicOperate {
0xc000: rpcc({{
-#if FULL_SYSTEM
- /* Rb is a fake dependency so here is a fun way to get
- * the parser to understand that.
- */
- Ra = xc->readMiscReg(IPR_CC) + (Rb & 0);
-
-#else
- Ra = curTick();
-#endif
+ /* Rb is a fake dependency so here is a fun way to get
+ * the parser to understand that.
+ */
+ uint64_t unused_var M5_VAR_USED = Rb;
+ Ra = FULL_SYSTEM ? xc->readMiscReg(IPR_CC) : curTick();
}}, IsUnverifiable);
// All of the barrier instructions below do nothing in
0x4400: wmb({{ }}, IsWriteBarrier, MemWriteOp);
}
-#if FULL_SYSTEM
- format BasicOperate {
- 0xe000: rc({{
+ 0xe000: decode FULL_SYSTEM {
+ 0: FailUnimpl::rc_se();
+ default: BasicOperate::rc({{
Ra = IntrFlag;
IntrFlag = 0;
}}, IsNonSpeculative, IsUnverifiable);
- 0xf000: rs({{
+ }
+ 0xf000: decode FULL_SYSTEM {
+ 0: FailUnimpl::rs_se();
+ default: BasicOperate::rs({{
Ra = IntrFlag;
IntrFlag = 1;
}}, IsNonSpeculative, IsUnverifiable);
}
-#else
- format FailUnimpl {
- 0xe000: rc();
- 0xf000: rs();
- }
-#endif
}
#if FULL_SYSTEM
/// instruction in full-system mode.
/// @retval Full-system mode: NoFault if FP is enabled, FenFault
/// if not. Non-full-system mode: always returns NoFault.
-#if FULL_SYSTEM
inline Fault checkFpEnableFault(%(CPU_exec_context)s *xc)
{
Fault fault = NoFault; // dummy... this ipr access should not fault
- if (!ICSR_FPE(xc->readMiscReg(IPR_ICSR))) {
+ if (FULL_SYSTEM && !ICSR_FPE(xc->readMiscReg(IPR_ICSR))) {
fault = new FloatEnableFault;
}
return fault;
}
-#else
- inline Fault checkFpEnableFault(%(CPU_exec_context)s *xc)
- {
- return NoFault;
- }
-#endif
}};
output header {{