2013-11-03 21:23:16 +02:00
|
|
|
#pragma once
|
2013-11-06 03:01:15 +02:00
|
|
|
#include "Emu/CPU/CPUThread.h"
|
2015-01-20 18:06:15 +03:00
|
|
|
#include "ARMv7Context.h"
|
2014-10-31 04:12:07 +03:00
|
|
|
|
2015-07-01 01:25:52 +03:00
|
|
|
class ARMv7Thread final : public CPUThread, public ARMv7Context
|
2013-11-03 21:23:16 +02:00
|
|
|
{
|
|
|
|
|
public:
|
2015-07-19 14:36:32 +03:00
|
|
|
std::function<void(ARMv7Thread&)> custom_task;
|
2013-11-03 21:23:16 +02:00
|
|
|
|
|
|
|
|
public:
|
2015-07-01 01:25:52 +03:00
|
|
|
ARMv7Thread(const std::string& name);
|
|
|
|
|
virtual ~ARMv7Thread() override;
|
|
|
|
|
|
2015-07-19 14:36:32 +03:00
|
|
|
virtual void dump_info() const override;
|
|
|
|
|
virtual u32 get_pc() const override { return PC; }
|
|
|
|
|
virtual u32 get_offset() const override { return 0; }
|
|
|
|
|
virtual void do_run() override;
|
|
|
|
|
virtual void task() override;
|
|
|
|
|
|
|
|
|
|
virtual void init_regs() override;
|
|
|
|
|
virtual void init_stack() override;
|
|
|
|
|
virtual void close_stack() override;
|
|
|
|
|
u32 get_stack_arg(u32 pos);
|
|
|
|
|
void fast_call(u32 addr);
|
|
|
|
|
void fast_stop();
|
2013-11-03 21:23:16 +02:00
|
|
|
|
2015-07-01 01:25:52 +03:00
|
|
|
virtual std::string RegsToString() const override;
|
|
|
|
|
virtual std::string ReadRegString(const std::string& reg) const override;
|
|
|
|
|
virtual bool WriteRegString(const std::string& reg, std::string value) override;
|
2014-11-06 18:29:14 +03:00
|
|
|
};
|
2015-02-01 16:52:34 +03:00
|
|
|
|
|
|
|
|
class armv7_thread : cpu_thread
|
2014-11-19 16:16:30 +02:00
|
|
|
{
|
2015-02-01 16:52:34 +03:00
|
|
|
u32 argv;
|
2014-11-19 16:16:30 +02:00
|
|
|
u32 argc;
|
|
|
|
|
|
|
|
|
|
public:
|
2015-02-03 00:00:05 +03:00
|
|
|
armv7_thread(u32 entry, const std::string& name, u32 stack_size, s32 prio);
|
2014-11-19 16:16:30 +02:00
|
|
|
|
2015-02-01 16:52:34 +03:00
|
|
|
cpu_thread& args(std::initializer_list<std::string> values) override;
|
2014-11-19 16:16:30 +02:00
|
|
|
|
2015-02-01 16:52:34 +03:00
|
|
|
cpu_thread& run() override;
|
2014-11-22 19:49:54 +03:00
|
|
|
};
|