ia64/xen-unstable

changeset 10674:be1b7896c203

[IA64] add unw_init_from_interruption()

From stock upstream unwind.c

Signed-off-by: Akio Takebe <takebe_akio@jp.fujitsu.com>
[fixed patch to match upstream]
Signed-off-by: Alex Williamson <alex.williamson@hp.com>
author awilliam@xenbuild.aw
date Thu Jul 06 10:23:34 2006 -0600 (2006-07-06)
parents 80e04aa530b8
children 446402805fd9
files xen/arch/ia64/linux-xen/unwind.c
line diff
     1.1 --- a/xen/arch/ia64/linux-xen/unwind.c	Thu Jul 06 10:04:57 2006 -0600
     1.2 +++ b/xen/arch/ia64/linux-xen/unwind.c	Thu Jul 06 10:23:34 2006 -0600
     1.3 @@ -2056,6 +2056,28 @@ init_frame_info (struct unw_frame_info *
     1.4  }
     1.5  
     1.6  void
     1.7 +unw_init_from_interruption (struct unw_frame_info *info, struct task_struct *t,
     1.8 +			    struct pt_regs *pt, struct switch_stack *sw)
     1.9 +{
    1.10 +	unsigned long sof;
    1.11 +
    1.12 +	init_frame_info(info, t, sw, pt->r12);
    1.13 +	info->cfm_loc = &pt->cr_ifs;
    1.14 +	info->unat_loc = &pt->ar_unat;
    1.15 +	info->pfs_loc = &pt->ar_pfs;
    1.16 +	sof = *info->cfm_loc & 0x7f;
    1.17 +	info->bsp = (unsigned long) ia64_rse_skip_regs((unsigned long *) info->regstk.top, -sof);
    1.18 +	info->ip = pt->cr_iip + ia64_psr(pt)->ri;
    1.19 +	info->pt = (unsigned long) pt;
    1.20 +	UNW_DPRINT(3, "unwind.%s:\n"
    1.21 +		   "  bsp    0x%lx\n"
    1.22 +		   "  sof    0x%lx\n"
    1.23 +		   "  ip     0x%lx\n",
    1.24 +		   __FUNCTION__, info->bsp, sof, info->ip);
    1.25 +	find_save_locs(info);
    1.26 +}
    1.27 +
    1.28 +void
    1.29  unw_init_frame_info (struct unw_frame_info *info, struct task_struct *t, struct switch_stack *sw)
    1.30  {
    1.31  	unsigned long sol;