[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH] access gdtdesc on segment 0 unconditionally (Re: [PATCH] i38
From: |
Pavel Roskin |
Subject: |
Re: [PATCH] access gdtdesc on segment 0 unconditionally (Re: [PATCH] i386-qemu port) |
Date: |
Mon, 22 Jun 2009 17:36:22 -0400 |
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
- [PATCH] access gdtdesc on segment 0 unconditionally (Re: [PATCH] i386-qemu port), (continued)
- [PATCH] access gdtdesc on segment 0 unconditionally (Re: [PATCH] i386-qemu port), Robert Millan, 2009/06/21
- Re: [PATCH] access gdtdesc on segment 0 unconditionally (Re: [PATCH] i386-qemu port), Pavel Roskin, 2009/06/21
- Re: [PATCH] access gdtdesc on segment 0 unconditionally (Re: [PATCH] i386-qemu port), Robert Millan, 2009/06/22
- Re: [PATCH] access gdtdesc on segment 0 unconditionally (Re: [PATCH] i386-qemu port), Pavel Roskin, 2009/06/22
- Re: [PATCH] access gdtdesc on segment 0 unconditionally (Re: [PATCH] i386-qemu port), Robert Millan, 2009/06/22
- Re: [PATCH] access gdtdesc on segment 0 unconditionally (Re: [PATCH] i386-qemu port), Robert Millan, 2009/06/22
- Re: [PATCH] access gdtdesc on segment 0 unconditionally (Re: [PATCH] i386-qemu port), Pavel Roskin, 2009/06/22
- Re: [PATCH] access gdtdesc on segment 0 unconditionally (Re: [PATCH] i386-qemu port), Robert Millan, 2009/06/22
- Re: [PATCH] access gdtdesc on segment 0 unconditionally (Re: [PATCH] i386-qemu port), Pavel Roskin, 2009/06/22
- Re: [PATCH] access gdtdesc on segment 0 unconditionally (Re: [PATCH] i386-qemu port), Robert Millan, 2009/06/23
- Re: [PATCH] access gdtdesc on segment 0 unconditionally (Re: [PATCH] i386-qemu port),
Pavel Roskin <=
- Re: [PATCH] access gdtdesc on segment 0 unconditionally (Re: [PATCH] i386-qemu port), Robert Millan, 2009/06/22
- about Apple compiler (Re: [PATCH] access gdtdesc on segment 0 unconditionally (Re: [PATCH] i386-qemu port)), Robert Millan, 2009/06/22
- Re: about Apple compiler (Re: [PATCH] access gdtdesc on segment 0 unconditionally (Re: [PATCH] i386-qemu port)), Pavel Roskin, 2009/06/22
[PATCH] s/GRUB_MEMORY_MACHINE_LINK_ADDR/GRUB_KERNEL_MACHINE_LINK_ADDR/g (Re: [PATCH] i386-qemu port), Robert Millan, 2009/06/22
clean patch for i386-qemu port (Re: [PATCH] i386-qemu port), Robert Millan, 2009/06/22