summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/cpu/sparc
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/cpu/sparc')
-rw-r--r--src/devices/cpu/sparc/sparc.cpp26
-rw-r--r--src/devices/cpu/sparc/sparc.h31
-rw-r--r--src/devices/cpu/sparc/sparcdasm.h6
-rw-r--r--src/devices/cpu/sparc/sparcdefs.h8
4 files changed, 31 insertions, 40 deletions
diff --git a/src/devices/cpu/sparc/sparc.cpp b/src/devices/cpu/sparc/sparc.cpp
index 8717d56e22e..9bdd1bfbad5 100644
--- a/src/devices/cpu/sparc/sparc.cpp
+++ b/src/devices/cpu/sparc/sparc.cpp
@@ -1211,17 +1211,6 @@ uint32_t sparc_base_device::execute_max_cycles() const noexcept
//-------------------------------------------------
-// execute_input_lines - return the number of
-// input/interrupt lines
-//-------------------------------------------------
-
-uint32_t sparc_base_device::execute_input_lines() const noexcept
-{
- return 16;
-}
-
-
-//-------------------------------------------------
// execute_set_input - set the state of an input
// line during execution
//-------------------------------------------------
@@ -4291,13 +4280,13 @@ void sparcv8_device::execute_mul(uint32_t op)
uint32_t result = 0;
if (UMUL || UMULCC)
{
- uint64_t dresult = (uint64_t)RS1REG * (uint64_t)operand2;
+ uint64_t dresult = mulu_32x32(RS1REG, operand2);
Y = (uint32_t)(dresult >> 32);
result = (uint32_t)dresult;
}
else if (SMUL || SMULCC)
{
- int64_t dresult = (int64_t)(int32_t)RS1REG * (int64_t)(int32_t)operand2;
+ int64_t dresult = mul_32x32(RS1REG, operand2);
Y = (uint32_t)(dresult >> 32);
result = (uint32_t)dresult;
}
@@ -4482,19 +4471,22 @@ void sparc_base_device::run_loop()
continue;
}*/
- if (CHECK_DEBUG)
- debugger_instruction_hook(PC);
-
if (MODE == MODE_RESET)
{
+ if (CHECK_DEBUG)
+ debugger_wait_hook();
reset_step();
}
else if (MODE == MODE_ERROR)
{
+ if (CHECK_DEBUG)
+ debugger_wait_hook();
error_step();
}
else if (MODE == MODE_EXECUTE)
{
+ if (CHECK_DEBUG)
+ debugger_instruction_hook(PC);
execute_step();
}
@@ -4518,7 +4510,7 @@ void sparc_base_device::run_loop()
void sparc_base_device::execute_run()
{
- bool debug = machine().debug_flags & DEBUG_FLAG_ENABLED;
+ const bool debug = debugger_enabled();
if (m_bp_reset_in)
{
diff --git a/src/devices/cpu/sparc/sparc.h b/src/devices/cpu/sparc/sparc.h
index 5a3e1bd4c2d..f61ddb30e5e 100644
--- a/src/devices/cpu/sparc/sparc.h
+++ b/src/devices/cpu/sparc/sparc.h
@@ -26,15 +26,14 @@ public:
template <typename T> void set_mmu(T &&tag) { m_mmu.set_tag(std::forward<T>(tag)); }
// device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
+ virtual void device_start() override ATTR_COLD;
+ virtual void device_reset() override ATTR_COLD;
virtual void device_post_load() override;
- virtual void device_resolve_objects() override;
+ virtual void device_resolve_objects() override ATTR_COLD;
// device_execute_interface overrides
virtual uint32_t execute_min_cycles() const noexcept override;
virtual uint32_t execute_max_cycles() const noexcept override;
- virtual uint32_t execute_input_lines() const noexcept override;
virtual void execute_run() override;
virtual void execute_set_input(int inputnum, int state) override;
@@ -296,8 +295,8 @@ public:
protected:
sparcv8_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
- virtual void device_start() override;
- virtual void device_reset() override;
+ virtual void device_start() override ATTR_COLD;
+ virtual void device_reset() override ATTR_COLD;
virtual bool execute_extra_group2(uint32_t op) override;
virtual bool execute_extra_group3(uint32_t op) override;
@@ -340,8 +339,8 @@ public:
protected:
// device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
+ virtual void device_start() override ATTR_COLD;
+ virtual void device_reset() override ATTR_COLD;
virtual void device_post_load() override;
virtual bool execute_extra_group2(uint32_t op) override;
@@ -398,14 +397,14 @@ protected:
u32 dcache_data_r(offs_t offset, u32 mem_mask);
void dcache_data_w(offs_t offset, u32 data, u32 mem_mask);
- void control_map(address_map &map);
- void icache_lock_map(address_map &map);
- void dcache_lock_map(address_map &map);
- template <uint8_t Asi> void mmu_map(address_map &map);
- void icache_tag_map(address_map &map);
- void icache_data_map(address_map &map);
- void dcache_tag_map(address_map &map);
- void dcache_data_map(address_map &map);
+ void control_map(address_map &map) ATTR_COLD;
+ void icache_lock_map(address_map &map) ATTR_COLD;
+ void dcache_lock_map(address_map &map) ATTR_COLD;
+ template <uint8_t Asi> void mmu_map(address_map &map) ATTR_COLD;
+ void icache_tag_map(address_map &map) ATTR_COLD;
+ void icache_data_map(address_map &map) ATTR_COLD;
+ void dcache_tag_map(address_map &map) ATTR_COLD;
+ void dcache_data_map(address_map &map) ATTR_COLD;
void update_addr_masks();
void update_wait_states();
diff --git a/src/devices/cpu/sparc/sparcdasm.h b/src/devices/cpu/sparc/sparcdasm.h
index 91a22df173a..b92a2c283a3 100644
--- a/src/devices/cpu/sparc/sparcdasm.h
+++ b/src/devices/cpu/sparc/sparcdasm.h
@@ -4,8 +4,8 @@
SPARC disassembler
*/
-#ifndef MAME_DEVICES_CPU_SPARC_SPARC_DASM_H
-#define MAME_DEVICES_CPU_SPARC_SPARC_DASM_H
+#ifndef MAME_CPU_SPARC_SPARCDASM_H
+#define MAME_CPU_SPARC_SPARCDASM_H
#pragma once
@@ -255,4 +255,4 @@ private:
vis_op_desc_map m_vis_op_desc;
};
-#endif // MAME_DEVICES_CPU_SPARC_SPARC_DASM_H
+#endif // MAME_CPU_SPARC_SPARCDASM_H
diff --git a/src/devices/cpu/sparc/sparcdefs.h b/src/devices/cpu/sparc/sparcdefs.h
index 66147c37780..19784b173a7 100644
--- a/src/devices/cpu/sparc/sparcdefs.h
+++ b/src/devices/cpu/sparc/sparcdefs.h
@@ -7,10 +7,10 @@
//
//================================================================
-#pragma once
+#ifndef MAME_CPU_SPARC_SPARCDEFS_H
+#define MAME_CPU_SPARC_SPARCDEFS_H
-#ifndef CPU_SPARC_SPARC_DEFS_H
-#define CPU_SPARC_SPARC_DEFS_H
+#pragma once
#define PSR_CWP_MASK 0x0000001f
#define PSR_ET_SHIFT 5
@@ -485,4 +485,4 @@
#define FPOP_FCMPED 0x056
#define FPOP_FCMPEX 0x057
-#endif // CPU_SPARC_SPARC_DEFS_H
+#endif // MAME_CPU_SPARC_SPARCDEFS_H