[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-unstable] Support INC/DEC in mmio decoder. Opcodes 0xFE and 0xFF.
# 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
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |