Простой способ узнать, как его использует ядро, - это просто собрать ядро (CROSS_COMPILE=... ARCH=arm make vmlinux
), а затем разобрать его целиком,
${CROSS_COMPILE}objdump -d vmlinux.o | grep 'sb|r9'
для проверки (с использованием имен r9
и sb
, поскольку это зависит от того, что именно выдает objdump).
Если вы когда-нибудь найдете его в коде пролога / эпилога (в таких инструкциях, как push {..., r9, ...}
, stmfd sp!, {..., r9, ...}
или их соответствующих pop
/ ldmfd
), то он будет сохранен. В противном случае, просто еще одна царапина рег. Результат может зависеть от вашей цепочки инструментов, параметров конфигурации ядра или цели ARM.
Тем не менее, если вы скомпилируете ядро Thumb-2, оно будет не сохранено вызываемым пользователем. Это связано с тем, что Thumb-2 push
/ pop
работают только в нижнем регистре (и lr
/ pc
дополняющим образом, push lr
в паре с pop pc
).