# HG changeset patch
# User kfraser@xxxxxxxxxxxxxxxxxxxxx
# Date 1174062149 0
# Node ID 670aef15eb553ea47d5abbbbc2a30d9b60dfd94f
# Parent f8ef8f4662253e68b577bd81df4be12c7c7cb860
hvm ioemu: Add support for IOREQ_TYPE_XCHG in qemu-dm.
From: Trolle Selander <trolle.selander@xxxxxxxxx>
Signed-off-by: Keir Fraser <keir@xxxxxxxxxxxxx>
---
tools/ioemu/target-i386-dm/helper2.c | 15 +++++++++++++++
1 files changed, 15 insertions(+)
diff -r f8ef8f466225 -r 670aef15eb55 tools/ioemu/target-i386-dm/helper2.c
--- a/tools/ioemu/target-i386-dm/helper2.c Fri Mar 16 16:21:16 2007 +0000
+++ b/tools/ioemu/target-i386-dm/helper2.c Fri Mar 16 16:22:29 2007 +0000
@@ -439,6 +439,18 @@ void cpu_ioreq_xor(CPUState *env, ioreq_
req->data = tmp1;
}
+void cpu_ioreq_xchg(CPUState *env, ioreq_t *req)
+{
+ unsigned long tmp1;
+
+ if (req->data_is_ptr != 0)
+ hw_error("expected scalar value");
+
+ read_physical(req->addr, req->size, &tmp1);
+ write_physical(req->addr, req->size, &req->data);
+ req->data = tmp1;
+}
+
void __handle_ioreq(CPUState *env, ioreq_t *req)
{
if (!req->data_is_ptr && req->dir == IOREQ_WRITE && req->size != 4)
@@ -462,6 +474,9 @@ void __handle_ioreq(CPUState *env, ioreq
break;
case IOREQ_TYPE_XOR:
cpu_ioreq_xor(env, req);
+ break;
+ case IOREQ_TYPE_XCHG:
+ cpu_ioreq_xchg(env, req);
break;
default:
hw_error("Invalid ioreq type 0x%x\n", req->type);
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|