mirror of
https://github.com/kanjitalk755/macemu.git
synced 2025-01-12 01:30:03 +00:00
Fix ASYNC_IRQ build but locks may still happen. Note that with a predecode
cache, checking for pending interrupts may not be the bottle neck nowadays.
This commit is contained in:
parent
60d34a6816
commit
9ce43c6cf3
@ -78,7 +78,7 @@
|
|||||||
# define ROM_IS_WRITE_PROTECTED 1
|
# define ROM_IS_WRITE_PROTECTED 1
|
||||||
#endif
|
#endif
|
||||||
// Configure PowerPC emulator
|
// Configure PowerPC emulator
|
||||||
#define PPC_CHECK_INTERRUPTS 1
|
#define PPC_CHECK_INTERRUPTS (ASYNC_IRQ ? 0 : 1)
|
||||||
#define PPC_NO_LAZY_PC_UPDATE 1
|
#define PPC_NO_LAZY_PC_UPDATE 1
|
||||||
//#define PPC_NO_DECODE_CACHE 1
|
//#define PPC_NO_DECODE_CACHE 1
|
||||||
#define PPC_FLIGHT_RECORDER 1
|
#define PPC_FLIGHT_RECORDER 1
|
||||||
|
@ -586,7 +586,12 @@ void emul_ppc(uint32 entry)
|
|||||||
* Handle PowerPC interrupt
|
* Handle PowerPC interrupt
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#if !ASYNC_IRQ
|
#if ASYNC_IRQ
|
||||||
|
void HandleInterrupt(void)
|
||||||
|
{
|
||||||
|
main_cpu->handle_interrupt();
|
||||||
|
}
|
||||||
|
#else
|
||||||
void TriggerInterrupt(void)
|
void TriggerInterrupt(void)
|
||||||
{
|
{
|
||||||
#if 0
|
#if 0
|
||||||
|
@ -235,8 +235,6 @@ protected:
|
|||||||
};
|
};
|
||||||
#if PPC_CHECK_INTERRUPTS
|
#if PPC_CHECK_INTERRUPTS
|
||||||
int pending_interrupts;
|
int pending_interrupts;
|
||||||
#else
|
|
||||||
static const int pending_interrupts = 0;
|
|
||||||
#endif
|
#endif
|
||||||
public:
|
public:
|
||||||
void check_pending_interrupts();
|
void check_pending_interrupts();
|
||||||
@ -371,6 +369,7 @@ inline void powerpc_cpu::trigger_interrupt()
|
|||||||
|
|
||||||
inline void powerpc_cpu::check_pending_interrupts()
|
inline void powerpc_cpu::check_pending_interrupts()
|
||||||
{
|
{
|
||||||
|
#if PPC_CHECK_INTERRUPTS
|
||||||
if (pending_interrupts) {
|
if (pending_interrupts) {
|
||||||
if (pending_interrupts & INTERRUPT_HANDLE) {
|
if (pending_interrupts & INTERRUPT_HANDLE) {
|
||||||
pending_interrupts &= ~INTERRUPT_HANDLE;
|
pending_interrupts &= ~INTERRUPT_HANDLE;
|
||||||
@ -381,6 +380,7 @@ inline void powerpc_cpu::check_pending_interrupts()
|
|||||||
pending_interrupts |= INTERRUPT_HANDLE;
|
pending_interrupts |= INTERRUPT_HANDLE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* PPC_CPU_H */
|
#endif /* PPC_CPU_H */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user