#include <libunwind_i.h>
#ifdef UNW_TARGET_PPC64
#include "../ppc64/init.h"
#else
#include "../ppc32/init.h"
#endif
#ifdef UNW_REMOTE_ONLY
int
unw_init_local (unw_cursor_t *cursor, ucontext_t *uc)
{
return -UNW_EINVAL;
}
#else
static int
unw_init_local_common(unw_cursor_t *cursor, ucontext_t *uc, unsigned use_prev_instr)
{
struct cursor *c = (struct cursor *) cursor;
if (!atomic_load(&tdep_init_done))
tdep_init ();
Debug (1, "(cursor=%p)\n", c);
c->dwarf.as = unw_local_addr_space;
c->dwarf.as_arg = uc;
#ifdef UNW_TARGET_PPC64
return common_init_ppc64 (c, use_prev_instr);
#else
return common_init_ppc32 (c, use_prev_instr);
#endif
}
int
unw_init_local(unw_cursor_t *cursor, ucontext_t *uc)
{
return unw_init_local_common(cursor, uc, 1);
}
int
unw_init_local2 (unw_cursor_t *cursor, ucontext_t *uc, int flag)
{
if (!flag)
{
return unw_init_local_common(cursor, uc, 1);
}
else if (flag == UNW_INIT_SIGNAL_FRAME)
{
return unw_init_local_common(cursor, uc, 0);
}
else
{
return -UNW_EINVAL;
}
}
#endif