Reputation: 25288
I'm looking for an official definition of the ABI used for calls in kernel modules on x86. I recently looked into a compiled module and was surprised to discover that:
it uses registers to pass the first three arguments (eax
, edx
and
ecx
).
it's not fastcall
as described in GCC docs. The docs say that
fastcall
uses ecx and edx (Microsoft style).
The only somewhat relevant info I could find was this, but it's not saying much at all.
So:
1) Is there any official documentation on the ABI used in kernel modules (not the syscall ABI and not just the function list - those I did find).
2) How is this weird fastcall produced by the compiler? Is there a switch I missed?
Upvotes: 3
Views: 1070