arch-arm: Add initial support for SVE contiguous loads/stores
[gem5.git] / src / arch / sparc / utility.hh
index 76b551ac86460a3d71e3660e630a3e061726cd9a..ae579969950243c03939a538e15a619f72ae9b09 100644 (file)
 #include "arch/sparc/registers.hh"
 #include "arch/sparc/tlb.hh"
 #include "base/bitfield.hh"
-#include "base/misc.hh"
+#include "base/logging.hh"
 #include "cpu/static_inst.hh"
 #include "cpu/thread_context.hh"
-#include "sim/fault_fwd.hh"
+#include "sim/full_system.hh"
 
 namespace SparcISA
 {
@@ -57,8 +57,9 @@ uint64_t getArgument(ThreadContext *tc, int &number, uint16_t size, bool fp);
 static inline bool
 inUserMode(ThreadContext *tc)
 {
-    return !((tc->readMiscRegNoEffect(MISCREG_PSTATE) & (1 << 2)) ||
-             (tc->readMiscRegNoEffect(MISCREG_HPSTATE) & (1 << 2)));
+    PSTATE pstate = tc->readMiscRegNoEffect(MISCREG_PSTATE);
+    HPSTATE hpstate = tc->readMiscRegNoEffect(MISCREG_HPSTATE);
+    return !(pstate.priv || hpstate.hpriv);
 }
 
 /**
@@ -73,13 +74,9 @@ void initCPU(ThreadContext *tc, int cpuId);
 inline void
 startupCPU(ThreadContext *tc, int cpuId)
 {
-#if FULL_SYSTEM
     // Other CPUs will get activated by IPIs
-    if (cpuId == 0)
-        tc->activate(0);
-#else
-    tc->activate(0);
-#endif
+    if (cpuId == 0 || !FullSystem)
+        tc->activate();
 }
 
 void copyRegs(ThreadContext *src, ThreadContext *dest);
@@ -89,7 +86,7 @@ void copyMiscRegs(ThreadContext *src, ThreadContext *dest);
 void skipFunction(ThreadContext *tc);
 
 inline void
-advancePC(PCState &pc, const StaticInstPtr inst)
+advancePC(PCState &pc, const StaticInstPtr &inst)
 {
     inst->advancePC(pc);
 }