Пишу свой менеджер задач. Он весит на векторном прерывании. При сработки необходимо сохранить все регистры r0-r15 и CPSR в контекст задачи, и загрузить контекст новой задачи. В IRQ я легко могу добратся до всех регистров, кроме r13,r14 – они банкованые. Для того, что бы до их добраться, я переключаюсь в режим system, но при этом разрешается флаг IRQ и в этот момент могут сработать другие IRQ. Конечно, можно запретить все IRQ через VICIntEnClr, а потом восстановить. Есть ли более красивый способ добраться из IRQ до r13,r14 USER?
--------------------
Если хочешь вбить гвоздь, не ищи обходных путей, просто бери молоток и бей по этому чёртовому гвоздю!
|