[Kos-cvs] [kos] Modification CVS par Thomas_Petazzoni

KOS CVS kos-cvs@enix.org
Sun, 15 Oct 2000 13:00:17 +0200


Module :	kos
Modifié par :	Thomas_Petazzoni	15/10/00 13:00:17

Fichiers modifiés :
	.              : Makefile MkVars 
	grub           : script_grub 
	loader         : loader.c 
	loader/elf32   : elf32_link.c 
	modules        : Makefile main.c 
	modules/idt    : Makefile idt.c idtasm.S irq.c 
Fichiers ajoutés :
	include        : debug.h 
	modules/debug  : Makefile debug.c 

Détails :
J'ai essaye de comprendre pourquoi ca ne fonctionnait pas.
Tout d'abord j'ai ajoute des fonctions de debugging pour le noyau, cf /modules/debug/debug.c
On a les fonctions
__bochs_putchar
__bochs_putlong
__bochs_printk
__dbg_dumpmem (celle-ci n'a vraiment pas l'air de marcher !)

Ensuite, j'ai regarde du cote des interruptions.
C'est clairement la fonction _init_idt() qui foire (on s'en serait doute !)
Ce qui est bizarre, c'est que quand je fais un __bochs_putlong sur %edx a chaque boucle, ca foire. Si je limite a l'int 19 non comprise, ca marche. Au dela ca chie !!
Par contre la fonction debug_number, ca marche pour les 48 boucles !! (fonction definie dans idt.c, qui fait la meme chose que __bochs_putlong, mais en affichant a l'ecran).
Si on vire tous ces messages de debug, les boucles se font, les addresses ont l'air correctes (tant au niveau de l'IDT, que des handlers ou de la limite de l'IDT). Le lidt se fait sans probleme, par contre des qu'on fait le sti ca chie.

Le truc bizarre aussi c ke kan j'essaie depuis le init_module de idt.c d'afficher une entree de l'IDT (le symbole _idt est global) bin ca affiche pas vraiment ce que ca devrait afficher. ptet que je me plante encore avec ces satanes pointeurs...

Si vous pouviez regarder ce code, ca serait kewl, j'en ai marre :)))

Merci !