2014-02-05 2 views
3

Фон: На AArch32 каждый режим (FIQ, IRQ и т. Д.) Имеет «банковскую» копию регистра SP (R13). Это позволило различным режимам поддерживать собственный отдельный стек.armv8 - AArch64 vs AArch32 Регистрация указателя стека?

Теперь на AArch64 это, похоже, не так. Например: если мы рассмотрим EL1, то на AArch64 две моды, эквивалентные IRQ и SVC, равны EL1'h 'и EL1't' (h = обработчик и t = поток). В этом случае оба режима «h» и «t» должны иметь общий стек? Я спрашиваю, потому что на EL есть только один указатель стека, а именно SP_ELx.

Вопросы:

  • Как AArch64 управлять этой разницы для ОС, как Linux. Будет ли два режима, такие как EL1'h 'и EL1't', использовать один и тот же стек?
  • Как и в AArch32, где Linux имеет разные стеки для режимов IRQ и SVC , что нужно было бы сделать, чтобы поддерживать разные стеки для EL1'h 'и EL1't', в случае AArch64?

ответ

3

Прежде всего нам необходимо отделить ARMv7/ARMv8 (версии архитектуры) от состояний выполнения AArch32/AArch64 (32-разрядные или 64-разрядные).

Где процессор ARMv8 обеспечивает состояние выполнения AArch32 на EL1 (ядре), которое имеет ту же модель исключения, что и в ARMv7. Когда EL1 находится в состоянии выполнения AArch64, он использует совершенно другую модель обработки исключений.

AArch64 EL1 не имеет IRQ и SVC или других режимов, которые делает AArch32 - вот почему он нуждается/имеет только один стек исключений.

+0

Хорошо, я согласен с тем, что AArch64 EL1 не имеет IRQ и SVC, но имеет два эквивалентных режима, называемых EL1h, EL1t. 'h' = обработчик и 't' = поток. Если мы пойдем этим путем, разделим ли мы один и тот же стек между режимами «поток» и «обработчик»? – TheLoneJoker

+0

Терминология ELxt и ELxh относится к возможности выбора с использованием EL0 SP вместо SP текущего привилегированного EL. Имена происходят из режимов «поток» и «обработчик» M-профиля. – unixsmurf

Смежные вопросы