[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

(toppers-users 897) microblaze依存部のバグ(スタックフレーム作成)



豊橋技術科学大学の本田です.

microblaze依存部にバグがありましたので報告させて頂きます.


問題 : スタックフレームの作り方
  Microblaze Processor Reference Guide 52〜53より
  関数呼出し時の引数は,r5〜r10 に格納する.
  それと同時に呼出し元はスタックフレームに引数の格納場所を確保する必要
  がある.さらにその上にはリンクレジスタ(R15)の分の領域が必要となる.
  呼出し先は更に他の関数を呼び出す場合等に r5〜r10 をこの領域に保存す
  る.

Low Address
           --------------------
new_sp -> | Link Register(R15) |
           --------------------
          |   Arg1用の領域     |
           --------------------
          |   Arg2用の領域     |
           --------------------
          |      ....          |
           --------------------
High Address


修正 : ./config/microblaze/cpu_support.S の activate_r 
  タスク呼出しの前に,上記のようにスタックフレームを作成する.

    Pop   r11                  /* タスクの実行番地                 */
    Pop   r5                   /* 引数(exinf)                    */

の部分を次のように変更して下さい. 

    lw    r11, r1, r0          /* タスクの実行番地                 */
    lwi   r5,  r1,  4          /* 引数(exinf)                    */


-------------------------------------------------------
本田 晋也(Shinya Honda)
豊橋技術科学大学大学院 工学研究科 電子情報工学専攻  
名古屋大学大学院 情報科学研究科 情報システム学専攻 高田・冨山研究室
E-mail  honda at ertl jp               
WWW     http://www.ertl.jp/~honda