Utilisation des Debug Registers du pentium

lamoueste Messages postés 76 Date d'inscription lundi 5 septembre 2005 Statut Membre Dernière intervention 3 juillet 2007 - 20 juin 2007 à 15:37
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Derniè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.

Cordialement.

1 réponse

cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
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...

Bonne chance !
0