Hallo *, mal ne Frage an die Freunde des guten alten MC68000: Ich habe hier ein Gerät mit einem 68000 dessen Firmware ich disassembliert vorliegen habe. Die Firmware bietet die Möglichkeit über einen eingebauten Bootloader eigenen Code ins RAM zu laden und von dort auszuführen (es wird mit JSR an die angegeben Stelle gesprungen). Leider funktioniert das relativ leidlich bzw. habe ich so komische Effekte wie den folgenden. Es existiert eine kleine Funktion im EPROM bei 0x4ad508 um das Statusregister ins RAM zu sichern: 004ad508 40 f9 00 11 34 9c move SR,(0x0011349c) 004ad50e 00 7c 07 00 ori #0x700,SR 004ad512 4e 75 rts Wenn ich diese Funktion mit JSR $4ad508 aufrufe stürzt das System ab. Baue ich die Funktion jedoch nach und rufe sie an der neuen Adresse auf funktioniert alles einwandfrei. Was übersehe ich?
C. W. schrieb: > Wenn ich diese Funktion mit JSR $4ad508 aufrufe stürzt das System ab. > Baue ich die Funktion jedoch nach und rufe sie an der neuen Adresse auf > funktioniert alles einwandfrei. Konntest Du den ins RAM geladenen Code wieder erfolgreich zurücklesen? Schreibt Dein Bootloader byte- oder wortweise? Falls byteweise, ist das RAM im Zielbereich byteweise decodiert, also werden /UDS und /LDS ausgewertet? Grüßle, Volker
C. W. schrieb: > Baue ich die Funktion jedoch nach und rufe sie an der neuen Adresse auf > funktioniert alles einwandfrei. Weißt du was zu den Hintergründen über die Original Funktion?
:
Bearbeitet durch User
C. W. schrieb: > Was übersehe ich? SR modifizieren nur im Supervisor-Mode Im User Mode führt ORI #...,SR zu einer Privilege Violation Exception (Vector 8).
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.