diff options
Diffstat (limited to 'src/devices/cpu/sparc/sparcdefs.h')
-rw-r--r-- | src/devices/cpu/sparc/sparcdefs.h | 20 |
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 |