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.

Signed-off-by: Christian Ehrhardt <[EMAIL PROTECTED]>
Signed-off-by: Avi Kivity <[EMAIL PROTECTED]>

diff --git a/libkvm/libkvm-powerpc.c b/libkvm/libkvm-powerpc.c
index 1710e6d..e4385c3 100644
--- a/libkvm/libkvm-powerpc.c
+++ b/libkvm/libkvm-powerpc.c
@@ -31,11 +31,11 @@ int handle_dcr(struct kvm_run *run,  kvm_context_t 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;
 }
diff --git a/libkvm/libkvm.h b/libkvm/libkvm.h
index 2574abe..95d6c0c 100644
--- a/libkvm/libkvm.h
+++ b/libkvm/libkvm.h
@@ -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
 };
 
diff --git a/qemu/qemu-kvm.c b/qemu/qemu-kvm.c
index dd84686..fddbbd6 100644
--- a/qemu/qemu-kvm.c
+++ b/qemu/qemu-kvm.c
@@ -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()
diff --git a/qemu/qemu-kvm.h b/qemu/qemu-kvm.h
index e4aeb3a..c4514bb 100644
--- a/qemu/qemu-kvm.h
+++ b/qemu/qemu-kvm.h
@@ -48,6 +48,11 @@ void kvm_tpr_access_report(CPUState *env, uint64_t rip, int 
is_write);
 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)
 
diff --git a/user/main-ppc.c b/user/main-ppc.c
index 761f08e..3ca10c8 100644
--- a/user/main-ppc.c
+++ b/user/main-ppc.c
@@ -106,14 +106,14 @@ static int test_mem_write(void *opaque, uint64_t addr, 
uint8_t *data, int len)
        return 0;
 }
 
-static int test_dcr_read(kvm_context_t kvm, uint32_t dcrn, uint32_t *data)
+static int test_dcr_read(uint32_t dcrn, uint32_t *data)
 {
        printf("%s: dcrn %04X\n", __func__, dcrn);
        *data = 0;
        return 0;
 }
 
-static int test_dcr_write(kvm_context_t kvm, uint32_t dcrn, uint32_t data)
+static int test_dcr_write(uint32_t dcrn, uint32_t data)
 {
        printf("%s: dcrn %04X data %04X\n", __func__, dcrn, data);
        return 0;

-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
kvm-commits mailing list
kvm-commits@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-commits

Reply via email to