summaryrefslogtreecommitdiff
path: root/src/arch
diff options
context:
space:
mode:
Diffstat (limited to 'src/arch')
-rw-r--r--src/arch/alpha/utility.hh6
-rw-r--r--src/arch/sparc/utility.hh8
2 files changed, 14 insertions, 0 deletions
diff --git a/src/arch/alpha/utility.hh b/src/arch/alpha/utility.hh
index cb86c7e9e..100736555 100644
--- a/src/arch/alpha/utility.hh
+++ b/src/arch/alpha/utility.hh
@@ -42,6 +42,12 @@
namespace AlphaISA
{
+ static inline bool
+ inUserMode(ThreadContext *tc)
+ {
+ return (tc->readMiscReg(AlphaISA::IPR_DTB_CM) & 0x18) != 0;
+ }
+
static inline ExtMachInst
makeExtMI(MachInst inst, Addr pc) {
#if FULL_SYSTEM
diff --git a/src/arch/sparc/utility.hh b/src/arch/sparc/utility.hh
index e2b0b2307..e51677cdf 100644
--- a/src/arch/sparc/utility.hh
+++ b/src/arch/sparc/utility.hh
@@ -39,6 +39,14 @@
namespace SparcISA
{
+
+ static inline bool
+ inUserMode(ThreadContext *tc)
+ {
+ return !(tc->readMiscReg(MISCREG_PSTATE & (1 << 2)) ||
+ tc->readMiscReg(MISCREG_HPSTATE & (1 << 2)));
+ }
+
inline ExtMachInst
makeExtMI(MachInst inst, ThreadContext * xc) {
ExtMachInst emi = (unsigned MachInst) inst;