mirror of
https://github.com/dingusdev/dingusppc.git
synced 2025-02-03 00:29:48 +00:00
Make the debugger a global object.
This commit is contained in:
parent
04899d6528
commit
f1e56cd353
@ -22,6 +22,7 @@ along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
#include <cpu/ppc/ppcdisasm.h>
|
||||
#include <cpu/ppc/ppcemu.h>
|
||||
#include <cpu/ppc/ppcmmu.h>
|
||||
#include <debugger/debugger.h>
|
||||
#include <devices/common/hwinterrupt.h>
|
||||
#include <devices/common/ofnvram.h>
|
||||
#include "memaccess.h"
|
||||
@ -445,7 +446,11 @@ static void delete_prompt() {
|
||||
#endif
|
||||
}
|
||||
|
||||
void enter_debugger() {
|
||||
DppcDebugger::DppcDebugger() {
|
||||
|
||||
}
|
||||
|
||||
void DppcDebugger::enter_debugger() {
|
||||
string inp, cmd, addr_str, expr_str, reg_expr, last_cmd, reg_value_str,
|
||||
inst_string, inst_num_str, profile_name, sub_cmd;
|
||||
uint32_t addr, inst_grab;
|
||||
|
@ -22,6 +22,22 @@ along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
#ifndef DEBUGGER_H_
|
||||
#define DEBUGGER_H_
|
||||
|
||||
void enter_debugger();
|
||||
#include <memory>
|
||||
|
||||
class DppcDebugger {
|
||||
public:
|
||||
static DppcDebugger* get_instance() {
|
||||
if (!debugger_obj) {
|
||||
debugger_obj = std::unique_ptr<DppcDebugger>(new DppcDebugger());
|
||||
}
|
||||
return debugger_obj.get();
|
||||
};
|
||||
|
||||
void enter_debugger();
|
||||
|
||||
private:
|
||||
inline static std::unique_ptr<DppcDebugger> debugger_obj{nullptr};
|
||||
explicit DppcDebugger(); // private constructor to implement a singleton
|
||||
};
|
||||
|
||||
#endif // DEBUGGER_H_
|
||||
|
8
main.cpp
8
main.cpp
@ -208,7 +208,7 @@ int main(int argc, char** argv) {
|
||||
// sent to the logfile only).
|
||||
cerr << message.preamble << message.indentation << message.prefix << message.message << endl;
|
||||
power_off_reason = po_enter_debugger;
|
||||
enter_debugger();
|
||||
DppcDebugger::get_instance()->enter_debugger();
|
||||
|
||||
// Ensure that NVRAM and other state is persisted before we terminate.
|
||||
delete gMachineObj.release();
|
||||
@ -282,15 +282,15 @@ void run_machine(std::string machine_str, std::string bootrom_path, uint32_t exe
|
||||
switch (execution_mode) {
|
||||
case interpreter:
|
||||
power_off_reason = po_starting_up;
|
||||
enter_debugger();
|
||||
DppcDebugger::get_instance()->enter_debugger();
|
||||
break;
|
||||
case threaded_int:
|
||||
power_off_reason = po_starting_up;
|
||||
enter_debugger();
|
||||
DppcDebugger::get_instance()->enter_debugger();
|
||||
break;
|
||||
case debugger:
|
||||
power_off_reason = po_enter_debugger;
|
||||
enter_debugger();
|
||||
DppcDebugger::get_instance()->enter_debugger();
|
||||
break;
|
||||
default:
|
||||
LOG_F(ERROR, "Invalid EXECUTION MODE");
|
||||
|
Loading…
x
Reference in New Issue
Block a user