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
Weiss nicht wo das steht, es ist aber falsch. Die Return-Adresse landet im LR vom IRQ/FIQ Kontext. Das Problem allerdings bleibt dennoch erhalten. Bei nested Interrupts nämlich, die wegen dieses zweifelhaften Interrupt-Verfahrens eher kompliziert ablaufen müssen.
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
Wobei v6-M eigentlich gar keine Nested Interrupts unterstützt... -- Marcus
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.
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
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.