(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>