[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [MiNT] XaAES and appl_init()
Vincent Rivière wrote:
But it does that in supervisor mode, while calling the AES from
supervisor is forbidden.
No is not, but it is difficult.
I found a text (page 589) in a german book called "Atari Profibuch
ST-STE-TT".
Sorry, maybe someone can translate this.
-------------------------------------------------------
AES-Aufrufe aus dem Supervisor-Modus sind nur schwer
durchzuführen. Dies ist auch nich
weiter schlimm, da sich Aufrufe aus Interrupt heraus sowieso verbieten -
die AES sind nicht
re-entrant. Wer es dennoch probieren will, muß folgende Punkte
beachten:
Viele AES-Funktionen kehren auch dann im User-Modus zurück, wenn
man sie aus dem
Supervisor-Modus heraus aufgerufen hat. Daher muß man nach jedem
Aufruf mittels
"Super(1L)" feststellen, ob der Modus wieder korrigiert werden muß.
Bei AES-Aufrufen dürren sich User-Stack und Supervisor-Stack nicht
überschneiden.
Genau dies ist jedoch der Fall, wenn man mittels "Super(0L)" in den
Supervisor-Modus
geschaltet hatte. Abhilfe: eigenen Supervisor-Stack zu Fuß anlegen.
Hinzu kommt, daß die AES sogar über das Ende des
Supervisor-Stacks hinausschreiben.
Ein "sicherer" Aufruf sollte daher etwa so aussehen (Quelle: "TOS 1.4
Release Notes"):
char my_stack [8192];
old_ssp Super (&my_stack(8180)); /* nicht ganz aufs Ende! */
/* Aufrufe im Supervisor-Modus ... */
Super (old_ssp);
-------------------------------------------------------
Gerhard