From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1MIrBq-0000v1-MR for mharc-grub-devel@gnu.org; Mon, 22 Jun 2009 17:36:34 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1MIrBo-0000uQ-VH for grub-devel@gnu.org; Mon, 22 Jun 2009 17:36:32 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1MIrBj-0000sm-5s for grub-devel@gnu.org; Mon, 22 Jun 2009 17:36:32 -0400 Received: from [199.232.76.173] (port=34713 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1MIrBj-0000sd-1e for grub-devel@gnu.org; Mon, 22 Jun 2009 17:36:27 -0400 Received: from c60.cesmail.net ([216.154.195.49]:12029) by monty-python.gnu.org with esmtps (TLS-1.0:RSA_ARCFOUR_SHA1:16) (Exim 4.60) (envelope-from ) id 1MIrBh-0000xO-LN for grub-devel@gnu.org; Mon, 22 Jun 2009 17:36:26 -0400 Received: from unknown (HELO smtprelay2.cesmail.net) ([192.168.1.112]) by c60.cesmail.net with ESMTP; 22 Jun 2009 17:36:23 -0400 Received: from [192.168.0.22] (static-72-92-88-10.phlapa.fios.verizon.net [72.92.88.10]) by smtprelay2.cesmail.net (Postfix) with ESMTPSA id D221234C6A for ; Mon, 22 Jun 2009 17:42:33 -0400 (EDT) From: Pavel Roskin To: The development of GRUB 2 In-Reply-To: <20090622205213.GB7871@thorin> References: <20090621181748.GA21152@thorin> <20090621225332.GB2360@thorin> <1245633761.9864.34.camel@mj> <20090622095252.GC8969@thorin> <1245699543.2561.1.camel@mj> <20090622205213.GB7871@thorin> Content-Type: text/plain Date: Mon, 22 Jun 2009 17:36:22 -0400 Message-Id: <1245706582.10187.32.camel@mj> Mime-Version: 1.0 X-Mailer: Evolution 2.26.2 (2.26.2-1.fc11) Content-Transfer-Encoding: 7bit X-detected-operating-system: by monty-python.gnu.org: Genre and OS details not recognized. Subject: Re: [PATCH] access gdtdesc on segment 0 unconditionally (Re: [PATCH] i386-qemu port) X-BeenThere: grub-devel@gnu.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: The development of GRUB 2 List-Id: The development of GRUB 2 List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 22 Jun 2009 21:36:33 -0000 On Mon, 2009-06-22 at 22:52 +0200, Robert Millan wrote: > On Mon, Jun 22, 2009 at 03:39:03PM -0400, Pavel Roskin wrote: > > On Mon, 2009-06-22 at 11:52 +0200, Robert Millan wrote: > > > > Since %cs is pointing to the code, it should be possible to point it to > > > > gdtdesc. They should be nearby. > > > > > > It is nearby, but the address reference for `gdtdesc' is absolute, NOT > > > relative to %cs. Of course, when %cs is 0 that's no problem. But in my > > > case I can't set %cs to 0 because my code is above 0x10000. > > > > I think we can remove ADDR32 from the command. I tried that on i386-pc > > and it works in qemu and on real hardware. I don't see any need to use > > a 32-bit address in the lgdt command. > > This won't build. I don't think it's possible to use relative addresses > with this particular instruction. "DATA32 lgdt %cs:gdtdesc" results in: > > boot_img-boot_i386_qemu_boot.o: In function `real_to_prot': > (.text+0x64): relocation truncated to fit: R_386_16 against `.text' My bad, I only checked it for i386-pc. I see this error for ieee1275-i386. I believe it happens because we relocate the output too high in memory, so we cannot relocate a 16-bit address there. > What's the problem with removing %cs? It's presence there is bogus. It > *seems* to indicate gdtdesc is a segment-relative reference, but in fact > it's not, and it just happens to work because %cs was set to 0. I just wanted to make sure we are not doing anything wrong. I have a feeling that somebody with a good knowledge of assembler tricks could write the code to use %cs and a 16-bit address, but I don't know how to do it. Anyway, your code is correct and I have no objections. Please commit. -- Regards, Pavel Roskin