From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1Ljcvp-00024r-Ll for qemu-devel@nongnu.org; Tue, 17 Mar 2009 13:18:25 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1Ljcvm-00022J-1d for qemu-devel@nongnu.org; Tue, 17 Mar 2009 13:18:25 -0400 Received: from [199.232.76.173] (port=41212 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Ljcvl-00022F-PO for qemu-devel@nongnu.org; Tue, 17 Mar 2009 13:18:21 -0400 Received: from gecko.sbs.de ([194.138.37.40]:17574) by monty-python.gnu.org with esmtps (TLS-1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1Ljcvl-0003mM-BT for qemu-devel@nongnu.org; Tue, 17 Mar 2009 13:18:21 -0400 Received: from mail2.sbs.de (localhost [127.0.0.1]) by gecko.sbs.de (8.12.11.20060308/8.12.11) with ESMTP id n2HHIJpw010751 for ; Tue, 17 Mar 2009 18:18:19 +0100 Received: from [139.25.109.167] (mchn012c.mchp.siemens.de [139.25.109.167] (may be forged)) by mail2.sbs.de (8.12.11.20060308/8.12.11) with ESMTP id n2HHIJKk002353 for ; Tue, 17 Mar 2009 18:18:19 +0100 Message-ID: <49BFDB5B.8060701@siemens.com> Date: Tue, 17 Mar 2009 18:18:19 +0100 From: Jan Kiszka MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-15 Content-Transfer-Encoding: 7bit Subject: [Qemu-devel] [PATCH 2/2] kvm: Drop kvm_patch_opcode_byte Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel As cpu_memory_rw_debug is now capable of modifying ROM, we can drop our own patch function. Signed-off-by: Jan Kiszka --- target-i386/kvm.c | 27 ++++----------------------- 1 files changed, 4 insertions(+), 23 deletions(-) diff --git a/target-i386/kvm.c b/target-i386/kvm.c index 5168a02..4f437c2 100644 --- a/target-i386/kvm.c +++ b/target-i386/kvm.c @@ -686,31 +686,12 @@ int kvm_arch_handle_exit(CPUState *env, struct kvm_run *run) } #ifdef KVM_CAP_SET_GUEST_DEBUG -static int kvm_patch_opcode_byte(CPUState *env, target_ulong addr, uint8_t val) -{ - target_phys_addr_t phys_page_addr; - unsigned long pd; - uint8_t *ptr; - - phys_page_addr = cpu_get_phys_page_debug(env, addr & TARGET_PAGE_MASK); - if (phys_page_addr == -1) - return -EINVAL; - - pd = cpu_get_physical_page_desc(phys_page_addr); - if ((pd & ~TARGET_PAGE_MASK) != IO_MEM_RAM && - (pd & ~TARGET_PAGE_MASK) != IO_MEM_ROM && !(pd & IO_MEM_ROMD)) - return -EINVAL; - - ptr = phys_ram_base + (pd & TARGET_PAGE_MASK) - + (addr & ~TARGET_PAGE_MASK); - *ptr = val; - return 0; -} - int kvm_arch_insert_sw_breakpoint(CPUState *env, struct kvm_sw_breakpoint *bp) { + const static uint8_t int3 = 0xcc; + if (cpu_memory_rw_debug(env, bp->pc, (uint8_t *)&bp->saved_insn, 1, 0) || - kvm_patch_opcode_byte(env, bp->pc, 0xcc)) + cpu_memory_rw_debug(env, bp->pc, (uint8_t *)&int3, 1, 1)) return -EINVAL; return 0; } @@ -720,7 +701,7 @@ int kvm_arch_remove_sw_breakpoint(CPUState *env, struct kvm_sw_breakpoint *bp) uint8_t int3; if (cpu_memory_rw_debug(env, bp->pc, &int3, 1, 0) || int3 != 0xcc || - kvm_patch_opcode_byte(env, bp->pc, bp->saved_insn)) + cpu_memory_rw_debug(env, bp->pc, (uint8_t *)&bp->saved_insn, 1, 1)) return -EINVAL; return 0; }