[SOS] Bug supposé a l'initialisation de la GDT.

romain romain at hexanium.com
Jeu 28 Juil 17:39:18 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/3d9060ed/attachment.html


Plus d'informations sur la liste de diffusion Sos