Verständnisfrage ARM7 Interrupt

OP #1014798
Lesenswert?

Hallo,

bin gerade ein Buch über ARM7s am lesen, und da gibt es eine Sache, die 
ich nicht so ganz verstehe: In dem Buch steht, dass bei einer Exception 
ZUERST PC in LR gespeichert und ERST DANN in den entsprechenden 
Exception-Modus gewechselt wird. Aber wodurch ist es sichergestellt, 
dass im LR des vorherigen Modus' nichts "wertvolles" drinstand? Oder ist 
das falsch und es wird doch erst der Modus gewechselt und der neue LR 
verwendet?

MfG Mark
Persönliche Seite #1015594
Lesenswert?

A. K. wrote:
> Weiss nicht wo das steht, es ist aber falsch. Die Return-Adresse landet
> im LR vom IRQ/FIQ Kontext.

Genaugenommen ist die Reihenfolge egal, solange sichergestellt ist, dass 
in jedem Fall das lr des künftigen Modes verwendet wird.

> Das Problem allerdings bleibt dennoch erhalten. Bei nested Interrupts
> nämlich, die wegen dieses zweifelhaften Interrupt-Verfahrens eher
> kompliziert ablaufen müssen.

Nested interrupts auf ARM Cores != Cortex-Mx (v7M, bzw. v6M) sind nur 
deswegen zweifelhaft, weil sie so bescheiden implementiert sind. Da 
braucht der Code zum Sichern des Kontexts unter Umständen länger als die 
Interrupt Routine selbst. Aber eben nur manchmal.

Gruß
Marcus
#1015678
Lesenswert?

Marcus Harnisch wrote:

> Genaugenommen ist die Reihenfolge egal, solange sichergestellt ist, dass
> in jedem Fall das lr des künftigen Modes verwendet wird.

Wessen Haare willst du hier eigentlich spalten? ;-)

> Nested interrupts auf ARM Cores != Cortex-Mx (v7M, bzw. v6M) sind nur
> deswegen zweifelhaft, weil sie so bescheiden implementiert sind.

Jo, aber da rennst du grad offene Türen ein, denn mit dem zweifelhaften 
Verfahren meinte ich das Interrupt-Konzept von ursprünglichen ARM, nicht 
nested Interrupts als solche. Gegen die habe ich nix.

Es geht hier ausserdem um ARM7, nicht ARMv7.
Persönliche Seite #1016144
Lesenswert?

A. K. wrote:
> Marcus Harnisch wrote:
>
>> Genaugenommen ist die Reihenfolge egal, solange sichergestellt ist, dass
>> in jedem Fall das lr des künftigen Modes verwendet wird.
>
> Wessen Haare willst du hier eigentlich spalten? ;-)

Nun ja es ist nicht ganz so haarspalterisch wie es auf den ersten Blick 
scheint: Würde man zuerst den Mode wechseln müssen um auf die banked 
Register zugreifen zu können, wie würde beim Interrupt entry dann das 
CPSR des vorherigen Modes ins SPSR_irq retten?

Man sollte sich eben nicht zu sehr an einer zeitlichen Reihenfolge 
festhalten.

> Es geht hier ausserdem um ARM7, nicht ARMv7.

Schon klar. Aber hätte ich allgemein von "bescheidener Implementierung" 
und "ARM" gesprochen, dann hätte hier gleich der nächste Haarspalter 
vorgesprochen 8-)

Gruß
Marcus

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren