[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