Re: [PATCH] tools/nolibc: x86: Remove `r8`, `r9` and `r10` from the clobber list

From: Borislav Petkov
Date: Tue Oct 12 2021 - 17:51:45 EST


On Tue, Oct 12, 2021 at 10:29:55PM +0200, Borislav Petkov wrote:
> On Tue, Oct 12, 2021 at 11:06:38AM +0200, Willy Tarreau wrote:
> > Let's indeed wait for any of the x86 maintainers to confirm your
> > analysis.
>
> I guess the official doc you guys are looking for is the x86-64 ABI:
>
> https://gitlab.com/x86-psABIs/x86-64-ABI/
>
> and recent pdfs are here:
>
> https://gitlab.com/x86-psABIs/x86-64-ABI/-/wikis/x86-64-psABI
>
> and there you scroll to
>
> "A.2 AMD64 Linux Kernel Conventions
>
> ...
>
> A.2.1 Calling Conventions"
>
> and that section explains which regs go where.

Ok, that didn't point to the exact answer - I realize now. I believe
what you're looking for in that doc is "Figure 3.4: Register Usage"
which has a column "callee saved" and says that the syscall arg
registers are all not callee-saved.

And I think that table is valid for the kernel too because the link
to it says "The Linux AMD64 kernel uses internally the same calling
conventions as user-level applications (see section 3.2.3 for details)."

HTH.

--
Regards/Gruss,
Boris.

https://people.kernel.org/tglx/notes-about-netiquette