Xtensa GPR and ABI

来自Jack's Lab
(版本间的差异)
跳转到: 导航, 搜索
(Overview)
(Return value)
 
(未显示1个用户的12个中间版本)
第3行: 第3行:
 
Two different ABI:
 
Two different ABI:
  
* windowed register ABI, works with the Windowed Register Option
+
* Windowed register ABI, works with the Windowed Register Option (ESP32 use this ABI by default)
 
* CALL0 ABI, used with any Xtensa processor (worse performance)
 
* CALL0 ABI, used with any Xtensa processor (worse performance)
 +
 +
 +
Instruction CALL0 is for the CALL0 ABI
 +
 +
Instruction CALL4/CALL8/CALL12 is for the windowed register ABI
  
 
<br><br>
 
<br><br>
  
== GPR usage ==
+
== Windowed Register ABI ==
  
 
=== Argument passing ===
 
=== Argument passing ===
 +
 +
<pre>
 +
          Return Addr  Stack Ptr      arg0, arg1, arg2, arg3, arg4, arg5
 +
          -----------  ---------      ----------------------------------
 +
call4      a4          a5              a6,  a7,  a8,  a9,  a10,  a11
 +
call8      a8          a9            a10,  a11,  a12,  a13,  a14,  a15
 +
call12    a12          a13            a14,  a15  ---  ---  ---  ---
 +
</pre>
  
 
<br><br>
 
<br><br>
第16行: 第29行:
 
=== Return value ===
 
=== Return value ===
  
 +
<pre>
 +
          Return Value
 +
          -----------
 +
call4      a6
 +
call8      a10
 +
call12      a14
 +
</pre>
  
 
<br><br>
 
<br><br>
 +
 +
== CALL0 ABI ==
 +
 +
=== Argument passing ===
 +
 +
<pre>
 +
          Return Addr  Stack Ptr      arg0, arg1, arg2, arg3, arg4, arg5
 +
          -----------  ---------      ----------------------------------
 +
call0      a0          a1              a2,  a3,  a4,  a5,  a6,  a7
 +
</pre>
 +
 +
<br><br>
 +
 +
=== Return value ===
 +
 +
<pre>
 +
          Return Value
 +
          -----------
 +
call0      a2
 +
</pre>
 +
 +
<br><br>
 +
 +
== Reference ==
 +
 +
* http://wiki.linux-xtensa.org/index.php/ABI_Interface
 +
 
<br><br>
 
<br><br>
 
<br><br>
 
<br><br>

2016年12月5日 (一) 21:12的最后版本

目录

[编辑] 1 Overview

Two different ABI:

  • Windowed register ABI, works with the Windowed Register Option (ESP32 use this ABI by default)
  • CALL0 ABI, used with any Xtensa processor (worse performance)


Instruction CALL0 is for the CALL0 ABI

Instruction CALL4/CALL8/CALL12 is for the windowed register ABI



[编辑] 2 Windowed Register ABI

[编辑] 2.1 Argument passing

          Return Addr  Stack Ptr       arg0, arg1, arg2, arg3, arg4, arg5
          -----------  ---------       ----------------------------------
call4       a4           a5              a6,   a7,   a8,   a9,  a10,  a11
call8       a8           a9             a10,  a11,  a12,  a13,  a14,  a15
call12     a12          a13             a14,  a15   ---   ---   ---   --- 



[编辑] 2.2 Return value

          Return Value
          -----------
call4       a6
call8       a10
call12      a14



[编辑] 3 CALL0 ABI

[编辑] 3.1 Argument passing

          Return Addr  Stack Ptr       arg0, arg1, arg2, arg3, arg4, arg5
          -----------  ---------       ----------------------------------
call0       a0           a1              a2,   a3,   a4,   a5,   a6,   a7



[编辑] 3.2 Return value

          Return Value
          -----------
call0       a2



[编辑] 4 Reference























个人工具
名字空间

变换
操作
导航
工具箱