# HG changeset patch
# User awilliam@xxxxxxxxxxxx
# Date 1168551744 25200
# Node ID db72b85b81bb1478cb2e91b6411596648bdc9a2c
# Parent d607d575ec6a03ca7f67f37020bef70a731d1c74
[IA64] merge increment_iip
Signed-off-by: Anthony Xu <anthony.xu@xxxxxxxxx>
---
xen/arch/ia64/vmx/mmio.c | 10 ++++----
xen/arch/ia64/vmx/vmx_process.c | 10 ++++----
xen/arch/ia64/vmx/vmx_vcpu.c | 45 ----------------------------------------
xen/arch/ia64/vmx/vmx_virt.c | 2 -
xen/arch/ia64/xen/vcpu.c | 14 ++++++++++++
xen/include/asm-ia64/vcpu.h | 1
xen/include/asm-ia64/vmx_vcpu.h | 2 -
7 files changed, 26 insertions(+), 58 deletions(-)
diff -r d607d575ec6a -r db72b85b81bb xen/arch/ia64/vmx/mmio.c
--- a/xen/arch/ia64/vmx/mmio.c Thu Jan 11 14:27:39 2007 -0700
+++ b/xen/arch/ia64/vmx/mmio.c Thu Jan 11 14:42:24 2007 -0700
@@ -362,7 +362,7 @@ void emulate_io_inst(VCPU *vcpu, u64 pad
temp += post_update;
vcpu_set_gr(vcpu,inst.M15.r3,temp,0);
- vmx_vcpu_increment_iip(vcpu);
+ vcpu_increment_iip(vcpu);
return;
}
// Floating-point Load Pair + Imm ldfp8 M12
@@ -382,9 +382,9 @@ void emulate_io_inst(VCPU *vcpu, u64 pad
vcpu_set_fpreg(vcpu,inst.M12.f2,&v);
padr += 8;
vcpu_set_gr(vcpu,inst.M12.r3,padr,0);
- vmx_vcpu_increment_iip(vcpu);
+ vcpu_increment_iip(vcpu);
return;
- }
+ }
else{
panic_domain
(NULL,"This memory access instr can't be emulated: %lx pc=%lx\n ",
@@ -420,5 +420,5 @@ void emulate_io_inst(VCPU *vcpu, u64 pad
*/
}
}
- vmx_vcpu_increment_iip(vcpu);
-}
+ vcpu_increment_iip(vcpu);
+}
diff -r d607d575ec6a -r db72b85b81bb xen/arch/ia64/vmx/vmx_process.c
--- a/xen/arch/ia64/vmx/vmx_process.c Thu Jan 11 14:27:39 2007 -0700
+++ b/xen/arch/ia64/vmx/vmx_process.c Thu Jan 11 14:42:24 2007 -0700
@@ -93,7 +93,7 @@ void vmx_reflect_interruption(u64 ifa, u
if (vector == IA64_FP_FAULT_VECTOR) {
status = handle_fpu_swa(1, regs, isr);
if (!status) {
- vmx_vcpu_increment_iip(vcpu);
+ vcpu_increment_iip(vcpu);
return;
} else if (IA64_RETRY == status)
return;
@@ -104,7 +104,7 @@ void vmx_reflect_interruption(u64 ifa, u
if (!status)
return;
else if (IA64_RETRY == status) {
- vmx_vcpu_decrement_iip(vcpu);
+ vcpu_decrement_iip(vcpu);
return;
}
}
@@ -143,16 +143,16 @@ vmx_ia64_handle_break (unsigned long ifa
/* Allow hypercalls only when cpl = 0. */
if (iim == d->arch.breakimm) {
ia64_hypercall(regs);
- vmx_vcpu_increment_iip(v);
+ vcpu_increment_iip(v);
return IA64_NO_FAULT;
}
else if(iim == DOMN_PAL_REQUEST){
pal_emul(v);
- vmx_vcpu_increment_iip(v);
+ vcpu_increment_iip(v);
return IA64_NO_FAULT;
}else if(iim == DOMN_SAL_REQUEST){
sal_emul(v);
- vmx_vcpu_increment_iip(v);
+ vcpu_increment_iip(v);
return IA64_NO_FAULT;
}
}
diff -r d607d575ec6a -r db72b85b81bb xen/arch/ia64/vmx/vmx_vcpu.c
--- a/xen/arch/ia64/vmx/vmx_vcpu.c Thu Jan 11 14:27:39 2007 -0700
+++ b/xen/arch/ia64/vmx/vmx_vcpu.c Thu Jan 11 14:42:24 2007 -0700
@@ -145,48 +145,6 @@ vmx_vcpu_set_psr(VCPU *vcpu, unsigned lo
return ;
}
-/* Adjust slot both in pt_regs and vpd, upon vpsr.ri which
- * should have sync with ipsr in entry.
- *
- * Clear some bits due to successfully emulation.
- */
-IA64FAULT vmx_vcpu_increment_iip(VCPU *vcpu)
-{
- // TODO: trap_bounce?? Eddie
- REGS *regs = vcpu_regs(vcpu);
- IA64_PSR *ipsr = (IA64_PSR *)®s->cr_ipsr;
-
- if (ipsr->ri == 2) {
- ipsr->ri = 0;
- regs->cr_iip += 16;
- } else {
- ipsr->ri++;
- }
-
- ipsr->val &=
- (~ (IA64_PSR_ID |IA64_PSR_DA | IA64_PSR_DD |
- IA64_PSR_SS | IA64_PSR_ED | IA64_PSR_IA
- ));
-
- return (IA64_NO_FAULT);
-}
-
-
-IA64FAULT vmx_vcpu_decrement_iip(VCPU *vcpu)
-{
- REGS *regs = vcpu_regs(vcpu);
- IA64_PSR *ipsr = (IA64_PSR *)®s->cr_ipsr;
-
- if (ipsr->ri == 0) {
- ipsr->ri = 2;
- regs->cr_iip -= 16;
- } else {
- ipsr->ri--;
- }
- return (IA64_NO_FAULT);
-}
-
-
IA64FAULT vmx_vcpu_cover(VCPU *vcpu)
{
REGS *regs = vcpu_regs(vcpu);
@@ -199,14 +157,11 @@ IA64FAULT vmx_vcpu_cover(VCPU *vcpu)
return (IA64_NO_FAULT);
}
-
struct virtual_platform_def *
vmx_vcpu_get_plat(VCPU *vcpu)
{
return &(vcpu->domain->arch.vmx_platform);
}
-
-
IA64FAULT vmx_vcpu_set_rr(VCPU *vcpu, u64 reg, u64 val)
{
diff -r d607d575ec6a -r db72b85b81bb xen/arch/ia64/vmx/vmx_virt.c
--- a/xen/arch/ia64/vmx/vmx_virt.c Thu Jan 11 14:27:39 2007 -0700
+++ b/xen/arch/ia64/vmx/vmx_virt.c Thu Jan 11 14:42:24 2007 -0700
@@ -1568,7 +1568,7 @@ if ( (cause == 0xff && opcode == 0x1e000
#endif
if ( status == IA64_NO_FAULT && cause !=EVENT_RFI ) {
- vmx_vcpu_increment_iip(vcpu);
+ vcpu_increment_iip(vcpu);
}
recover_if_physical_mode(vcpu);
diff -r d607d575ec6a -r db72b85b81bb xen/arch/ia64/xen/vcpu.c
--- a/xen/arch/ia64/xen/vcpu.c Thu Jan 11 14:27:39 2007 -0700
+++ b/xen/arch/ia64/xen/vcpu.c Thu Jan 11 14:42:24 2007 -0700
@@ -695,6 +695,20 @@ IA64FAULT vcpu_increment_iip(VCPU * vcpu
return IA64_NO_FAULT;
}
+IA64FAULT vcpu_decrement_iip(VCPU * vcpu)
+{
+ REGS *regs = vcpu_regs(vcpu);
+ struct ia64_psr *ipsr = (struct ia64_psr *)®s->cr_ipsr;
+
+ if (ipsr->ri == 0) {
+ ipsr->ri = 2;
+ regs->cr_iip -= 16;
+ } else
+ ipsr->ri--;
+
+ return IA64_NO_FAULT;
+}
+
IA64FAULT vcpu_set_ifa(VCPU * vcpu, u64 val)
{
PSCB(vcpu, ifa) = val;
diff -r d607d575ec6a -r db72b85b81bb xen/include/asm-ia64/vcpu.h
--- a/xen/include/asm-ia64/vcpu.h Thu Jan 11 14:27:39 2007 -0700
+++ b/xen/include/asm-ia64/vcpu.h Thu Jan 11 14:42:24 2007 -0700
@@ -77,6 +77,7 @@ extern IA64FAULT vcpu_get_isr(VCPU * vcp
extern IA64FAULT vcpu_get_isr(VCPU * vcpu, u64 * pval);
extern IA64FAULT vcpu_get_iip(VCPU * vcpu, u64 * pval);
extern IA64FAULT vcpu_increment_iip(VCPU * vcpu);
+extern IA64FAULT vcpu_decrement_iip(VCPU * vcpu);
extern IA64FAULT vcpu_get_ifa(VCPU * vcpu, u64 * pval);
extern IA64FAULT vcpu_get_itir(VCPU * vcpu, u64 * pval);
extern unsigned long vcpu_get_itir_on_fault(VCPU * vcpu, u64 ifa);
diff -r d607d575ec6a -r db72b85b81bb xen/include/asm-ia64/vmx_vcpu.h
--- a/xen/include/asm-ia64/vmx_vcpu.h Thu Jan 11 14:27:39 2007 -0700
+++ b/xen/include/asm-ia64/vmx_vcpu.h Thu Jan 11 14:42:24 2007 -0700
@@ -115,8 +115,6 @@ extern void memwrite_v(VCPU * vcpu, thas
size_t s);
extern void memwrite_p(VCPU * vcpu, u64 * src, u64 * dest, size_t s);
extern void vcpu_load_kernel_regs(VCPU * vcpu);
-extern IA64FAULT vmx_vcpu_increment_iip(VCPU * vcpu);
-extern IA64FAULT vmx_vcpu_decrement_iip(VCPU * vcpu);
extern void vmx_switch_rr7(unsigned long, shared_info_t *, void *, void *,
void *);
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|