2006-11-15 22:57:58 -05:00
|
|
|
typedef struct _F_STACK_FRAME {
|
|
|
|
|
struct _F_STACK_FRAME *previous;
|
2006-11-16 21:04:37 -05:00
|
|
|
CELL padding1;
|
2006-11-15 22:57:58 -05:00
|
|
|
CELL *return_address;
|
2006-11-16 21:04:37 -05:00
|
|
|
CELL padding2;
|
2006-11-15 22:57:58 -05:00
|
|
|
} F_STACK_FRAME;
|
|
|
|
|
|
2006-07-07 00:07:18 -04:00
|
|
|
#define SIGSEGV_EXC_STATE_TYPE ppc_exception_state_t
|
|
|
|
|
#define SIGSEGV_EXC_STATE_FLAVOR PPC_EXCEPTION_STATE
|
|
|
|
|
#define SIGSEGV_EXC_STATE_COUNT PPC_EXCEPTION_STATE_COUNT
|
2006-08-05 18:10:01 -04:00
|
|
|
#define SIGSEGV_EXC_STATE_FAULT(exc_state) (exc_state).dar
|
2006-07-07 00:07:18 -04:00
|
|
|
#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_STACK_POINTER(thr_state) (thr_state).r1
|
2006-08-05 18:10:01 -04:00
|
|
|
#define SIGSEGV_THREAD_STATE_ARG(thr_state) (thr_state).r3
|
2006-07-07 00:07:18 -04:00
|
|
|
#define SIGSEGV_PROGRAM_COUNTER(thr_state) (thr_state).srr0
|
2006-07-07 00:15:31 -04:00
|
|
|
|
2006-07-07 03:46:05 -04:00
|
|
|
INLINE unsigned long fix_stack_ptr(unsigned long sp)
|
2006-07-07 00:15:31 -04:00
|
|
|
{
|
|
|
|
|
return sp;
|
|
|
|
|
}
|
2006-08-05 18:10:01 -04:00
|
|
|
|
|
|
|
|
INLINE void pass_arg0(SIGSEGV_THREAD_STATE_TYPE *thr_state, CELL arg)
|
|
|
|
|
{
|
|
|
|
|
SIGSEGV_THREAD_STATE_ARG(*thr_state) = arg;
|
|
|
|
|
}
|