summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/cpu/sparc/sparcdefs.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/cpu/sparc/sparcdefs.h')
-rw-r--r--src/devices/cpu/sparc/sparcdefs.h20
1 files changed, 11 insertions, 9 deletions
diff --git a/src/devices/cpu/sparc/sparcdefs.h b/src/devices/cpu/sparc/sparcdefs.h
index 20a90b6a1d7..66147c37780 100644
--- a/src/devices/cpu/sparc/sparcdefs.h
+++ b/src/devices/cpu/sparc/sparcdefs.h
@@ -85,6 +85,8 @@
#define WIM m_wim
#define TBR m_tbr
+#define NWINDOWS m_nwindows
+
#define OP_NS (op & 0xc0000000)
#define OP (op >> 30)
@@ -95,17 +97,17 @@
#define OPFLOW ((op >> 5) & 0x3f)
#define DISP30 (int32_t(op << 2))
-#define DISP22 (int32_t(op << 10) >> 8)
-#define DISP19 (int32_t(op << 13) >> 11)
-#define DISP16 (int32_t(((op << 10) & 0xc0000000) | ((op << 16) & 0x3fff0000)) >> 14)
+#define DISP22 util::sext(op << 2, 24)
+#define DISP19 util::sext(op << 2, 21)
+#define DISP16 util::sext((op & 0x300000) >> 4 | (op & 0x3fff) << 2, 18)
#define IMM22 (op << 10)
#define CONST22 (op & 0x3fffff)
-#define SIMM13 (int32_t(op << 19) >> 19)
-#define SIMM11 (int32_t(op << 21) >> 21)
-#define SIMM10 (int32_t(op << 22) >> 22)
-#define SIMM8 (int32_t(op << 24) >> 24)
+#define SIMM13 util::sext(op, 13)
+#define SIMM11 util::sext(op, 11)
+#define SIMM10 util::sext(op, 10)
+#define SIMM8 util::sext(op, 8)
#define IMM7 (op & 0x7f)
-#define SIMM7 (int32_t(op << 25) >> 25)
+#define SIMM7 util::sext(op, 7)
#define SHCNT32 (op & 31)
#define SHCNT64 (op & 63)
#define IAMODE (op & 0x7)
@@ -205,7 +207,6 @@
#define OP3_SDIVCC 31
#define OP3_TADDCC 32
#define OP3_TSUBCC 33
-#define OP3_SCAN 34
#define OP3_TADDCCTV 34
#define OP3_TSUBCCTV 35
#define OP3_MULSCC 36
@@ -216,6 +217,7 @@
#define OP3_RDPSR 41
#define OP3_RDWIM 42
#define OP3_RDTBR 43
+#define OP3_SCAN 44
#define OP3_WRASR 48
#define OP3_WRPSR 49
#define OP3_WRWIM 50