ChangeSet 1.1713.2.18, 2005/06/21 14:10:51-06:00, djm@xxxxxxxxxxxxxxx
Fix and re-enable hyperprivop for ptc.ga (slow path only for now)
Signed-off-by: Dan Magenheimer <dan.magenheimer@xxxxxx>
hyperprivop.S | 8 ++++++++
privop.c | 6 ++----
2 files changed, 10 insertions(+), 4 deletions(-)
diff -Nru a/xen/arch/ia64/hyperprivop.S b/xen/arch/ia64/hyperprivop.S
--- a/xen/arch/ia64/hyperprivop.S 2005-06-23 07:04:36 -04:00
+++ b/xen/arch/ia64/hyperprivop.S 2005-06-23 07:04:36 -04:00
@@ -109,6 +109,10 @@
cmp.eq p7,p6=XEN_HYPER_GET_RR,r17
(p7) br.sptk.many hyper_get_rr;;
+ // HYPERPRIVOP_PTC_GA?
+ cmp.eq p7,p6=XEN_HYPER_PTC_GA,r17
+(p7) br.sptk.many hyper_ptc_ga;;
+
// if not one of the above, give up for now and do it the slow way
br.sptk.many dispatch_break_fault ;;
@@ -909,3 +913,7 @@
rfi
;;
END(hyper_set_rr)
+
+ENTRY(hyper_ptc_ga)
+ br.spnt.many dispatch_break_fault ;;
+END(hyper_ptc_ga)
diff -Nru a/xen/arch/ia64/privop.c b/xen/arch/ia64/privop.c
--- a/xen/arch/ia64/privop.c 2005-06-23 07:04:36 -04:00
+++ b/xen/arch/ia64/privop.c 2005-06-23 07:04:36 -04:00
@@ -832,10 +832,8 @@
regs->r8 = val;
return 1;
case HYPERPRIVOP_PTC_GA:
- // FIXME: this doesn't seem to work yet, turned off
- //(void)vcpu_ptc_ga(v,regs->r8,regs->r9);
- //return 1;
- break;
+ (void)vcpu_ptc_ga(v,regs->r8,(1L << ((regs->r9 & 0xfc) >> 2)));
+ return 1;
case HYPERPRIVOP_ITR_D:
(void)vcpu_get_itir(v,&itir);
(void)vcpu_get_ifa(v,&ifa);
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|