Assembler PC relative branch (B)

Gast #3456843
Lesenswert?

Hallo

ich habe eine Frage zum program-relativen Branchen.

Dazu folgendes Szenario:

Ich möchte in Adresse 0xFFFF0000 einen Branch zur Adresse 0x00100000 
durchführen.

Leider ermöglicht der Assembler "B" Opcode keine solch große Reichweite 
(-4293853184 Bytes)

Ist es möglich einen Überlauf zu nutzen:
PC = 0xFFFF0000 + 0x00110000 = 0x00100000

Im Detail geht es um den SAM9G45 welcher es ermöglicht den gesamten SRAM 
als TCM zu konfigurieren.
Dadurch ist dieser leider nur über das TCM-Interface verfügbar uns steht 
nicht mehr als Remap-Zone zu Verfügung.
Problematisch ist dies für das Exception-Handling welches eine 
Exception-Vector-Tabelle an Addresse 0x00000000 erfordert.
Der CP15 ermöglicht es, die Exception-Vector-Tabelle von 0x00000000 - 
0x0000001C(innerhalb der remap-zone) nach 0xFFFF0000 - 0xFFFF001C zu 
verlagern.

Um dieses Feature nutzen zu können, muss ich die Vector-Tabelle mit 
Branches von 0xFFFF0000 zum ITCM (0x00100000) erstellen.

Gruß Tobias

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