[SOS] changement de privileges + interrupt manager
David Decotigny
david.decotigny at free.fr
Dim 6 Mar 16:55:05 CET 2005
Bonjour,
J'avoue que les details sur tes problemes de changement de privilege
continuent de m'echapper. je m'y perds un peu dans tes histoires de
handlers d'IRQ, d'interruptions logicielles, de TSS, etc...
stephane duverger wrote:
> - Concernant le probleme de valeur immediate pour "ljmp":
> #define set_kgdt_sel(index) (((index)<<3))
> #define switch_to_imm(sel) asm volatile( "ljmp %0, $0"::"i"(sel) )
>
> int tss_desc_idx;
> tss_desc_idx = create_process( prog1 );
> switch_to_imm( set_kgdt_sel( (uint16)tss_desc_idx ) );
Normal. En faisant quelques expansions, ceci equivaudrait (en gros) à :
((( create_process( prog1 ) )<<3))
Et ceci ne peut pas devenir une valeur "immediate". C'est-a-dire une
valeur que le compilateur peut connaitre a l'avance et integrer dans le
binaire des la phase de compilation.
> - Sinon concernant la gestion des exceptions/interruptions:
>
> Je vous disais dans un vieux mail que j'avais fait un truc inspiré de
> Plan9. J'ai vu en recuperant le code de sos-6.5 que vous faisiez
> toujours votre boucle en asm gas qui generait "n" fois le code des
> wrappers qui appelle le vrai handler d'interruptions.
[...]
Solution propre et elegante. On devrait faire une serie de pages web sur
"comment sos aurait du etre ecrit" rien que pour ça ;)
Bonne journee,
Plus d'informations sur la liste de diffusion Sos