Utilisation des Debug Registers du pentium

Signaler
Messages postés
76
Date d'inscription
lundi 5 septembre 2005
Statut
Membre
Dernière intervention
3 juillet 2007
-
Messages postés
3874
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
7 novembre 2014
-
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

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