From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 882 invoked by alias); 13 Oct 2009 08:46:32 -0000 Received: (qmail 872 invoked by uid 22791); 13 Oct 2009 08:46:31 -0000 X-SWARE-Spam-Status: No, hits=-1.9 required=5.0 tests=AWL,BAYES_00,SARE_MSGID_LONG40,SPF_PASS X-Spam-Check-By: sourceware.org Received: from mail-qy0-f185.google.com (HELO mail-qy0-f185.google.com) (209.85.221.185) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Tue, 13 Oct 2009 08:46:23 +0000 Received: by qyk15 with SMTP id 15so8355145qyk.23 for ; Tue, 13 Oct 2009 01:46:22 -0700 (PDT) MIME-Version: 1.0 Received: by 10.229.29.204 with SMTP id r12mr48364qcc.72.1255423582139; Tue, 13 Oct 2009 01:46:22 -0700 (PDT) In-Reply-To: <4AD34D1B.6030609@vmware.com> References: <1255314282-23062-1-git-send-email-freephp@gmail.com> <4AD34D1B.6030609@vmware.com> From: Jiang Jilin Date: Tue, 13 Oct 2009 08:46:00 -0000 Message-ID: <7d77a27d0910130146o18c1edafy5d30530bf42a3ac@mail.gmail.com> Subject: Re: [PATCH] Save CS segment register for ljmp instruction To: Michael Snyder Cc: Hui Zhu , gdb-patches ml Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable X-IsSubscribed: yes Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2009-10/txt/msg00263.txt.bz2 On Mon, Oct 12, 2009 at 11:36 PM, Michael Snyder wrote: > Could one of you write an assembly language testcase? I paste the code from Linux kernel(2.6.24 arch/x86/kernel/head_32.S:278) as follows: ---- BEGIN /* * Enable paging */ movl $swapper_pg_dir-__PAGE_OFFSET,%eax movl %eax,%cr3 /* set the page table pointer.. */ movl %cr0,%eax orl $0x80000000,%eax movl %eax,%cr0 /* ..and set paging (PG) bit */ ljmp $__BOOT_CS,$1f /* Clear prefetch and normalize %eip */ 1: /* Set up the stack pointer */ lss stack_start,%esp ---END the CS changed in the code above, but I'm not sure the example is enough to assure my patch's correctness. Thank you! > > Hui Zhu wrote: >> >> Could you post some code to test the ljmp and cs? =A0I am not sure about= cs >> part. >> >> Thanks, >> Hui >> >> On Mon, Oct 12, 2009 at 10:24, Jiang Jilin wrote: >>> >>> Hi Hui, >>> >>> I think CS register should be stored for ljmp instruction, but I'm >>> not pretty sure, please help me confirm it. >>> >>> Thanks! >>> >>> 2009-10-12 =A0Jiang Jilin =A0 >>> >>> =A0 =A0 =A0 * i386-tdep.c (i386_process_record): Save CS segment regist= er >>> =A0 =A0 =A0 for ljmp instruction >>> --- >>> =A0gdb/i386-tdep.c | =A0 =A03 +++ >>> =A01 files changed, 3 insertions(+), 0 deletions(-) >>> >>> diff --git a/gdb/i386-tdep.c b/gdb/i386-tdep.c >>> index b4dc646..0145008 100644 >>> --- a/gdb/i386-tdep.c >>> +++ b/gdb/i386-tdep.c >>> @@ -3606,8 +3606,11 @@ reswitch: >>> =A0 =A0 =A0 =A0 break; >>> =A0 =A0 =A0 =A0 /* jmp */ >>> =A0 =A0 =A0 case 4: >>> + =A0 =A0 =A0 =A0 I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_EFLAGS_REGN= UM); >>> + =A0 =A0 =A0 =A0 break; >>> =A0 =A0 =A0 =A0 /* ljmp */ >>> =A0 =A0 =A0 case 5: >>> + =A0 =A0 =A0 =A0 I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_CS_REGNUM); >>> =A0 =A0 =A0 =A0 I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_EFLAGS_REGNUM= ); >>> =A0 =A0 =A0 =A0 break; >>> =A0 =A0 =A0 =A0 /* push */ >>> -- >>> 1.5.4.3 >>> >>> > > --=20 Jiang