mirror of
https://github.com/kanjitalk755/macemu.git
synced 2025-02-17 06:31:14 +00:00
- Cleanups & make sure PPC emulator config is setup in sysdeps.h
- Log r24 in SheepShaver mode as this represents the 68k emulator PC
This commit is contained in:
parent
be50ff1b42
commit
1012da75dd
@ -83,6 +83,9 @@
|
|||||||
**/
|
**/
|
||||||
|
|
||||||
#ifndef PPC_LAZY_PC_UPDATE
|
#ifndef PPC_LAZY_PC_UPDATE
|
||||||
|
#define PPC_LAZY_PC_UPDATE
|
||||||
|
#endif
|
||||||
|
#ifdef PPC_NO_LAZY_PC_UPDATE
|
||||||
#undef PPC_LAZY_PC_UPDATE
|
#undef PPC_LAZY_PC_UPDATE
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -124,7 +127,7 @@
|
|||||||
**/
|
**/
|
||||||
|
|
||||||
#ifndef PPC_NO_DECODE_CACHE
|
#ifndef PPC_NO_DECODE_CACHE
|
||||||
#define PPC_NO_DECODE_CACHE 1
|
#undef PPC_NO_DECODE_CACHE
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
@ -119,6 +119,9 @@ void powerpc_cpu::record_step(uint32 opcode)
|
|||||||
#if PPC_FLIGHT_RECORDER
|
#if PPC_FLIGHT_RECORDER
|
||||||
log[log_ptr].pc = pc();
|
log[log_ptr].pc = pc();
|
||||||
log[log_ptr].opcode = opcode;
|
log[log_ptr].opcode = opcode;
|
||||||
|
#ifdef SHEEPSHAVER
|
||||||
|
log[log_ptr].extra = gpr(24);
|
||||||
|
#endif
|
||||||
#if PPC_FLIGHT_RECORDER >= 2
|
#if PPC_FLIGHT_RECORDER >= 2
|
||||||
for (int i = 0; i < 32; i++) {
|
for (int i = 0; i < 32; i++) {
|
||||||
log[log_ptr].r[i] = gpr(i);
|
log[log_ptr].r[i] = gpr(i);
|
||||||
@ -168,7 +171,11 @@ void powerpc_cpu::dump_log(const char *filename)
|
|||||||
fprintf(f, "r28 %08x r29 %08x r30 %08x r31 %08x\n", log[j].r[28], log[j].r[29], log[j].r[30], log[j].r[31]);
|
fprintf(f, "r28 %08x r29 %08x r30 %08x r31 %08x\n", log[j].r[28], log[j].r[29], log[j].r[30], log[j].r[31]);
|
||||||
fprintf(f, "opcode %08x\n", log[j].opcode);
|
fprintf(f, "opcode %08x\n", log[j].opcode);
|
||||||
#else
|
#else
|
||||||
fprintf(f, " pc %08x opc %08x | ", log[j].pc, log[j].opcode);
|
fprintf(f, " pc %08x opc %08x", log[j].pc, log[j].opcode);
|
||||||
|
#ifdef SHEEPSHAVER
|
||||||
|
fprintf(f, " r24 %08x", log[j].extra);
|
||||||
|
#endif
|
||||||
|
fprintf(f, "| ");
|
||||||
#if !ENABLE_MON
|
#if !ENABLE_MON
|
||||||
fprintf(f, "\n");
|
fprintf(f, "\n");
|
||||||
#endif
|
#endif
|
||||||
|
@ -101,6 +101,7 @@ protected:
|
|||||||
#endif
|
#endif
|
||||||
uint32 pc;
|
uint32 pc;
|
||||||
uint32 opcode;
|
uint32 opcode;
|
||||||
|
uint32 extra;
|
||||||
};
|
};
|
||||||
|
|
||||||
// Instruction formats
|
// Instruction formats
|
||||||
@ -202,10 +203,12 @@ public:
|
|||||||
|
|
||||||
// Handle flight recorder
|
// Handle flight recorder
|
||||||
#if PPC_FLIGHT_RECORDER
|
#if PPC_FLIGHT_RECORDER
|
||||||
|
bool is_logging() { return logging; }
|
||||||
void start_log() { logging = true; }
|
void start_log() { logging = true; }
|
||||||
void stop_log() { logging = false; }
|
void stop_log() { logging = false; }
|
||||||
void dump_log(const char *filename = NULL);
|
void dump_log(const char *filename = NULL);
|
||||||
#else
|
#else
|
||||||
|
bool is_logging() { return false; }
|
||||||
void start_log() { }
|
void start_log() { }
|
||||||
void stop_log() { }
|
void stop_log() { }
|
||||||
void dump_log(const char *filename = NULL) { }
|
void dump_log(const char *filename = NULL) { }
|
||||||
|
@ -566,7 +566,7 @@ void powerpc_cpu::execute_loadstore_multiple(uint32 opcode)
|
|||||||
// FIXME: generate exception if ea is not word-aligned
|
// FIXME: generate exception if ea is not word-aligned
|
||||||
if ((ea & 3) != 0) {
|
if ((ea & 3) != 0) {
|
||||||
#ifdef SHEEPSHAVER
|
#ifdef SHEEPSHAVER
|
||||||
D(bug("unaligned EA load/store multiple\n"));
|
D(bug("unaligned load/store multiple to %08x\n", ea));
|
||||||
increment_pc(4);
|
increment_pc(4);
|
||||||
return;
|
return;
|
||||||
#else
|
#else
|
||||||
|
Loading…
x
Reference in New Issue
Block a user