О расширениях небезопасных расширений GICV2Linux

Ответить
Anonymous
 О расширениях небезопасных расширений GICV2

Сообщение Anonymous »

Я сейчас узнаю о GIC. Ниже приведен код, который я написал для инициализации GICV2, работающего QEMU. Я имею в виду «спецификации архитектуры IHI0048B GIC». Когда я отключаю расширения безопасности и настраиваю группы прерываний в качестве группы1, часовое прерывание не работает. Но если я установите группу прерываний в группу 0, так же работает «Часовое прерывание». «Спецификация архитектуры IHI0048B GIC» говорит, что только поддерживаемые расширения безопасности могут настроить Group0. Это то, что я неправильно понял? < /P>
qemu-system-aarch64 -machine virt,secure=off,gic-version=2 \
-cpu cortex-a53 \
-nographic \
-kernel kernel.elf \
< /code>
void gicv2_init()
{
int value;
__asm__ volatile("ldr %w0, [%1]" :"=r"(value) :"r"(GICD_TYPER));
printf("Security Extensions: %d\n", SECURITY_SUPPORT(value));

int interrupts;
interrupts = ((value & 0xF) + 1) * 32;
if (interrupts > 1020) {
interrupts = 1020; // 1020 ~ 1023 are reserved
}
printf("Max interrupt numbers: %d\n", interrupts);

// Disable interrupt forwadring
__asm__ volatile("str %w0, [%1]" : :"r"(0), "r"(GICD_CTLR) :"memory");
// Disable 0~31 interrupt, except permanently interrupt
__asm__ volatile("str %w0, [%1]" : :"r"(0xffffffff), "r"(GICD_ICENABLERn) :"memory");

if (SECURITY_SUPPORT(value)) {
// TODO: secure access or non-secure access configure
} else {
// set 0-31 interrupt Group1
__asm__ volatile("str %w0, [%1]" ::"r"(0xFFFFFFFFU), "r"(GICD_IGROUPRn));

// clear 0~31 interrupt pending state
__asm__ volatile("str %w0, [%1]" : :"r"(0xFFFFFFFFU), "r"(GICD_ICPENDRn));
// clear 0~31 interrupt active state
__asm__ volatile("str %w0, [%1]" : :"r"(0xFFFFFFFFU), "r"(GICD_ICACTIVERn));

// Enable GICD Group0/1
__asm__ volatile("str %w0, [%1]" : :"r"(3), "r"(GICD_CTLR) :"memory");

// Enable GICC Group0/1
__asm__ volatile("ldr %w0, [%1]" :"=r"(value) :"r"(GICC_CTLR));
value |= (1

Подробнее здесь: https://stackoverflow.com/questions/797 ... ons-enable
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Linux»