Skip to contentSkip to conversation

fill kvm_callback with arch specific dcr_read/dcr_write callbacks

PATCH New Christian Ehrhardt 1 participant 1 message Jan 11, 2008 KVM

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 fill kvm_callback with arch specific dcr_read/dcr_write callbacks

Subject: [PATCH] fill kvm_callback with arch specific dcr_read/dcr_write callbacks
From: Christian Ehrhardt <[email protected]>

This Patch adds the callback assignment and handlers for powerpc_dcr_read and ppc_dcr_write which are called from libkvm.
This is the part of the patch that changes already submitted code while the implementation will follow as one when kvm-userspace for ppc is finished, but appyling this now will reduce the changes to non-ppc files later in the big patch.

 libkvm/libkvm-powerpc.c |    8 ++++----
 libkvm/libkvm.h         |    4 ++--
 qemu/qemu-kvm.c         |    4 ++++
 qemu/qemu-kvm.h         |    5 +++++
 4 files changed, 15 insertions(+), 6 deletions(-)
libkvm/libkvm-powerpc.c +4 -4
@@ -31,11 +31,11 @@ int handle_dcr(struct kvm_run *run,  kvm
 	int ret = 0;
 
 	if (run->dcr.is_write)
-		ret = kvm->callbacks->powerpc_dcr_write(kvm,
-					run->dcr.dcrn,run->dcr.data);
+		ret = kvm->callbacks->powerpc_dcr_write(run->dcr.dcrn,
+							run->dcr.data);
 	else
-		ret = kvm->callbacks->powerpc_dcr_read(kvm,
-					run->dcr.dcrn, &(run->dcr.data));
+		ret = kvm->callbacks->powerpc_dcr_read(run->dcr.dcrn, 
+							&(run->dcr.data));
 
 	return ret;
 }
libkvm/libkvm.h +2 -2
@@ -66,8 +66,8 @@ struct kvm_callbacks {
     int (*pre_kvm_run)(void *opaque, int vcpu);
     int (*tpr_access)(void *opaque, int vcpu, uint64_t rip, int is_write);
 #if defined(__powerpc__)
-    int (*powerpc_dcr_read)(kvm_context_t kvm, uint32_t dcrn, uint32_t *data);
-    int (*powerpc_dcr_write)(kvm_context_t kvm, uint32_t dcrn, uint32_t data);
+    int (*powerpc_dcr_read)(uint32_t dcrn, uint32_t *data);
+    int (*powerpc_dcr_write)(uint32_t dcrn, uint32_t data);
 #endif
 };
 
qemu/qemu-kvm.c +4 -0
@@ -533,6 +533,10 @@ static struct kvm_callbacks qemu_kvm_ops
 #ifdef TARGET_I386
     .tpr_access = handle_tpr_access,
 #endif
+#ifdef TARGET_PPC
+    .powerpc_dcr_read = handle_powerpc_dcr_read,
+    .powerpc_dcr_write = handle_powerpc_dcr_write,
+#endif
 };
 
 int kvm_qemu_init()
qemu/qemu-kvm.h +5 -0
@@ -48,6 +48,11 @@ int handle_tpr_access(void *opaque, int 
 int handle_tpr_access(void *opaque, int vcpu,
 			     uint64_t rip, int is_write);
 
+#ifdef TARGET_PPC
+int handle_powerpc_dcr_read(uint32_t dcrn, uint32_t *data);
+int handle_powerpc_dcr_write(uint32_t dcrn, uint32_t data);
+#endif
+
 #define ALIGN(x, y)  (((x)+(y)-1) & ~((y)-1))
 #define BITMAP_SIZE(m) (ALIGN(((m)>>TARGET_PAGE_BITS), HOST_LONG_BITS) / 8)
 

-------------------------------------------------------------------------
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace