[SOS] Bug supposé a l'initialisation de la GDT.
romain
romain at hexanium.com
Jeu 28 Juil 17:39:02 CEST 2005
Bonjour,
Je suis tous neuf sur cette news amors bonjours a tous !
je m'appelle romain je suis en region parisienne, 26 piges pationné
d'info et d'electronique</mylife>
Je sais pas si j'ai trouvé des buggs sur SOS ou si je ne pige pas tous ,
voila je m'explique!
1/ Dans la macro BUILD_GDTE on n'affecte pas les bits de la base 31 à 34
(sos_ui8_t base_paged_addr_31_24;)
#define BUILD_GDTE(descr_privilege_level,is_code) ...
(Coup de bol que la base soit à 0 ;), ce doit etre un oublie )
2/la strucutre x86_gdt_register bizarement dimensionnée !
struct x86_gdt_register {
sos_ui16_t limit;
sos_ui32_t base_addr;
} __attribute__((packed, aligned(8)));
16 + 32 = 48 soit 6 octets a passer au processeur (spec intel ) !
Ici elle est aligné sur 8, si je ne m'abuse, cela indique que gcc place
cette structure sur 8 octets (modulo 8 octets pour l'optimisation...).
du coup il y'a 2 octets en rab ! il vont ou ? enfin comment le
processeur les comprend quand on fait
lgdtl (gdtr) ????
à premiere vu je dirais que le pad est mis a la fin (si non sos ne
marcherais pas correctement). en fait j'en sais rien, je voudrais etre
eclairé sur ce point !
[LIM H] [LIM L] [BASE H] [BASE H] [BASE L] [BASE L] [PAD?] [PAD ?]
Si c'est le cas, pourquoi aligné sur 8 et pas sur 6 ce bout de structure
?? je ne vois pas !!
Merci de m'aiclairer
Bon courage à vous, Merci pour ces fabuleuses sources tres instructives.
Romain
-------------- section suivante --------------
Une pièce jointe HTML a été enlevée...
URL: http://the-doors.enix.org/pipermail/sos/attachments/20050728/22b8bede/attachment.htm
Plus d'informations sur la liste de diffusion Sos