1f176ad6fc6d4982e92c330265b00419e93b79f27David Mosberger-Tang/* libunwind - a platform-independent unwind library
2f176ad6fc6d4982e92c330265b00419e93b79f27David Mosberger-Tang   Copyright (C) 2003 Hewlett-Packard Co
3f176ad6fc6d4982e92c330265b00419e93b79f27David Mosberger-Tang	Contributed by ...
4f176ad6fc6d4982e92c330265b00419e93b79f27David Mosberger-Tang
5f176ad6fc6d4982e92c330265b00419e93b79f27David Mosberger-TangThis file is part of libunwind.
6f176ad6fc6d4982e92c330265b00419e93b79f27David Mosberger-Tang
7f176ad6fc6d4982e92c330265b00419e93b79f27David Mosberger-TangPermission is hereby granted, free of charge, to any person obtaining
8f176ad6fc6d4982e92c330265b00419e93b79f27David Mosberger-Tanga copy of this software and associated documentation files (the
9f176ad6fc6d4982e92c330265b00419e93b79f27David Mosberger-Tang"Software"), to deal in the Software without restriction, including
10f176ad6fc6d4982e92c330265b00419e93b79f27David Mosberger-Tangwithout limitation the rights to use, copy, modify, merge, publish,
11f176ad6fc6d4982e92c330265b00419e93b79f27David Mosberger-Tangdistribute, sublicense, and/or sell copies of the Software, and to
12f176ad6fc6d4982e92c330265b00419e93b79f27David Mosberger-Tangpermit persons to whom the Software is furnished to do so, subject to
13f176ad6fc6d4982e92c330265b00419e93b79f27David Mosberger-Tangthe following conditions:
14f176ad6fc6d4982e92c330265b00419e93b79f27David Mosberger-Tang
15f176ad6fc6d4982e92c330265b00419e93b79f27David Mosberger-TangThe above copyright notice and this permission notice shall be
16f176ad6fc6d4982e92c330265b00419e93b79f27David Mosberger-Tangincluded in all copies or substantial portions of the Software.
17f176ad6fc6d4982e92c330265b00419e93b79f27David Mosberger-Tang
18f176ad6fc6d4982e92c330265b00419e93b79f27David Mosberger-TangTHE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
19f176ad6fc6d4982e92c330265b00419e93b79f27David Mosberger-TangEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
20f176ad6fc6d4982e92c330265b00419e93b79f27David Mosberger-TangMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
21f176ad6fc6d4982e92c330265b00419e93b79f27David Mosberger-TangNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
22f176ad6fc6d4982e92c330265b00419e93b79f27David Mosberger-TangLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
23f176ad6fc6d4982e92c330265b00419e93b79f27David Mosberger-TangOF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
24f176ad6fc6d4982e92c330265b00419e93b79f27David Mosberger-TangWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  */
25f176ad6fc6d4982e92c330265b00419e93b79f27David Mosberger-Tang
26f176ad6fc6d4982e92c330265b00419e93b79f27David Mosberger-Tang#include "unwind_i.h"
27f176ad6fc6d4982e92c330265b00419e93b79f27David Mosberger-Tang
28f176ad6fc6d4982e92c330265b00419e93b79f27David Mosberger-Tangstatic inline int
29a9dce3c06e6ffcb83957e734d960505415118f00Lassi Tuuracommon_init (struct cursor *c, unsigned use_prev_instr)
30f176ad6fc6d4982e92c330265b00419e93b79f27David Mosberger-Tang{
31f176ad6fc6d4982e92c330265b00419e93b79f27David Mosberger-Tang  int ret;
32f176ad6fc6d4982e92c330265b00419e93b79f27David Mosberger-Tang
337feb6b85751f2f296793de9116eefc37c712be77Tommi Rantala  c->dwarf.loc[UNW_HPPA_IP] = DWARF_REG_LOC (&c->dwarf, UNW_HPPA_IP);
347feb6b85751f2f296793de9116eefc37c712be77Tommi Rantala  c->dwarf.loc[UNW_HPPA_SP] = DWARF_REG_LOC (&c->dwarf, UNW_HPPA_SP);
35f176ad6fc6d4982e92c330265b00419e93b79f27David Mosberger-Tang
367feb6b85751f2f296793de9116eefc37c712be77Tommi Rantala  ret = dwarf_get (&c->dwarf, c->dwarf.loc[UNW_HPPA_IP], &c->dwarf.ip);
37f176ad6fc6d4982e92c330265b00419e93b79f27David Mosberger-Tang  if (ret < 0)
38f176ad6fc6d4982e92c330265b00419e93b79f27David Mosberger-Tang    return ret;
39f176ad6fc6d4982e92c330265b00419e93b79f27David Mosberger-Tang
407feb6b85751f2f296793de9116eefc37c712be77Tommi Rantala  ret = dwarf_get (&c->dwarf, c->dwarf.loc[UNW_HPPA_SP], &c->dwarf.cfa);
41f176ad6fc6d4982e92c330265b00419e93b79f27David Mosberger-Tang  if (ret < 0)
42f176ad6fc6d4982e92c330265b00419e93b79f27David Mosberger-Tang    return ret;
43a9dce3c06e6ffcb83957e734d960505415118f00Lassi Tuura
449e98f15e9aee12e67cd5956d06ccb559f6a06213Lassi Tuura  c->dwarf.stash_frames = 0;
45a9dce3c06e6ffcb83957e734d960505415118f00Lassi Tuura  c->dwarf.use_prev_instr = use_prev_instr;
461c82a52129ceced9f271dd782057351275c38a41Christopher Ferris  /* ANDROID support update. */
471c82a52129ceced9f271dd782057351275c38a41Christopher Ferris  c->dwarf.frame = 0;
481c82a52129ceced9f271dd782057351275c38a41Christopher Ferris  /* End of ANDROID update. */
49f176ad6fc6d4982e92c330265b00419e93b79f27David Mosberger-Tang  return 0;
50f176ad6fc6d4982e92c330265b00419e93b79f27David Mosberger-Tang}
51