注
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()
関数を使用できます。