(toppers-users 3650) TOPPERS/ASP cq_starm_gccの終了処理が変な気がしています。

koizumi yoshiyuki koizumiyoshiyuki @ gmail.com
2011年 10月 23日 (日) 14:03:09 JST


 こいさんです

TOPPERS/ASP cq_starm_gccでsample1を動作させ、「Q」キーで終了させた後スタックが壊れて暴走しています。

TOPPERAS/ASPの終了処理はどうなるべきなのでしょうか。
JSPのcq_frk_nxp_armではsys_exit()で無限ループになっています。ASPにはsys_exit()はありませんでした。終了の仕方がJSPとASPでは変わったのでしょうか。

システムの終了処理は実装依存なので、適当に処理すればよいのでしょうか、OSの終了処理としては、OS設定した環境を元に戻して(割り込みコントローラや、モードなど)無限ループにして於くのが良いと思います。
現状
sample1(){
---
 SVC_PERROR(ext_ker());
}

ext_ker(){
----
 call_exit_kernel();
---- ★A
}

call_exit_kernel()はアセンブラ記述でモード切替た後exit_kernelにブランチ。

exit_kernel(void){
}

exit_kernel関数を終了したとき★Aに戻って欲しい作りのように見えますが、call_exit_kernelでモードの切り替えと共にスタックが切り替わるので★Aには戻れないはずです。又、たとえスタックが切り替わらなくても、exit_kernelからの戻りと、ext_kerからの戻り方はコンパイラ依存な為、こちらも不味い気がしています。
システムの終了はどうなるのがTOPPERSの設計意図なのでしょうか。

以上
-------------- next part --------------
HTMLの添付ファイルを保管しました...
URL: <http://www.toppers.jp/pipermail/users/attachments/20111023/5b2b6513/attachment.html>