Похоже, что у меня тоже самое, что и у него
http://forum.osdev.org/viewtopic.php?f=1&t=10974. Прерывания работают, клавиатура читается и все такое. Когда делаю
Код:
__asm__("int $0x30"); while (1);
в ядре (в кольце 0), то все работает. Но когда это же делает непривилегированный код, то приходит GP с кодом 0x302 сообщающее о провинившийся записи в IDT (запись номер 0x30). У пользователя загружены cs и ss с RPL и DPL равными 3. В TSS DPL равно 0, но с 3 так же.
UPD: запись в IDT с номером 0x30 конечно же есть.