1.11.4 __user_initial_stackheap() の従来のサポート

rt_misc.h に定義されている __user_initial_stackheap() は、ARM C ライブラリおよび C++ ライブラリの以前のバージョンとの下位互換性を保つ目的でサポートされています。

ARM では、__user_initial_stackheap() の代わりに __user_setup_stackheap() を使用することをお勧めします。
__user_initial_stackheap() __user_setup_stackheap() の相違点を以下に示します。
  • __user_initial_stackheap() は、(__main() へのエントリ時に保持していたのと同じ値を含む)スタックポインタを r1 で受け取り、新しいスタックベースを r1 で返すことが期待されます。
    __user_setup_stackheap() は、スタックポインタを sp で受け取り、スタックベースを sp で返します。
  • __user_initial_stackheap() には、小さなテンポラリスタックが用意されています。このテンポラリスタックにより、88 バイト以下のスタック空間を使用するという条件で、__user_initial_stackheap() を C で実装できます。
    __user_setup_stackheap() にはテンポラリスタックがないため、通常は C で実装できません。
__user_initial_stackheap() の代わりに __user_setup_stackheap() を使用すると、コードサイズが小さくなります。これは、__user_setup_stackheap() にはテンポラリスタックに関する要件がないからです。
以下の状況では、提供された __user_setup_stackheap() 関数を使用できませんが、__user_initial_stackheap() 関数を使用できます。
  • 初期ヒープおよびスタックを設定するときにテンポラリスタックの使用が保証される、十分に複雑な実装である。
  • ヒープおよびスタック作成コードをアセンブリ言語ではなく C で実装しなければならないという要件がある。
関連する概念
1.11.3 スタックポインタの初期化とヒープの上下限
関連する参考文書
4.52 __user_setup_stackheap()
非機密扱いPDF file icon PDF 版ARM DUI0808CJ
Copyright © 2014, 2015 ARM.All rights reserved.