Subject: [PATCH][RESEND] fill kvm_callback with arch specific
dcr_read/dcr_write callbacks v2
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.
Changes in v2:
This is version has the needed changes to main-ppc.c function prototypes
merged as discussed.
Signed-off-by: Christian Ehrhardt <[EMAIL PROTECTED]>
libkvm/libkvm-powerpc.c | 8 ++++----
libkvm/libkvm.h | 4 ++--
qemu/qemu-kvm.c | 4 ++++
qemu/qemu-kvm.h | 5 +++++
user/main-ppc.c | 4 ++--
5 files changed, 17 insertions(+), 8 deletions(-)
diff --git a/libkvm/libkvm-powerpc.c b/libkvm/libkvm-powerpc.c
--- a/libkvm/libkvm-powerpc.c
+++ b/libkvm/libkvm-powerpc.c
@@ -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;
}
diff --git a/libkvm/libkvm.h b/libkvm/libkvm.h
--- 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
--- 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
--- a/qemu/qemu-kvm.h
+++ b/qemu/qemu-kvm.h
@@ -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)
diff --git a/user/main-ppc.c b/user/main-ppc.c
--- a/user/main-ppc.c
+++ b/user/main-ppc.c
@@ -106,14 +106,14 @@ static int test_mem_write(void *opaque,
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;
-------------------------------------------------------------------------
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
_______________________________________________
kvm-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/kvm-devel