diff options
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 |
commit | 070a7b5a5640667e0a765b6575ddc5f3bff687c3 (patch) | |
tree | d01d8a9584b01a0602b7833de75908500c5c6ed3 /src/devices/cpu/sparc/sparc.h | |
parent | 047d5055926d57a905a9ff2c8c2fb264839d5da6 (diff) |
Fix some SPARC issues
Diffstat (limited to 'src/devices/cpu/sparc/sparc.h')
-rw-r--r-- | src/devices/cpu/sparc/sparc.h | 51 |
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__ */ |