mirror of
https://github.com/kanjitalk755/macemu.git
synced 2025-03-20 08:30:48 +00:00
Fix build on MacOS X Leopard.
Leopard kernel faster? This is pure marketing hype. For 32-bit applications, Mach exception recovery is 60% slower. For 64-bit applications, this is up to 40% faster though. In any case, MacOS X remains pretty slow wrt. Linux...
This commit is contained in:
parent
df3475ed16
commit
ef39e46cb2
@ -627,58 +627,74 @@ if (ret != KERN_SUCCESS) { \
|
||||
}
|
||||
|
||||
#ifdef __ppc__
|
||||
#if __DARWIN_UNIX03 && defined _STRUCT_PPC_THREAD_STATE
|
||||
#define MACH_FIELD_NAME(X) __CONCAT(__,X)
|
||||
#endif
|
||||
#define SIGSEGV_EXCEPTION_STATE_TYPE ppc_exception_state_t
|
||||
#define SIGSEGV_EXCEPTION_STATE_FLAVOR PPC_EXCEPTION_STATE
|
||||
#define SIGSEGV_EXCEPTION_STATE_COUNT PPC_EXCEPTION_STATE_COUNT
|
||||
#define SIGSEGV_FAULT_ADDRESS SIP->exc_state.dar
|
||||
#define SIGSEGV_FAULT_ADDRESS SIP->exc_state.MACH_FIELD_NAME(dar)
|
||||
#define SIGSEGV_THREAD_STATE_TYPE ppc_thread_state_t
|
||||
#define SIGSEGV_THREAD_STATE_FLAVOR PPC_THREAD_STATE
|
||||
#define SIGSEGV_THREAD_STATE_COUNT PPC_THREAD_STATE_COUNT
|
||||
#define SIGSEGV_FAULT_INSTRUCTION SIP->thr_state.srr0
|
||||
#define SIGSEGV_FAULT_INSTRUCTION SIP->thr_state.MACH_FIELD_NAME(srr0)
|
||||
#define SIGSEGV_SKIP_INSTRUCTION powerpc_skip_instruction
|
||||
#define SIGSEGV_REGISTER_FILE (unsigned long *)&SIP->thr_state.srr0, (unsigned long *)&SIP->thr_state.r0
|
||||
#define SIGSEGV_REGISTER_FILE (unsigned long *)&SIP->thr_state.MACH_FIELD_NAME(srr0), (unsigned long *)&SIP->thr_state.MACH_FIELD_NAME(r0)
|
||||
#endif
|
||||
#ifdef __ppc64__
|
||||
#if __DARWIN_UNIX03 && defined _STRUCT_PPC_THREAD_STATE64
|
||||
#define MACH_FIELD_NAME(X) __CONCAT(__,X)
|
||||
#endif
|
||||
#define SIGSEGV_EXCEPTION_STATE_TYPE ppc_exception_state64_t
|
||||
#define SIGSEGV_EXCEPTION_STATE_FLAVOR PPC_EXCEPTION_STATE64
|
||||
#define SIGSEGV_EXCEPTION_STATE_COUNT PPC_EXCEPTION_STATE64_COUNT
|
||||
#define SIGSEGV_FAULT_ADDRESS SIP->exc_state.dar
|
||||
#define SIGSEGV_FAULT_ADDRESS SIP->exc_state.MACH_FIELD_NAME(dar)
|
||||
#define SIGSEGV_THREAD_STATE_TYPE ppc_thread_state64_t
|
||||
#define SIGSEGV_THREAD_STATE_FLAVOR PPC_THREAD_STATE64
|
||||
#define SIGSEGV_THREAD_STATE_COUNT PPC_THREAD_STATE64_COUNT
|
||||
#define SIGSEGV_FAULT_INSTRUCTION SIP->thr_state.srr0
|
||||
#define SIGSEGV_FAULT_INSTRUCTION SIP->thr_state.MACH_FIELD_NAME(srr0)
|
||||
#define SIGSEGV_SKIP_INSTRUCTION powerpc_skip_instruction
|
||||
#define SIGSEGV_REGISTER_FILE (unsigned long *)&SIP->thr_state.srr0, (unsigned long *)&SIP->thr_state.r0
|
||||
#define SIGSEGV_REGISTER_FILE (unsigned long *)&SIP->thr_state.MACH_FIELD_NAME(srr0), (unsigned long *)&SIP->thr_state.MACH_FIELD_NAME(r0)
|
||||
#endif
|
||||
#ifdef __i386__
|
||||
#define SIGSEGV_EXCEPTION_STATE_TYPE struct i386_exception_state
|
||||
#if __DARWIN_UNIX03 && defined _STRUCT_X86_THREAD_STATE32
|
||||
#define MACH_FIELD_NAME(X) __CONCAT(__,X)
|
||||
#endif
|
||||
#define SIGSEGV_EXCEPTION_STATE_TYPE i386_exception_state_t
|
||||
#define SIGSEGV_EXCEPTION_STATE_FLAVOR i386_EXCEPTION_STATE
|
||||
#define SIGSEGV_EXCEPTION_STATE_COUNT i386_EXCEPTION_STATE_COUNT
|
||||
#define SIGSEGV_FAULT_ADDRESS SIP->exc_state.faultvaddr
|
||||
#define SIGSEGV_THREAD_STATE_TYPE struct i386_thread_state
|
||||
#define SIGSEGV_FAULT_ADDRESS SIP->exc_state.MACH_FIELD_NAME(faultvaddr)
|
||||
#define SIGSEGV_THREAD_STATE_TYPE i386_thread_state_t
|
||||
#define SIGSEGV_THREAD_STATE_FLAVOR i386_THREAD_STATE
|
||||
#define SIGSEGV_THREAD_STATE_COUNT i386_THREAD_STATE_COUNT
|
||||
#define SIGSEGV_FAULT_INSTRUCTION SIP->thr_state.eip
|
||||
#define SIGSEGV_FAULT_INSTRUCTION SIP->thr_state.MACH_FIELD_NAME(eip)
|
||||
#define SIGSEGV_SKIP_INSTRUCTION ix86_skip_instruction
|
||||
#define SIGSEGV_REGISTER_FILE ((SIGSEGV_REGISTER_TYPE *)&SIP->thr_state.eax) /* EAX is the first GPR we consider */
|
||||
#define SIGSEGV_REGISTER_FILE ((SIGSEGV_REGISTER_TYPE *)&SIP->thr_state.MACH_FIELD_NAME(eax)) /* EAX is the first GPR we consider */
|
||||
#endif
|
||||
#ifdef __x86_64__
|
||||
#define SIGSEGV_EXCEPTION_STATE_TYPE struct x86_exception_state64
|
||||
#if __DARWIN_UNIX03 && defined _STRUCT_X86_THREAD_STATE64
|
||||
#define MACH_FIELD_NAME(X) __CONCAT(__,X)
|
||||
#endif
|
||||
#define SIGSEGV_EXCEPTION_STATE_TYPE x86_exception_state64_t
|
||||
#define SIGSEGV_EXCEPTION_STATE_FLAVOR x86_EXCEPTION_STATE64
|
||||
#define SIGSEGV_EXCEPTION_STATE_COUNT x86_EXCEPTION_STATE64_COUNT
|
||||
#define SIGSEGV_FAULT_ADDRESS SIP->exc_state.faultvaddr
|
||||
#define SIGSEGV_THREAD_STATE_TYPE struct x86_thread_state64
|
||||
#define SIGSEGV_FAULT_ADDRESS SIP->exc_state.MACH_FIELD_NAME(faultvaddr)
|
||||
#define SIGSEGV_THREAD_STATE_TYPE x86_thread_state64_t
|
||||
#define SIGSEGV_THREAD_STATE_FLAVOR x86_THREAD_STATE64
|
||||
#define SIGSEGV_THREAD_STATE_COUNT x86_THREAD_STATE64_COUNT
|
||||
#define SIGSEGV_FAULT_INSTRUCTION SIP->thr_state.rip
|
||||
#define SIGSEGV_FAULT_INSTRUCTION SIP->thr_state.MACH_FIELD_NAME(rip)
|
||||
#define SIGSEGV_SKIP_INSTRUCTION ix86_skip_instruction
|
||||
#define SIGSEGV_REGISTER_FILE ((SIGSEGV_REGISTER_TYPE *)&SIP->thr_state.rax) /* RAX is the first GPR we consider */
|
||||
#define SIGSEGV_REGISTER_FILE ((SIGSEGV_REGISTER_TYPE *)&SIP->thr_state.MACH_FIELD_NAME(rax)) /* RAX is the first GPR we consider */
|
||||
#endif
|
||||
#define SIGSEGV_FAULT_ADDRESS_FAST code[1]
|
||||
#define SIGSEGV_FAULT_INSTRUCTION_FAST SIGSEGV_INVALID_ADDRESS
|
||||
#define SIGSEGV_FAULT_HANDLER_ARGLIST mach_port_t thread, exception_data_t code
|
||||
#define SIGSEGV_FAULT_HANDLER_ARGS thread, code
|
||||
|
||||
#ifndef MACH_FIELD_NAME
|
||||
#define MACH_FIELD_NAME(X) X
|
||||
#endif
|
||||
|
||||
// Since there can only be one exception thread running at any time
|
||||
// this is not a problem.
|
||||
#define MSG_SIZE 512
|
||||
|
Loading…
x
Reference in New Issue
Block a user