# HG changeset patch # User gingold@xxxxxxxxxxxxxxxxxxxxx # Date 1171529948 -3600 # Node ID bf91ad7f63dd4f44403c3b00b4678d2dd1ef1e51 # Parent fbc233a1dc53dd0928fb8c0062d6582ef210950d Handle stacked convention. Signed-off-by: Tristan Gingold diff -r fbc233a1dc53 -r bf91ad7f63dd xen/arch/ia64/vmx/pal_emul.c --- a/xen/arch/ia64/vmx/pal_emul.c Wed Feb 07 10:46:18 2007 -0700 +++ b/xen/arch/ia64/vmx/pal_emul.c Thu Feb 15 09:59:08 2007 +0100 @@ -30,15 +30,18 @@ pal_emul(struct vcpu *vcpu) u64 gr28, gr29, gr30, gr31; struct ia64_pal_retval result; + perfc_incrc(vmx_pal_emul); + vcpu_get_gr_nat(vcpu, 28, &gr28); //bank1 - /* FIXME: works only for static calling convention ? */ - vcpu_get_gr_nat(vcpu, 29, &gr29); - vcpu_get_gr_nat(vcpu, 30, &gr30); - vcpu_get_gr_nat(vcpu, 31, &gr31); - - perfc_incrc(vmx_pal_emul); - result = xen_pal_emulator(gr28, gr29, gr30, gr31); + if (gr28 >= PAL_COPY_PAL) + result = xen_pal_emulator + (gr28, vcpu_get_gr (vcpu, 33), + vcpu_get_gr (vcpu, 34), vcpu_get_gr (vcpu, 35)); + else + result = xen_pal_emulator + (gr28, vcpu_get_gr(vcpu, 29), + vcpu_get_gr(vcpu, 30), vcpu_get_gr(vcpu, 31)); vcpu_set_gr(vcpu, 8, result.status, 0); vcpu_set_gr(vcpu, 9, result.v0, 0);