Hi,

On Sat, Oct 2, 2010 at 12:38 AM, Sri Ram Vemulpali
<[email protected]> wrote:
> Hi All,
>
>      I am developing segmentation for my kernel. In that process I
> choose to divide whole memory in to fixed size segments. So a 4GB
> memory can be divided in to 8192 segments. So I initialize segment
> descriptors in to the GTD withs segments base address and limit. Here
> base address are 0,0x10000,0x20000,..... and limit is 64kb always for
> every segment. For a task if I choose a segment to assign, I will
> place the index of that segment descriptor in to CS, DS. Now when
> process generates address to put on address bus, then it will do
> computation from logical address to linear address.
> After processor picks logical address, it chooses segment descriptor
> and adds this 32-bit logical address to segment base address to
> generate linear address. Now my question is, if my segment size is
> 64kb, how is that 32-bit offset is added to segment base address,
> which is not right. It should only consider 16-bit offset to add to
> base to generate linear address. How can I tell to my processor to
> choose only 16-bit offset. Does processor drives offset bit width
> automatically based on limit defined in segment descriptor.

You don't have to "tell" your processor to choose only 16-bit offset.
If the offset is greater than segment limit an exception will occur.


>
> Any insight in to this will help me. please clarify my doubt. Waiting
> for you reply.

> To unsubscribe from this list: send an email with
> "unsubscribe kernelnewbies" to [email protected]
> Please read the FAQ at http://kernelnewbies.org/FAQ
>
>
@Bond: GTD should be GDT.Also please have a look inside x86 reference manual.

thanks,
Daniel.

--
To unsubscribe from this list: send an email with
"unsubscribe kernelnewbies" to [email protected]
Please read the FAQ at http://kernelnewbies.org/FAQ

Reply via email to