OSDev

для всех
Текущее время: 28 апр 2024, 12:28

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 3 ] 
Автор Сообщение
СообщениеДобавлено: 27 июл 2013, 00:37 

Зарегистрирован: 16 июл 2013, 00:56
Сообщения: 26
Похоже, что у меня тоже самое, что и у него 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 конечно же есть.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 27 июл 2013, 02:03 

Зарегистрирован: 16 июл 2013, 00:56
Сообщения: 26
Исправил. Глупая ошибка: в IDT тоже есть DPL и для записи с программным прерыванием нужно его установить в 3. Может кому-нибудь тема поможет. Написал тому бедолаге, может поможет через 8 лет :)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 27 июл 2013, 08:04 
Аватара пользователя

Зарегистрирован: 16 апр 2010, 10:10
Сообщения: 320
Откуда: Псковская обл.
Ну за восемь лет, скажем, тот человек, может и забыл что есть третье кольцо и пятое. А если кто ищет ответ на такую проблему - теперь точно найдёт.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 3 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 15


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB