summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/cpu/sparc/sparc.h
diff options
context:
space:
mode:
author therealmogminer@gmail.com <therealmogminer@gmail.com>2016-07-05 01:56:25 +0200
committer therealmogminer@gmail.com <therealmogminer@gmail.com>2016-07-05 01:56:25 +0200
commit070a7b5a5640667e0a765b6575ddc5f3bff687c3 (patch)
treed01d8a9584b01a0602b7833de75908500c5c6ed3 /src/devices/cpu/sparc/sparc.h
parent047d5055926d57a905a9ff2c8c2fb264839d5da6 (diff)
Fix some SPARC issues
Diffstat (limited to 'src/devices/cpu/sparc/sparc.h')
-rw-r--r--src/devices/cpu/sparc/sparc.h51
1 files changed, 41 insertions, 10 deletions
diff --git a/src/devices/cpu/sparc/sparc.h b/src/devices/cpu/sparc/sparc.h
index da2d0bc7c82..39b7e0b0e59 100644
--- a/src/devices/cpu/sparc/sparc.h
+++ b/src/devices/cpu/sparc/sparc.h
@@ -11,7 +11,12 @@
#include "sparcdasm.h"
-#define SPARCV8 (0)
+#define SPARCV8 (0)
+#define LOG_FCODES (0)
+
+#if LOG_FCODES
+#include <map>
+#endif
#define SPARC_NO_TRAP 256
#define SPARC_RESET 0
@@ -78,11 +83,6 @@ public:
UINT8 get_asi() { return m_asi; }
UINT32 pc() { return m_pc; }
- void trap(UINT8 type, UINT8 tt_override = 0);
- void set_mae() { m_mae = true; }
- void hold_bus() { m_hold_bus = true; }
- void release_bus() { m_hold_bus = false; }
-
template<typename T> static void add_asi_desc(device_t &device, const T &desc) { return downcast<mb86901_device &>(device).add_asi_desc(desc); }
protected:
@@ -130,6 +130,11 @@ protected:
void reset_step();
void error_step();
+#if LOG_FCODES
+ void indent();
+ void disassemble_ss1_fcode(UINT32 r5, UINT32 opcode, UINT32 handler_base, UINT32 entry_point, UINT32 stack);
+#endif
+
// address spaces
const address_space_config m_program_config;
@@ -167,6 +172,7 @@ protected:
bool m_pb_error;
bool m_pb_block_ldst_byte;
bool m_pb_block_ldst_word;
+ UINT16 m_irq_state;
// trap and error registers
bool m_trap;
@@ -235,6 +241,15 @@ protected:
// address spaces
address_space *m_program;
+#if LOG_FCODES
+ UINT32 m_ss1_next_pc;
+ UINT32 m_ss1_next_opcode;
+ UINT32 m_ss1_next_handler_base;
+ UINT32 m_ss1_next_entry_point;
+ UINT32 m_ss1_next_stack;
+ std::map<UINT16, std::string> m_ss1_fcode_table;
+#endif
+
// processor configuration
static const int NWINDOWS;
};
@@ -242,10 +257,6 @@ protected:
// device type definition
extern const device_type MB86901;
-/***************************************************************************
- REGISTER ENUMERATION
-***************************************************************************/
-
enum
{
SPARC_PC = 1,
@@ -280,4 +291,24 @@ enum
SPARC_R96, SPARC_R97, SPARC_R98, SPARC_R99, SPARC_R100, SPARC_R101, SPARC_R102, SPARC_R103, SPARC_R104, SPARC_R105, SPARC_R106, SPARC_R107, SPARC_R108, SPARC_R109, SPARC_R110, SPARC_R111
};
+enum
+{
+ SPARC_IRQ1,
+ SPARC_IRQ2,
+ SPARC_IRQ3,
+ SPARC_IRQ4,
+ SPARC_IRQ5,
+ SPARC_IRQ6,
+ SPARC_IRQ7,
+ SPARC_IRQ8,
+ SPARC_IRQ9,
+ SPARC_IRQ10,
+ SPARC_IRQ11,
+ SPARC_IRQ12,
+ SPARC_IRQ13,
+ SPARC_IRQ14,
+ SPARC_NMI,
+ SPARC_MAE
+};
+
#endif /* __SPARC_H__ */