lamoueste
Messages postés76Date d'inscriptionlundi 5 septembre 2005StatutMembreDernière intervention 3 juillet 2007
-
20 juin 2007 à 15:37
cs_rt15
Messages postés3874Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention 7 novembre 2014
-
21 juin 2007 à 14:18
Bonjour a tous,
Je dois dans le cadre d'un projet derouter les interruptions de debug (INT1) ( controlées par les debug registers du pentium ) de mon OS (VxWorks) pour les réorienter sur mon propre Handler d'interruption. Pour cela je dois aller patcher la IDT puis generer une exception a l'aide des debug registers (lecture d'une données a une adresse choisie par exemple). Tout ceci j'ai reussi a le mettre en place cependant quand j'entre dans mon handler le systeme s'arrete et je ne peut plus rien faire d'autre. Je pense qu'il y a une procedure pour sortir proprement d'une interruption mais je ne trouve pas d'information pertinente sur internet si quelqu'un sais comment je dois m'y prendre ou sais ou je pourrais me documenter je l'en remercie grandement.
cs_rt15
Messages postés3874Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention 7 novembre 201413 21 juin 2007 à 14:18
Salut,
J'adore ton projet ! Désolé de pas pouvoir t'aider par contre...
Commence par un handler très simple : si ton handler plante l'execution a effectivement toutes les chances de s'arrêter.
Ptêt bien qu'un simple ret suffit ???
Un problème de contexte peut être ?
Sauvegarde bien tes registres en les poussant sur la pile et restitue les à la fin.
Et voie si il y a pas des trucs à faire côté es et ds.
Je sais pas si VxWorks utilise les rings comme Windows, mais sous Windows, il y a un souvent un passage en ring 0 (Probablement via sysenter/sysexit) lorsque une exception à lieu. Cela change les système d'adressage de la mémoire. Mais je sais pas du tout si c'est Windows qui s'assure du passage ou si c'est codé dans les interruption...