mirror of
https://github.com/holub/mame
synced 2025-04-29 11:30:28 +03:00
m68k: don't save signal contexts on *BSD and Mac OS X [scarlet, R. Belmont]
This commit is contained in:
parent
41f39e21ef
commit
5e33f4fd5c
@ -256,6 +256,29 @@ typedef struct _m68ki_cpu_core m68ki_cpu_core;
|
|||||||
|
|
||||||
|
|
||||||
/* Address error */
|
/* Address error */
|
||||||
|
/* sigjmp() on Mac OS X and *BSD in general saves signal contexts and is super-slow, use sigsetjmp() to tell it not to */
|
||||||
|
#ifdef _BSD_SETJMP_H
|
||||||
|
#define m68ki_set_address_error_trap(m68k) \
|
||||||
|
if(sigsetjmp(m68k->aerr_trap, 0) != 0) \
|
||||||
|
{ \
|
||||||
|
m68ki_exception_address_error(m68k); \
|
||||||
|
if(m68k->stopped) \
|
||||||
|
{ \
|
||||||
|
if (m68k->remaining_cycles > 0) \
|
||||||
|
m68k->remaining_cycles = 0; \
|
||||||
|
return m68k->initial_cycles; \
|
||||||
|
} \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define m68ki_check_address_error(m68k, ADDR, WRITE_MODE, FC) \
|
||||||
|
if((ADDR)&1) \
|
||||||
|
{ \
|
||||||
|
m68k->aerr_address = ADDR; \
|
||||||
|
m68k->aerr_write_mode = WRITE_MODE; \
|
||||||
|
m68k->aerr_fc = FC; \
|
||||||
|
siglongjmp(m68k->aerr_trap, 1); \
|
||||||
|
}
|
||||||
|
#else
|
||||||
#define m68ki_set_address_error_trap(m68k) \
|
#define m68ki_set_address_error_trap(m68k) \
|
||||||
if(setjmp(m68k->aerr_trap) != 0) \
|
if(setjmp(m68k->aerr_trap) != 0) \
|
||||||
{ \
|
{ \
|
||||||
@ -276,7 +299,7 @@ typedef struct _m68ki_cpu_core m68ki_cpu_core;
|
|||||||
m68k->aerr_fc = FC; \
|
m68k->aerr_fc = FC; \
|
||||||
longjmp(m68k->aerr_trap, 1); \
|
longjmp(m68k->aerr_trap, 1); \
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/* -------------------------- EA / Operand Access ------------------------- */
|
/* -------------------------- EA / Operand Access ------------------------- */
|
||||||
@ -567,7 +590,11 @@ struct _m68ki_cpu_core
|
|||||||
int reset_cycles;
|
int reset_cycles;
|
||||||
UINT32 tracing;
|
UINT32 tracing;
|
||||||
|
|
||||||
|
#ifdef _BSD_SETJMP_H
|
||||||
|
sigjmp_buf aerr_trap;
|
||||||
|
#else
|
||||||
jmp_buf aerr_trap;
|
jmp_buf aerr_trap;
|
||||||
|
#endif
|
||||||
UINT32 aerr_address;
|
UINT32 aerr_address;
|
||||||
UINT32 aerr_write_mode;
|
UINT32 aerr_write_mode;
|
||||||
UINT32 aerr_fc;
|
UINT32 aerr_fc;
|
||||||
|
Loading…
Reference in New Issue
Block a user