RE: Wrong definition for the "x86_x32_tss_t" class ?

Jan Stoess <[email protected]> Thu, 23 Oct 2008 03:11:10 +0200
Newsgroups gmane.comp.micro-kernel.l4.l4ka.general
Message-ID <[email protected]>
> I suppose the next member named "stopper" is necessary to avoid the
> processor to generate an exception when dealing with the last byte of
> the io bitmap array, like said in the Intel documentation. In that
> case,
> adding one byte is not necessary and lead to a problem: the
> "init_io_space()" function only fill 'IOPERMBITMAP_SIZE' bytes. So,
> there is a byte that has an undefined contents between the "io_bitmap"
> array and the "stopper" byte.


You're right, stopper and IOPERMBITMAPS_SIZE is redundant. I've fixed it in the tree.

> > 2 - In the file "/kernel/src/arch/x86/x32/segdesc.h" : In lines 80
> and
> > 102, it is more logical to use 0xf in place of 0xff as the limit_high
> > field is only 4 bits.
>
> > 3 - In the file "/kernel/src/arch/x86/segdesc.h" : In the
> > "x86_descreg_t", why do you use the member
> > "pad[sizeof(word_t)-sizeof(u16_t)]" in the union ? The GDTR and IDTR
> > registers are 48 bits (address + limit) and the TR and LDTR registers
> are
> > only 16 bits (selector) even if they are internally larger (the
> hidden
> > part, only accessible by processor).
>

Fixed them in the tree as well.

-Jan
--
Jan Stoess
System Architecture Group
University of Karlsruhe
Phone: +49 (721) 608-4056
Fax: +49 (721) 608-7664
eMail: [email protected]>