Загрузчик для armv7 подойдет для armv8?

Я пытаюсь написать загрузчик по архитектуре armv7, используя набор инструкций сборки armv7? Бывший:

Установка процессора в режим svc при сбросе:

mrs r0, cpsr
bic r0, r0,#0x1f
orr r0, r0,#0xd3
msr cpsr, r0
mov pc, lr

Будет ли такой же загрузчик работать на armv8. Поскольку armv8 также поддерживает aarch32. Но с другой стороны, у него тоже много отличий.


person sourav punoriyar    schedule 04.06.2017    source источник
comment
он уже загружается в режим svc, верно? зачем устанавливать режим svc, если он там уже есть. ARMv7: процессор переходит в режим супервизора при сбросе.   -  person old_timer    schedule 04.06.2017
comment
В реализации, где наивысший реализованный уровень исключения использует AArch32, если этот уровень исключения равен EL3 или EL1, PE переходит в режим супервизора при сбросе.   -  person old_timer    schedule 04.06.2017
comment
Я позволю вам прочитать остальное самостоятельно или просто зачитать cpsr при загрузке как можно раньше и сохранить или просмотреть ...   -  person old_timer    schedule 04.06.2017
comment
Спасибо .. после перезагрузки он уже должен быть в svc.i взяли эти строчки из uboot. Не знаю, зачем это нужно.   -  person sourav punoriyar    schedule 04.06.2017
comment
Это правда в hyp и aarch64, я застрял. Что делать, если он не в hyp, а состояние выполнения - aarch32?. Я пытаюсь заменить uboot на мой для beaglebone black, который является v8.   -  person sourav punoriyar    schedule 04.06.2017
comment
Большое спасибо. BBB - это cortex-A8 с микроархитектурой armv7-a.   -  person sourav punoriyar    schedule 05.06.2017
comment
очень рано в загрузчике просто прочтите его, затем отобразите там или оставьте, чтобы вы могли прочитать его с помощью отладчика и т. д. ЗАТЕМ ... попытайтесь понять, почему он находится или нет в каком-то режиме, чтобы затем вы могли поставить это в том режиме, который вам нравится.   -  person old_timer    schedule 05.06.2017


Ответы (1)


Не обязательно по нескольким причинам, во-первых, если вы находитесь в гипорежиме, вы не можете так легко из него выйти. Во-вторых, если вы находитесь в режиме aarch64, то это другой набор инструкций. Так что отчасти это зависит от того, где находится этот код, насколько рано в загрузчике он действительно является загрузчиком или у вас есть другой код, который предшествует этому (что ставит вас в состояние, что такой код не будет работать).

Короткий ответ, нет, этот код не только не всегда будет работать для armv8, но и не всегда будет работать для armv7.

person old_timer    schedule 04.06.2017