OSDev http://osdev.su/ |
|
Программное прерывание не работает в третьем кольце http://osdev.su/viewtopic.php?f=6&t=767 |
Страница 1 из 1 |
Автор: | vlad9486 [ 27 июл 2013, 00:37 ] |
Заголовок сообщения: | Программное прерывание не работает в третьем кольце |
Похоже, что у меня тоже самое, что и у него 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 конечно же есть. |
Автор: | vlad9486 [ 27 июл 2013, 02:03 ] |
Заголовок сообщения: | Re: Программное прерывание не работает в третьем кольце |
Исправил. Глупая ошибка: в IDT тоже есть DPL и для записи с программным прерыванием нужно его установить в 3. Может кому-нибудь тема поможет. Написал тому бедолаге, может поможет через 8 лет |
Автор: | iz56 [ 27 июл 2013, 08:04 ] |
Заголовок сообщения: | Re: Программное прерывание не работает в третьем кольце |
Ну за восемь лет, скажем, тот человек, может и забыл что есть третье кольцо и пятое. А если кто ищет ответ на такую проблему - теперь точно найдёт. |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |