[Kos-dev] un petit article.. peut etre interessant !

Christophe Avoinne (Club-Internet) kos-dev@enix.org
Thu, 29 Mar 2001 22:34:20 +0200


----- Original Message -----
From: "Thomas Petazzoni" <thomas.petazzoni@meridon.com>
To: <kos-dev@enix.org>
Sent: Wednesday, June 16, 1999 10:43 PM
Subject: [Kos-dev] un petit article.. peut etre interessant !


> d'autre part, on arrive maintenant a revenir d'un double fault... c'est
> pas encore parfait mais on y arrive.
> le hic c'est que le ESP au retour n'est pas bon.
>
> pour hlide : des precisions :
> tu sais le esp au retour est pas bon. et bien je me suis apercu que si
> on fait
>
> retour du double fault
> movl %%esp, %0 (%0 ==> new_esp)
> affichage new_esp == 0x4001ffdc (ca c'est comme d'hab, y'a un pb)
> pushl $6
> movl %%esp ,%0 (%0 ==> new_esp)
> affichage new_esp ==> bing ca donne la meme valeur !!!!!! alors que ca
> devrait etre la valeur precedente moins 4 octets. donc y'a une couille
> dans le pate comme on dit :))

Humm... voilà qui paraît encore plus vodoo que la programmation hardware
chez Archos. Je croyais vraiment qu'il n'y avait que chez Archos pour avoir
des comportements étranges !

Bien, considérant qu'il n'y a pas eu de page de faute (#PF) en raison d'un
ESP == 0x4001ffdc (mapping valable ?), on peut se demander si le "movl
%%esp,%0" est correct. En fait quelle peut être la valeur de ESP réellement
????

Moi je verais bien faire : asm ("0:\n\tcmpl $0x4001ffdc,%esp\n\tje 0b" ); à
la place de "movl". Si on boucle indéfiniment sur 0, alors on a bien une
valeur 0x4001ffdc pour ESP, sinon ben il y a vraiment un problème pour
récupérer correctement la valeur de ESP.

A la prochaine

Christophe, alias Hlide.