[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