Linux内核模块ABI(x86)

Igo*_*sky 3 linux x86 kernel abi

我正在寻找在x86上用于内核模块调用的ABI的官方定义.我最近查看了一个已编译的模块,并惊讶地发现:

  • 它使用寄存器传递前三个参数(eax,edxecx).

  • 它不像fastcallGCC文档中描述的那样.该文件说的是 fastcall使用ECX和EDX(微软风格).

我能找到的唯一有点相关的信息就是这个,但它并没有说太多.

所以:

1)是否有关于内核模块中使用的ABI的官方文档(不是系统调用ABI而不仅仅是函数列表 - 我找到的那些).

2)编译器如何产生这种奇怪的快速调用?我错过了一个开关吗?

ado*_*yan 7

-mregparm=3 对此负责.