LINUX.ORG.RU

История изменений

Исправление Zubok, (текущая версия) :

Спасибо, но я правда не знаю как там симулятор у них работает)

За то, что ты попробуешь, тебя на костре не сожгут. :)

Просто выставлением этих флагов и вызовом прерываний (если они разрешены) занимается симулятор. Поэтому только опытом можно проверить, вызовет ли он прерывание, если флаг выставил ты, а не он. Очень вероятно. что ничего не произойдет. А флаги событий (прерываний) у многих прерываний есть, но они по регистрам разбросаны.

И при прямом вызове прерывания из GDB через call надо иметь в виду одну мелочь, которая, возможно, не принципиальна, но о ней надо помнить: вызов прерывания отличается от вызова функции тем, что контроллер при вызове прерывания запрещает все прерывания, а когда ты выполняешь reti, то он флаг назад поднимает неявно (sei). Однако для тебя это поведение в режиме отладки никакого значения иметь не будет. Если ты хочешь вложенные прерывания, то это надо разрешать специально, принудительно выставив глобальный флаг (sei).

Исправление Zubok, :

Спасибо, но я правда не знаю как там симулятор у них работает)

За то, что ты попробуешь, тебя на костре не сожгут. :)

Просто выставлением этих флагов и вызовом прерываний (если они разрешены) занимается симулятор. Поэтому только опытом можно проверить, вызовет ли он прерывание, если флаг выставил ты, а не он. Очень вероятно. что ничего не произойдет. А флаги событий (прерываний) у многих прерываний есть, но они по регистрам разбросаны.

И при прямом вызове прерывания из GDB через call надо иметь в виду одну мелочь, которая, возможно, не принципиальна, но о ней надо помнить: вызов прерывания отличается от вызова функции тем, что контроллер при вызове прерывания запрещает все прерывания, а когда ты выполняешь reti, то он его назад поднимает. Однако для тебя это поведение в режиме отладки никакого значения иметь не будет. Если ты хочешь вложенные прерывания, то это надо разрешать специально, принудительно выставив глобальный флаг (sei).

Исходная версия Zubok, :

Спасибо, но я правда не знаю как там симулятор у них работает)

За то, что ты попробуешь, тебя на костре не сожгут. :)

Просто выставлением жтих флагов и вызовом прерываний (если они разрешены) занимается симулятор. Поэтому только опытом можно проверить, вызовет ли он прерывание, если флаг выставил ты, а не он. Очень вероятно. что ничего не произойдет. А флаги событий (прерываний) у многих прерываний есть, но они по регистрам разбросаны.