Фон: На 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?
Хорошо, я согласен с тем, что AArch64 EL1 не имеет IRQ и SVC, но имеет два эквивалентных режима, называемых EL1h, EL1t. 'h' = обработчик и 't' = поток. Если мы пойдем этим путем, разделим ли мы один и тот же стек между режимами «поток» и «обработчик»? – TheLoneJoker
Терминология ELxt и ELxh относится к возможности выбора с использованием EL0 SP вместо SP текущего привилегированного EL. Имена происходят из режимов «поток» и «обработчик» M-профиля. – unixsmurf