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]>