ChangeSet 1.1709.1.10, 2005/06/15 14:26:42-06:00, djm@xxxxxxxxxxxxxxx
More hyperprivops (slow for now)
Signed-off-by: Dan Magenheimer <dan.magenheimer@xxxxxx>
privop.c | 25 ++++++++++++++++++++++++-
process.c | 2 +-
2 files changed, 25 insertions(+), 2 deletions(-)
diff -Nru a/xen/arch/ia64/privop.c b/xen/arch/ia64/privop.c
--- a/xen/arch/ia64/privop.c 2005-06-19 14:04:48 -04:00
+++ b/xen/arch/ia64/privop.c 2005-06-19 14:04:48 -04:00
@@ -748,10 +748,16 @@
#define HYPERPRIVOP_ITC_D 0x5
#define HYPERPRIVOP_ITC_I 0x6
#define HYPERPRIVOP_SSM_I 0x7
-#define HYPERPRIVOP_MAX 0x7
+#define HYPERPRIVOP_GET_IVR 0x8
+#define HYPERPRIVOP_GET_TPR 0x9
+#define HYPERPRIVOP_SET_TPR 0xa
+#define HYPERPRIVOP_EOI 0xb
+#define HYPERPRIVOP_SET_ITM 0xc
+#define HYPERPRIVOP_MAX 0xc
char *hyperpriv_str[HYPERPRIVOP_MAX+1] = {
0, "rfi", "rsm.dt", "ssm.dt", "cover", "itc.d", "itc.i", "ssm.i",
+ "=ivr", "=tpr", "tpr=", "eoi", "itm=",
0
};
@@ -796,6 +802,23 @@
return 1;
case HYPERPRIVOP_SSM_I:
(void)vcpu_set_psr_i(v);
+ return 1;
+ case HYPERPRIVOP_GET_IVR:
+ (void)vcpu_get_ivr(v,&val);
+ regs->r8 = val;
+ return 1;
+ case HYPERPRIVOP_GET_TPR:
+ (void)vcpu_get_tpr(v,&val);
+ regs->r8 = val;
+ return 1;
+ case HYPERPRIVOP_SET_TPR:
+ (void)vcpu_set_tpr(v,regs->r8);
+ return 1;
+ case HYPERPRIVOP_EOI:
+ (void)vcpu_set_eoi(v,0L);
+ return 1;
+ case HYPERPRIVOP_SET_ITM:
+ (void)vcpu_set_itm(v,regs->r8);
return 1;
}
return 0;
diff -Nru a/xen/arch/ia64/process.c b/xen/arch/ia64/process.c
--- a/xen/arch/ia64/process.c 2005-06-19 14:04:48 -04:00
+++ b/xen/arch/ia64/process.c 2005-06-19 14:04:48 -04:00
@@ -754,7 +754,7 @@
vcpu_set_gr(current,8,-1L);
break;
default:
- printf("ia64_handle_break: bad ssc code %lx,
iip=%p\n",ssc,regs->cr_iip);
+ printf("ia64_handle_break: bad ssc code %lx, iip=%p,
b0=%p\n",ssc,regs->cr_iip,regs->b0);
break;
}
vcpu_increment_iip(current);
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|