Я бы не стал использовать работу «в банке» в этом контексте - регистр в ручном ядре был бы «в банке» в случае, если будут доступны разные копии одного и того же регистра в зависимости от состояния ядра.
Например, в ядре Armv8-A, TTBR0_EL1
доступен из EL1
, EL2
и EL3
. TTBR0_EL2
доступно из EL2
и EL3
- это способ моделирования факта, что концептуальный системный регистр TTBR0
находится в банке.
Но все системные регистры, как определено в Регистры Armv8, для профиля архитектуры Armv8-A Документация присутствуют в ядре Armv8-a.
То есть в многоядерной системе каждое ядро имеет свой собственный набор системных регистров. как определено в документации, упомянутой выше: «Системные регистры» могут быть более конкретно названы «Базовыми системными регистрами» в этом контексте.
Если подумать, выполняются инструкции MSR
и MRS
. в конкретном c ядре влияют на общие и системные регистры одного и того же ядра:
MRS x0, TTBR0_EL1 // Move TTBR0_EL1 into x0
MSR TTBR0_EL1, x0 // Move x0 into TTBR0_EL1