Beispiel Timer-Interrupt (PI4): Unterschied zwischen den Versionen
Aus C und Assembler mit Raspberry
KKeine Bearbeitungszusammenfassung |
KKeine Bearbeitungszusammenfassung |
||
| Zeile 1: | Zeile 1: | ||
Nun versuchen wir, einen Timer-Interrupt zu erstellen und verwenden eine Vector-Tabelle, wie diese zuvor beschrieben wurde. Wir verzichten zunächst auf die Gleitkomma-Unterstützung. | Nun versuchen wir, einen Timer-Interrupt zu erstellen und verwenden eine Vector-Tabelle, wie diese zuvor beschrieben wurde. Wir verzichten zunächst auf die Gleitkomma-Unterstützung. | ||
Wir verwenden die Vectortabelle aus der vorigen Beschreibung. Unterstützen allerdings nur "IRQs | Wir verwenden die Vectortabelle aus der vorigen Beschreibung. Unterstützen allerdings nur "IRQs". Andere Ausnahmen werden in eine Dauerschleife versetzt: | ||
<syntaxhighlight lang="asm"> | <syntaxhighlight lang="asm"> | ||
.align 11 | .align 11 | ||
| Zeile 8: | Zeile 8: | ||
// Vektoren für EL1t (Current Exception Level SP_el0) | // Vektoren für EL1t (Current Exception Level SP_el0) | ||
.align 7 | .align 7 | ||
b | b hang // Synchronous Exception | ||
.align 7 | .align 7 | ||
b IRQStub // IRQ - Normal Interrupt | b IRQStub // IRQ - Normal Interrupt | ||
| Zeile 17: | Zeile 17: | ||
// Vektoren für EL1h (Current Exception Level SP_el1) | // Vektoren für EL1h (Current Exception Level SP_el1) | ||
.align 7 | .align 7 | ||
b | b hang // Synchronous Exception | ||
.align 7 | .align 7 | ||
b IRQStub // IRQ - Normal Interrupt | b IRQStub // IRQ - Normal Interrupt | ||
Version vom 25. Juli 2025, 07:49 Uhr
Nun versuchen wir, einen Timer-Interrupt zu erstellen und verwenden eine Vector-Tabelle, wie diese zuvor beschrieben wurde. Wir verzichten zunächst auf die Gleitkomma-Unterstützung.
Wir verwenden die Vectortabelle aus der vorigen Beschreibung. Unterstützen allerdings nur "IRQs". Andere Ausnahmen werden in eine Dauerschleife versetzt:
.align 11
.globl VectorTable
VectorTable:
// Vektoren für EL1t (Current Exception Level SP_el0)
.align 7
b hang // Synchronous Exception
.align 7
b IRQStub // IRQ - Normal Interrupt
.align 7
b hang // FIQ - Fast Interrupt
.align 7
b hang // SError - System Error
// Vektoren für EL1h (Current Exception Level SP_el1)
.align 7
b hang // Synchronous Exception
.align 7
b IRQStub // IRQ - Normal Interrupt
.align 7
b hang // FIQ - Fast Interrupt
.align 7
b hang // SError - System Error
// Vektoren für EL0 64-bit Modus
.align 7
b hang // Synchronous EL0 (64-bit)
.align 7
b hang // IRQ EL0 (64-bit)
.align 7
b hang // FIQ EL0 (64-bit)
.align 7
b hang // Error EL0 (64-bit)
// Vektoren für EL0 32-bit Modus
.align 7
b hang // Synchronous EL0 (32-bit)
.align 7
b hang // IRQ EL0 (32-bit)
.align 7
b hang // FIQ EL0 (32-bit)
.align 7
b hang // Error EL0 (32-bit)
hang:
wfe // spare CPU cycles
b hang