https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98482
--- Comment #4 from Topi Miettinen <toiwoton at gmail dot com> --- Sorry, I didn't check the ABI. It seems that %r11 and maybe %r10 should be usable: Figure 3.4: Register Usage Register Usage Preserved across function calls %r10 temporary register, used for passing a function’s static chain pointer No %r11 temporary register No Otherwise, I suppose any register could be used if it's saved: pushq %reg movabsq $__fentry__, %reg call *%reg popq %reg