# HG changeset patch
# User Jerone Young <[EMAIL PROTECTED]>
# Date 1193849564 18000
# Node ID 054af67e39314b79bbee8e4cc92a7354aff92fc2
# Parent  8bb1470e4e5d442f0b46abedc9402a05e00119b6
Move handle_io_abi_10 to kvmctl-x86.c

Signed-off-by: Jerone Young <[EMAIL PROTECTED]>

diff --git a/libkvm/libkvm-x86.c b/libkvm/libkvm-x86.c
--- a/libkvm/libkvm-x86.c
+++ b/libkvm/libkvm-x86.c
@@ -1,4 +1,5 @@
 #include "libkvm.h"
+#include "kvm-abi-10.h"
 #include <unistd.h>
 #include <stropts.h>
 #include <sys/mman.h>
@@ -403,4 +404,59 @@ int kvm_set_lapic(kvm_context_t kvm, int
 
 #endif
 
-
+static int handle_io_abi10(kvm_context_t kvm, struct kvm_run_abi10 *run,
+                          int vcpu)
+{
+       uint16_t addr = run->io.port;
+       int r;
+       int i;
+       void *p = (void *)run + run->io.data_offset;
+
+       for (i = 0; i < run->io.count; ++i) {
+               switch (run->io.direction) {
+               case KVM_EXIT_IO_IN:
+                       switch (run->io.size) {
+                       case 1:
+                               r = kvm->callbacks->inb(kvm->opaque, addr, p);
+                               break;
+                       case 2:
+                               r = kvm->callbacks->inw(kvm->opaque, addr, p);
+                               break;
+                       case 4:
+                               r = kvm->callbacks->inl(kvm->opaque, addr, p);
+                               break;
+                       default:
+                               fprintf(stderr, "bad I/O size %d\n", 
run->io.size);
+                               return -EMSGSIZE;
+                       }
+                       break;
+               case KVM_EXIT_IO_OUT:
+                       switch (run->io.size) {
+                       case 1:
+                               r = kvm->callbacks->outb(kvm->opaque, addr,
+                                                    *(uint8_t *)p);
+                               break;
+                       case 2:
+                               r = kvm->callbacks->outw(kvm->opaque, addr,
+                                                    *(uint16_t *)p);
+                               break;
+                       case 4:
+                               r = kvm->callbacks->outl(kvm->opaque, addr,
+                                                    *(uint32_t *)p);
+                               break;
+                       default:
+                               fprintf(stderr, "bad I/O size %d\n", 
run->io.size);
+                               return -EMSGSIZE;
+                       }
+                       break;
+               default:
+                       fprintf(stderr, "bad I/O direction %d\n", 
run->io.direction);
+                       return -EPROTO;
+               }
+
+               p += run->io.size;
+       }
+       run->io_completed = 1;
+
+       return 0;
+}
diff --git a/libkvm/libkvm.c b/libkvm/libkvm.c
--- a/libkvm/libkvm.c
+++ b/libkvm/libkvm.c
@@ -538,8 +538,7 @@ int kvm_set_irqchip(kvm_context_t kvm, s
 
 #endif
 
-static int handle_io_abi10(kvm_context_t kvm, struct kvm_run_abi10 *run,
-                          int vcpu)
+static int handle_io(kvm_context_t kvm, struct kvm_run *run, int vcpu)
 {
        uint16_t addr = run->io.port;
        int r;
@@ -590,62 +589,6 @@ static int handle_io_abi10(kvm_context_t
 
                p += run->io.size;
        }
-       run->io_completed = 1;
-
-       return 0;
-}
-
-static int handle_io(kvm_context_t kvm, struct kvm_run *run, int vcpu)
-{
-       uint16_t addr = run->io.port;
-       int r;
-       int i;
-       void *p = (void *)run + run->io.data_offset;
-
-       for (i = 0; i < run->io.count; ++i) {
-               switch (run->io.direction) {
-               case KVM_EXIT_IO_IN:
-                       switch (run->io.size) {
-                       case 1:
-                               r = kvm->callbacks->inb(kvm->opaque, addr, p);
-                               break;
-                       case 2:
-                               r = kvm->callbacks->inw(kvm->opaque, addr, p);
-                               break;
-                       case 4:
-                               r = kvm->callbacks->inl(kvm->opaque, addr, p);
-                               break;
-                       default:
-                               fprintf(stderr, "bad I/O size %d\n", 
run->io.size);
-                               return -EMSGSIZE;
-                       }
-                       break;
-               case KVM_EXIT_IO_OUT:
-                       switch (run->io.size) {
-                       case 1:
-                               r = kvm->callbacks->outb(kvm->opaque, addr,
-                                                    *(uint8_t *)p);
-                               break;
-                       case 2:
-                               r = kvm->callbacks->outw(kvm->opaque, addr,
-                                                    *(uint16_t *)p);
-                               break;
-                       case 4:
-                               r = kvm->callbacks->outl(kvm->opaque, addr,
-                                                    *(uint32_t *)p);
-                               break;
-                       default:
-                               fprintf(stderr, "bad I/O size %d\n", 
run->io.size);
-                               return -EMSGSIZE;
-                       }
-                       break;
-               default:
-                       fprintf(stderr, "bad I/O direction %d\n", 
run->io.direction);
-                       return -EPROTO;
-               }
-
-               p += run->io.size;
-       }
 
        return 0;
 }
@@ -1224,3 +1167,4 @@ int kvm_irqchip_in_kernel(kvm_context_t 
 {
     return kvm->irqchip_in_kernel;
 }
+

-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/
_______________________________________________
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel

Reply via email to