18d5b1aeeffb80515197fd7aeee0b3fbfac904ecdTommi Rantala/* libunwind - a platform-independent unwind library
28d5b1aeeffb80515197fd7aeee0b3fbfac904ecdTommi Rantala   Copyright (C) 2008 CodeSourcery
38d5b1aeeffb80515197fd7aeee0b3fbfac904ecdTommi Rantala   Copyright (C) 2012 Tommi Rantala <tt.rantala@gmail.com>
48d5b1aeeffb80515197fd7aeee0b3fbfac904ecdTommi Rantala
58d5b1aeeffb80515197fd7aeee0b3fbfac904ecdTommi RantalaThis file is part of libunwind.
68d5b1aeeffb80515197fd7aeee0b3fbfac904ecdTommi Rantala
78d5b1aeeffb80515197fd7aeee0b3fbfac904ecdTommi RantalaPermission is hereby granted, free of charge, to any person obtaining
88d5b1aeeffb80515197fd7aeee0b3fbfac904ecdTommi Rantalaa copy of this software and associated documentation files (the
98d5b1aeeffb80515197fd7aeee0b3fbfac904ecdTommi Rantala"Software"), to deal in the Software without restriction, including
108d5b1aeeffb80515197fd7aeee0b3fbfac904ecdTommi Rantalawithout limitation the rights to use, copy, modify, merge, publish,
118d5b1aeeffb80515197fd7aeee0b3fbfac904ecdTommi Rantaladistribute, sublicense, and/or sell copies of the Software, and to
128d5b1aeeffb80515197fd7aeee0b3fbfac904ecdTommi Rantalapermit persons to whom the Software is furnished to do so, subject to
138d5b1aeeffb80515197fd7aeee0b3fbfac904ecdTommi Rantalathe following conditions:
148d5b1aeeffb80515197fd7aeee0b3fbfac904ecdTommi Rantala
158d5b1aeeffb80515197fd7aeee0b3fbfac904ecdTommi RantalaThe above copyright notice and this permission notice shall be
168d5b1aeeffb80515197fd7aeee0b3fbfac904ecdTommi Rantalaincluded in all copies or substantial portions of the Software.
178d5b1aeeffb80515197fd7aeee0b3fbfac904ecdTommi Rantala
188d5b1aeeffb80515197fd7aeee0b3fbfac904ecdTommi RantalaTHE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
198d5b1aeeffb80515197fd7aeee0b3fbfac904ecdTommi RantalaEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
208d5b1aeeffb80515197fd7aeee0b3fbfac904ecdTommi RantalaMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
218d5b1aeeffb80515197fd7aeee0b3fbfac904ecdTommi RantalaNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
228d5b1aeeffb80515197fd7aeee0b3fbfac904ecdTommi RantalaLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
238d5b1aeeffb80515197fd7aeee0b3fbfac904ecdTommi RantalaOF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
248d5b1aeeffb80515197fd7aeee0b3fbfac904ecdTommi RantalaWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  */
258d5b1aeeffb80515197fd7aeee0b3fbfac904ecdTommi Rantala
268d5b1aeeffb80515197fd7aeee0b3fbfac904ecdTommi Rantala#ifndef LIBUNWIND_H
278d5b1aeeffb80515197fd7aeee0b3fbfac904ecdTommi Rantala#define LIBUNWIND_H
288d5b1aeeffb80515197fd7aeee0b3fbfac904ecdTommi Rantala
298d5b1aeeffb80515197fd7aeee0b3fbfac904ecdTommi Rantala#if defined(__cplusplus) || defined(c_plusplus)
308d5b1aeeffb80515197fd7aeee0b3fbfac904ecdTommi Rantalaextern "C" {
318d5b1aeeffb80515197fd7aeee0b3fbfac904ecdTommi Rantala#endif
328d5b1aeeffb80515197fd7aeee0b3fbfac904ecdTommi Rantala
338d5b1aeeffb80515197fd7aeee0b3fbfac904ecdTommi Rantala#include <inttypes.h>
348d5b1aeeffb80515197fd7aeee0b3fbfac904ecdTommi Rantala#include <stddef.h>
358d5b1aeeffb80515197fd7aeee0b3fbfac904ecdTommi Rantala#include <ucontext.h>
368d5b1aeeffb80515197fd7aeee0b3fbfac904ecdTommi Rantala
378d5b1aeeffb80515197fd7aeee0b3fbfac904ecdTommi Rantala#define UNW_TARGET	sh
388d5b1aeeffb80515197fd7aeee0b3fbfac904ecdTommi Rantala#define UNW_TARGET_SH	1
398d5b1aeeffb80515197fd7aeee0b3fbfac904ecdTommi Rantala
408d5b1aeeffb80515197fd7aeee0b3fbfac904ecdTommi Rantala#define _U_TDEP_QP_TRUE	0	/* see libunwind-dynamic.h  */
418d5b1aeeffb80515197fd7aeee0b3fbfac904ecdTommi Rantala
428d5b1aeeffb80515197fd7aeee0b3fbfac904ecdTommi Rantala/* This needs to be big enough to accommodate "struct cursor", while
438d5b1aeeffb80515197fd7aeee0b3fbfac904ecdTommi Rantala   leaving some slack for future expansion.  Changing this value will
448d5b1aeeffb80515197fd7aeee0b3fbfac904ecdTommi Rantala   require recompiling all users of this library.  Stack allocation is
458d5b1aeeffb80515197fd7aeee0b3fbfac904ecdTommi Rantala   relatively cheap and unwind-state copying is relatively rare, so we
468d5b1aeeffb80515197fd7aeee0b3fbfac904ecdTommi Rantala   want to err on making it rather too big than too small.  */
478d5b1aeeffb80515197fd7aeee0b3fbfac904ecdTommi Rantala
488d5b1aeeffb80515197fd7aeee0b3fbfac904ecdTommi Rantala#define UNW_TDEP_CURSOR_LEN	4096
498d5b1aeeffb80515197fd7aeee0b3fbfac904ecdTommi Rantala
508d5b1aeeffb80515197fd7aeee0b3fbfac904ecdTommi Rantalatypedef uint32_t unw_word_t;
518d5b1aeeffb80515197fd7aeee0b3fbfac904ecdTommi Rantalatypedef int32_t unw_sword_t;
528d5b1aeeffb80515197fd7aeee0b3fbfac904ecdTommi Rantala
538d5b1aeeffb80515197fd7aeee0b3fbfac904ecdTommi Rantalatypedef long double unw_tdep_fpreg_t;
548d5b1aeeffb80515197fd7aeee0b3fbfac904ecdTommi Rantala
558d5b1aeeffb80515197fd7aeee0b3fbfac904ecdTommi Rantalatypedef enum
568d5b1aeeffb80515197fd7aeee0b3fbfac904ecdTommi Rantala  {
578d5b1aeeffb80515197fd7aeee0b3fbfac904ecdTommi Rantala    UNW_SH_R0,
588d5b1aeeffb80515197fd7aeee0b3fbfac904ecdTommi Rantala    UNW_SH_R1,
598d5b1aeeffb80515197fd7aeee0b3fbfac904ecdTommi Rantala    UNW_SH_R2,
608d5b1aeeffb80515197fd7aeee0b3fbfac904ecdTommi Rantala    UNW_SH_R3,
618d5b1aeeffb80515197fd7aeee0b3fbfac904ecdTommi Rantala    UNW_SH_R4,
628d5b1aeeffb80515197fd7aeee0b3fbfac904ecdTommi Rantala    UNW_SH_R5,
638d5b1aeeffb80515197fd7aeee0b3fbfac904ecdTommi Rantala    UNW_SH_R6,
648d5b1aeeffb80515197fd7aeee0b3fbfac904ecdTommi Rantala    UNW_SH_R7,
658d5b1aeeffb80515197fd7aeee0b3fbfac904ecdTommi Rantala    UNW_SH_R8,
668d5b1aeeffb80515197fd7aeee0b3fbfac904ecdTommi Rantala    UNW_SH_R9,
678d5b1aeeffb80515197fd7aeee0b3fbfac904ecdTommi Rantala    UNW_SH_R10,
688d5b1aeeffb80515197fd7aeee0b3fbfac904ecdTommi Rantala    UNW_SH_R11,
698d5b1aeeffb80515197fd7aeee0b3fbfac904ecdTommi Rantala    UNW_SH_R12,
708d5b1aeeffb80515197fd7aeee0b3fbfac904ecdTommi Rantala    UNW_SH_R13,
718d5b1aeeffb80515197fd7aeee0b3fbfac904ecdTommi Rantala    UNW_SH_R14,
728d5b1aeeffb80515197fd7aeee0b3fbfac904ecdTommi Rantala    UNW_SH_R15,
738d5b1aeeffb80515197fd7aeee0b3fbfac904ecdTommi Rantala
748d5b1aeeffb80515197fd7aeee0b3fbfac904ecdTommi Rantala    UNW_SH_PC,
758d5b1aeeffb80515197fd7aeee0b3fbfac904ecdTommi Rantala    UNW_SH_PR,
768d5b1aeeffb80515197fd7aeee0b3fbfac904ecdTommi Rantala
778d5b1aeeffb80515197fd7aeee0b3fbfac904ecdTommi Rantala    UNW_TDEP_LAST_REG = UNW_SH_PR,
788d5b1aeeffb80515197fd7aeee0b3fbfac904ecdTommi Rantala
798d5b1aeeffb80515197fd7aeee0b3fbfac904ecdTommi Rantala    UNW_TDEP_IP = UNW_SH_PR,
808d5b1aeeffb80515197fd7aeee0b3fbfac904ecdTommi Rantala    UNW_TDEP_SP = UNW_SH_R15,
818d5b1aeeffb80515197fd7aeee0b3fbfac904ecdTommi Rantala    UNW_TDEP_EH = UNW_SH_R0
828d5b1aeeffb80515197fd7aeee0b3fbfac904ecdTommi Rantala  }
838d5b1aeeffb80515197fd7aeee0b3fbfac904ecdTommi Rantalash_regnum_t;
848d5b1aeeffb80515197fd7aeee0b3fbfac904ecdTommi Rantala
858d5b1aeeffb80515197fd7aeee0b3fbfac904ecdTommi Rantala#define UNW_TDEP_NUM_EH_REGS	2
868d5b1aeeffb80515197fd7aeee0b3fbfac904ecdTommi Rantala
878d5b1aeeffb80515197fd7aeee0b3fbfac904ecdTommi Rantalatypedef ucontext_t unw_tdep_context_t;
888d5b1aeeffb80515197fd7aeee0b3fbfac904ecdTommi Rantala
898d5b1aeeffb80515197fd7aeee0b3fbfac904ecdTommi Rantala#define unw_tdep_getcontext(uc)		(getcontext (uc), 0)
908d5b1aeeffb80515197fd7aeee0b3fbfac904ecdTommi Rantala
918d5b1aeeffb80515197fd7aeee0b3fbfac904ecdTommi Rantalatypedef struct unw_tdep_save_loc
928d5b1aeeffb80515197fd7aeee0b3fbfac904ecdTommi Rantala  {
938d5b1aeeffb80515197fd7aeee0b3fbfac904ecdTommi Rantala    /* Additional target-dependent info on a save location.  */
948d5b1aeeffb80515197fd7aeee0b3fbfac904ecdTommi Rantala  }
958d5b1aeeffb80515197fd7aeee0b3fbfac904ecdTommi Rantalaunw_tdep_save_loc_t;
968d5b1aeeffb80515197fd7aeee0b3fbfac904ecdTommi Rantala
978d5b1aeeffb80515197fd7aeee0b3fbfac904ecdTommi Rantala#include "libunwind-dynamic.h"
988d5b1aeeffb80515197fd7aeee0b3fbfac904ecdTommi Rantala
998d5b1aeeffb80515197fd7aeee0b3fbfac904ecdTommi Rantalatypedef struct
1008d5b1aeeffb80515197fd7aeee0b3fbfac904ecdTommi Rantala  {
1018d5b1aeeffb80515197fd7aeee0b3fbfac904ecdTommi Rantala    /* no sh-specific auxiliary proc-info */
1028d5b1aeeffb80515197fd7aeee0b3fbfac904ecdTommi Rantala  }
1038d5b1aeeffb80515197fd7aeee0b3fbfac904ecdTommi Rantalaunw_tdep_proc_info_t;
1048d5b1aeeffb80515197fd7aeee0b3fbfac904ecdTommi Rantala
1058d5b1aeeffb80515197fd7aeee0b3fbfac904ecdTommi Rantala#include "libunwind-common.h"
1068d5b1aeeffb80515197fd7aeee0b3fbfac904ecdTommi Rantala
1078d5b1aeeffb80515197fd7aeee0b3fbfac904ecdTommi Rantala#define unw_tdep_is_fpreg		UNW_ARCH_OBJ(is_fpreg)
1088d5b1aeeffb80515197fd7aeee0b3fbfac904ecdTommi Rantalaextern int unw_tdep_is_fpreg (int);
1098d5b1aeeffb80515197fd7aeee0b3fbfac904ecdTommi Rantala
1108d5b1aeeffb80515197fd7aeee0b3fbfac904ecdTommi Rantala#if defined(__cplusplus) || defined(c_plusplus)
1118d5b1aeeffb80515197fd7aeee0b3fbfac904ecdTommi Rantala}
1128d5b1aeeffb80515197fd7aeee0b3fbfac904ecdTommi Rantala#endif
1138d5b1aeeffb80515197fd7aeee0b3fbfac904ecdTommi Rantala
1148d5b1aeeffb80515197fd7aeee0b3fbfac904ecdTommi Rantala#endif /* LIBUNWIND_H */
115