[Kos-dev] Stack Fault : expand down segment

Christophe Avoinne (Club-Internet) kos-dev@yoda.isnpro.com
Thu, 22 Feb 2001 20:32:01 +0100


STOP ! le registre %ebp dans "imm(%ebp,%0)" utilise toujours implicitement
%SS comme segment, or GCC peut utiliser cet adressage avec
%ebp ------------------> BUUUUUUUUUUUUUUUUUG !

Ne cherchez pas des solutions compliquées pour si peu !!!! le double fault
fonctionne !!! ABORT n'est qu'une étiquette que l'on colle, mais elle est
rattrapable contrairement à ce qui est écrit (c'est seulement que l'on
s'attend généralement à une utilisation de type ABORT pour le double fault),
il suffit de modifier l'esp du TSS avant le double fault (dans le backlink
du TSS doublefault). Et hop, le tour est joué.


----- Original Message -----
From: "Thomas Petazzoni" <thomas.petazzoni@ifrance.com>
To: <kos-dev@enix.org>
Sent: Thursday, February 22, 2001 2:03 PM
Subject: [Kos-dev] Stack Fault : expand down segment


> salut,
>
> la stack fault resout notre probleme apparemment. il restait encore un
> probleme : ESP est relatif a SS, c'est a dire que c'est un offset par
> rapport au debut du segment pointe par SS. or ESP descend au fur et a
> mesure des pushs, et se retrouve a 0 lorsqu'on a un stack fault. il
> faudrait alors allouer une page, puis ajouter PAGE_SIZE a ESP. je trouve
> ca pas tres joli. mais heureusement pour une fois, le proc Intel nous
> aide (ca arrive ca ?) :
>
> If the size of a stack segment needs to be changed dynamically, the
> stack segment can be
> an expand-down data segment (expansion-direction flag set). Here,
> dynamically changing the
> segment limit causes stack space to be added to the bottom of the stack.
> If the size of a stack
> segment is intended to remain static, the stack segment may be either an
> expand-up or expand-
> down type.
>
> voila, apparemment, un segment expand-down est a l'envers (la base est
> en haut, et la limite est a base-limit), donc ca semble convenir pour
> notre probleme.
>
> qu'en pensez-vous ?
>
> thomas
> --
> PETAZZONI Thomas
> thomas.petazzoni@meridon.com     UIN : 34937744
> Projet KOS : http://kos.enix.org
>
>
> _______________________________________________
> Kos-dev mailing list
> Kos-dev@yoda.isnpro.com
> http://the-doors.enix.org/cgi-bin/mailman/listinfo/kos-dev
>