Linux内核模块ABI(x86)

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

  • 它使用寄存器来传递前三个参数( eaxedxecx )。

  • 它不像GCC文档中描述的那样fastcall 。 文档说 fastcall使用ecx和edx(微软风格)。

我能find的唯一有点相关的信息就是这个 ,但是这个信息并不多。

所以:

1)是否有内核模块中使用的ABI官方文档(不是系统调用ABI,而不仅仅是函数列表 – 我find了)。

2)编译器产生这个奇怪的fastcall是怎么回事? 有没有我错过的开关?

-mregparm=3负责这个。