summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/cpu/mips/r4000.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/cpu/mips/r4000.h')
-rw-r--r--src/devices/cpu/mips/r4000.h18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/devices/cpu/mips/r4000.h b/src/devices/cpu/mips/r4000.h
index f349c6c6752..ed4b5efa58b 100644
--- a/src/devices/cpu/mips/r4000.h
+++ b/src/devices/cpu/mips/r4000.h
@@ -9,6 +9,7 @@
DECLARE_DEVICE_TYPE(R4000, r4000_device)
DECLARE_DEVICE_TYPE(R4400, r4400_device)
DECLARE_DEVICE_TYPE(R4600, r4600_device)
+DECLARE_DEVICE_TYPE(R5000, r5000_device)
class r4000_base_device : public cpu_device
{
@@ -326,6 +327,7 @@ protected:
virtual void execute_set_input(int inputnum, int state) override;
// cpu implementation
+ virtual void handle_reserved_instruction(u32 const op);
void cpu_execute(u32 const op);
void cpu_exception(u32 exception, u16 const vector = 0x180);
void cpu_lwl(u32 const op);
@@ -355,6 +357,7 @@ protected:
void cp1_unimplemented();
template <typename T> bool cp1_op(T op);
void cp1_execute(u32 const op);
+ virtual void cp1x_execute(u32 const op);
template <typename T> void cp1_set(unsigned const reg, T const data);
// cp2 implementation
@@ -470,4 +473,19 @@ public:
m_cp0[CP0_Config] |= CONFIG_SC;
}
};
+
+class r5000_device : public r4000_base_device
+{
+public:
+ r5000_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
+ : r4000_base_device(mconfig, R5000, tag, owner, clock, 0x2320, 0x2320, CACHE_32K, CACHE_32K)
+ {
+ // no secondary cache
+ m_cp0[CP0_Config] |= CONFIG_SC;
+ }
+
+private:
+ virtual void handle_reserved_instruction(u32 const op) override;
+ virtual void cp1x_execute(u32 const op) override;
+};
#endif // MAME_CPU_MIPS_R4000_H