|
|
|
|
|
|
|
|
|
|
xen-changelog
[Xen-changelog] [xen-unstable] Support INC/DEC in mmio decoder. Opcodes
# HG changeset patch
# User kfraser@xxxxxxxxxxxxxxxxxxxxx
# Date 1171455001 0
# Node ID ed6501070f3724ab2c6a2738315ee942ebff876c
# Parent 6daa91dc924700c6b9821f54788ca27ea9a22e01
Support INC/DEC in mmio decoder. Opcodes 0xFE and 0xFF.
Signed-off-by: Keir Fraser <keir@xxxxxxxxxxxxx>
---
xen/arch/x86/hvm/platform.c | 33 +++++++++++++++++++++++++++++++++
1 files changed, 33 insertions(+)
diff -r 6daa91dc9247 -r ed6501070f37 xen/arch/x86/hvm/platform.c
--- a/xen/arch/x86/hvm/platform.c Wed Feb 14 12:02:20 2007 +0000
+++ b/xen/arch/x86/hvm/platform.c Wed Feb 14 12:10:01 2007 +0000
@@ -690,6 +690,39 @@ static int mmio_decode(int address_bytes
} else
return DECODE_failure;
+ case 0xFE:
+ case 0xFF:
+ {
+ unsigned char ins_subtype = (opcode[1] >> 3) & 7;
+
+ if ( opcode[0] == 0xFE ) {
+ *op_size = BYTE;
+ GET_OP_SIZE_FOR_BYTE(size_reg);
+ } else {
+ GET_OP_SIZE_FOR_NONEBYTE(*op_size);
+ size_reg = *op_size;
+ }
+
+ mmio_op->immediate = 1;
+ mmio_op->operand[0] = mk_operand(size_reg, 0, 0, IMMEDIATE);
+ mmio_op->operand[1] = mk_operand(size_reg, 0, 0, MEMORY);
+
+ switch ( ins_subtype ) {
+ case 0: /* inc */
+ mmio_op->instr = INSTR_ADD;
+ return DECODE_success;
+
+ case 1: /* dec */
+ mmio_op->instr = INSTR_OR;
+ return DECODE_success;
+
+ default:
+ printk("%x/%x, This opcode isn't handled yet!\n",
+ *opcode, ins_subtype);
+ return DECODE_failure;
+ }
+ }
+
case 0x0F:
break;
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|
<Prev in Thread] |
Current Thread |
[Next in Thread> |
- [Xen-changelog] [xen-unstable] Support INC/DEC in mmio decoder. Opcodes 0xFE and 0xFF.,
Xen patchbot-unstable <=
|
|
|
|
|