#ifdef WITH_PPC
if (regs.halted < 0) {
- uae_ppc_execute_quick();
+ if (is_syncline == 1) {
+ uae_ppc_execute_quick(0);
+ } else {
+ uae_ppc_execute_quick(1);
+ pissoff = pissoff_value;
+ }
} else {
#endif
#ifdef WITH_PPC
if (regs.halted < 0) {
- if (v < -vsynctimebase / 20)
- uae_ppc_execute_quick();
+ uae_ppc_execute_quick(0);
} else {
#endif
void uae_ppc_hsync_handler(void);
void uae_ppc_wakeup(void);
-void uae_ppc_execute_quick(void);
+void uae_ppc_execute_quick(int linetype);
void uae_ppc_spinlock_reset(void);
void uae_ppc_spinlock_get(void);
void uae_ppc_spinlock_release(void);
#include "uae/ppc.h"
-#define PPC_DEBUG_ADDR_FROM 0xf00000
-#define PPC_DEBUG_ADDR_TO 0xf40000
+#define PPC_SYNC_WRITE 0
+#define PPC_ACCESS_LOG 0
+
+#define PPC_DEBUG_ADDR_FROM 0x000000
+#define PPC_DEBUG_ADDR_TO 0xffffff
#ifdef WITH_PEARPC_CPU
#include "pearpc/cpu/cpu.h"
#include "pearpc/cpu/cpu_generic/ppc_cpu.h"
#endif
-#define PPC_SYNC_WRITE 0
-#define PPC_ACCESS_LOG 0
-
#define TRACE(format, ...) write_log(_T("PPC: ---------------- ") format, ## __VA_ARGS__)
return true;
}
-void uae_ppc_execute_quick(void)
+void uae_ppc_execute_quick(int linetype)
{
- uae_ppc_spinlock_release();
- sleep_millis(1);
- uae_ppc_spinlock_get();
+ if (linetype == 0) {
+ for (int i = 0; i < 2; i++) {
+ uae_ppc_spinlock_release();
+ uae_ppc_spinlock_get();
+ }
+ } else {
+ uae_ppc_spinlock_release();
+ sleep_millis(1);
+ uae_ppc_spinlock_get();
+ }
}
void uae_ppc_emulate(void)
g_ppc_cpu_run_single(10);
}
-static bool ppc_safe_addr(uaecptr addr)
-{
- if (addr >= 0x08000000 && addr < 0x10000000)
- return true;
- return false;
-}
-
bool uae_ppc_poll_queue(void)
{
if (!ppc_io_pipe)
#if PPC_ACCESS_LOG > 0
if (!ppc_io_pipe && !valid_address(addr, size)) {
- if (addr >= PPC_DEBUG_ADDR_FROM && addr < PPC_DEBUG_ADDR_TO)
+ if (addr >= PPC_DEBUG_ADDR_FROM && addr < PPC_DEBUG_ADDR_TO && addr != 0xdff006)
write_log(_T("PPC io read %08x=%08x %d\n"), addr, v, size);
}
#endif