From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1K3yAE-0003y6-IZ for qemu-devel@nongnu.org; Wed, 04 Jun 2008 14:56:50 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1K3yAB-0003vl-Kq for qemu-devel@nongnu.org; Wed, 04 Jun 2008 14:56:48 -0400 Received: from [199.232.76.173] (port=54256 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1K3yAB-0003vb-Hf for qemu-devel@nongnu.org; Wed, 04 Jun 2008 14:56:47 -0400 Received: from fmmailgate03.web.de ([217.72.192.234]:49303) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1K3yAB-0007Tf-5D for qemu-devel@nongnu.org; Wed, 04 Jun 2008 14:56:47 -0400 Received: from smtp08.web.de (fmsmtp08.dlan.cinetic.de [172.20.5.216]) by fmmailgate03.web.de (Postfix) with ESMTP id 36901DE31DCC for ; Wed, 4 Jun 2008 20:56:46 +0200 (CEST) Received: from [88.65.37.28] (helo=[139.25.109.167]) by smtp08.web.de with asmtp (TLSv1:AES256-SHA:256) (WEB.DE 4.109 #226) id 1K3yA9-0000YH-00 for qemu-devel@nongnu.org; Wed, 04 Jun 2008 20:56:46 +0200 Resent-To: qemu-devel@nongnu.org Resent-Message-Id: <4846E56C.8040708@web.de> Message-ID: <4846E546.3070100@web.de> Date: Wed, 04 Jun 2008 20:56:06 +0200 From: Jan Kiszka MIME-Version: 1.0 References: <4846E354.805@web.de> In-Reply-To: <4846E354.805@web.de> Content-Type: text/plain; charset=ISO-8859-15 Content-Transfer-Encoding: 7bit Sender: jan.kiszka@web.de Subject: [Qemu-devel] [PATCH 2/3] Replace CF_SINGLE_INSN with SSTEP_INTERNAL 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@nongnu.org With the help of SSTEP_INTERNAL, we can overcome CF_SINGLE_INSN and, thus, tb_gen_code. Signed-off-by: Jan Kiszka --- exec.c | 43 ++----------------------------------------- 1 file changed, 2 insertions(+), 41 deletions(-) Index: b/exec.c =================================================================== --- a/exec.c +++ b/exec.c @@ -723,43 +723,6 @@ static void build_page_bitmap(PageDesc * } } -#ifdef TARGET_HAS_PRECISE_SMC - -static void tb_gen_code(CPUState *env, - target_ulong pc, target_ulong cs_base, int flags, - int cflags) -{ - TranslationBlock *tb; - uint8_t *tc_ptr; - target_ulong phys_pc, phys_page2, virt_page2; - int code_gen_size; - - phys_pc = get_phys_addr_code(env, pc); - tb = tb_alloc(pc); - if (!tb) { - /* flush must be done */ - tb_flush(env); - /* cannot fail at this point */ - tb = tb_alloc(pc); - } - tc_ptr = code_gen_ptr; - tb->tc_ptr = tc_ptr; - tb->cs_base = cs_base; - tb->flags = flags; - tb->cflags = cflags; - cpu_gen_code(env, tb, &code_gen_size); - code_gen_ptr = (void *)(((unsigned long)code_gen_ptr + code_gen_size + CODE_GEN_ALIGN - 1) & ~(CODE_GEN_ALIGN - 1)); - - /* check next page if needed */ - virt_page2 = (pc + tb->size - 1) & TARGET_PAGE_MASK; - phys_page2 = -1; - if ((pc & TARGET_PAGE_MASK) != virt_page2) { - phys_page2 = get_phys_addr_code(env, virt_page2); - } - tb_link_phys(tb, phys_pc, phys_page2); -} -#endif - /* invalidate all TBs which intersect with the target physical page starting in range [start;end[. NOTE: start and end must refer to the same physical page. 'is_cpu_write_access' should be true if called @@ -870,8 +833,7 @@ void tb_invalidate_phys_page_range(targe modifying the memory. It will ensure that it cannot modify itself */ env->current_tb = NULL; - tb_gen_code(env, current_pc, current_cs_base, current_flags, - CF_SINGLE_INSN); + env->singlestep_enabled |= SSTEP_INTERNAL; cpu_resume_from_signal(env, NULL); } #endif @@ -967,8 +929,7 @@ static void tb_invalidate_phys_page(targ modifying the memory. It will ensure that it cannot modify itself */ env->current_tb = NULL; - tb_gen_code(env, current_pc, current_cs_base, current_flags, - CF_SINGLE_INSN); + env->singlestep_enabled |= SSTEP_INTERNAL; cpu_resume_from_signal(env, puc); } #endif