Я искал тег asmlinkage.
С https://kernelnewbies.org/FAQ/asmlinkage
Это #define для некоторой магии gcc, которая сообщает компилятору, что функция не должна ожидать, что найдетлюбой из его аргументов в регистрах (обычная оптимизация), но только в стеке ЦП.
В определении определено, что он пуст для x86_64
#ifdef __cplusplus
#define CPP_ASMLINKAGE extern "C"
#else
#define CPP_ASMLINKAGE
#endif
#ifndef asmlinkage
#define asmlinkage CPP_ASMLINKAGE
#endif
Кроме того,Я читал, что спецификация ABI говорит, что мы должны поместить номер системного вызова в регистр, а параметры в некоторые другие регистры.
Тогда почему мы ищем параметры функции в стеке. Номер системного вызова также помещен в стек?