User:Bellezzasolo/Old talk

From OSDev Wiki
Jump to navigation Jump to search

Talk

If you want to talk to me, go here: User talk:Bellezzasolo

My Old discussions

Here are old discussions relegated from my talk page

IDT problems

As I wrote on the IDT Problems talk page, I don't think this is the right place to discuss "personal" problems, and you'd better post your questions on the forum. Anyway. I think your code has two problems. First, I can't see any setvect call. You wrote the function but is it actually called somewhere? Second you put #pragma pack and pop around the IDT_register and IDT variable instantiations, while you have to put it around the class definitions like:

 #pragma pack(push, 1)
 class IDT_entry
 {
     // blah blah blah
 };
 #pragma pack(pop)

You put size asserts in the installIDT function "if(sizeof(IDT_reg) != 6) ......" but even if it actually does Puts("Bad IDT reg\n"); you wont actually see that, as you system will reboot before your eyes are able to catch it. I suggest you to write the asserts like this:

 if(sizeof(IDT_reg) != 6)
 {
     Puts("Bad IDT reg\n");
     Halt();
 }

Where Halt is an infinite loop or a "cli; hlt" so that you can actually see the message being put.


Thankyou for your help. I shall place open problems on the forum and solved problems on the wiki page, where people may find it of benefit, with a link to the forum. As for your questions:

setvect(0, &handlerDefault); //through to 0x13

This is in HAL.cpp.

Anyway, thankyou for your time. I shal put this into practice ASAP

--Bellezzasolo 07:12, 6 February 2012 (CST)

Update: I am still having trouble. The same error message.

Update: I aligned my GDT like this and it worked. I now have an IRQ driven OS

See also

Me

Related articles