On Tue, Oct 18, 2022 at 6:05 PM WANG Xuerui <kernel@xxxxxxxxxx> wrote: > > From: WANG Xuerui <git@xxxxxxxxxx> > > Signed-off-by: WANG Xuerui <git@xxxxxxxxxx> > Cc: Huacai Chen <chenhuacai@xxxxxxxxxx> > Cc: Alex Shi <alexs@xxxxxxxxxx> > Cc: Yanteng Si <siyanteng@xxxxxxxxxxx> > Cc: Jonathan Corbet <corbet@xxxxxxx> > Cc: loongarch@xxxxxxxxxxxxxxx > --- > Documentation/loongarch/index.rst | 1 + > Documentation/loongarch/syscall-abi.rst | 36 +++++++++++++++++++++++++ > 2 files changed, 37 insertions(+) > create mode 100644 Documentation/loongarch/syscall-abi.rst > > diff --git a/Documentation/loongarch/index.rst b/Documentation/loongarch/index.rst > index aaba648db907..5dacd7143d2f 100644 > --- a/Documentation/loongarch/index.rst > +++ b/Documentation/loongarch/index.rst > @@ -10,6 +10,7 @@ LoongArch Architecture > > introduction > irq-chip-model > + syscall-abi > > features > > diff --git a/Documentation/loongarch/syscall-abi.rst b/Documentation/loongarch/syscall-abi.rst > new file mode 100644 > index 000000000000..6f63aa3cfc64 > --- /dev/null > +++ b/Documentation/loongarch/syscall-abi.rst > @@ -0,0 +1,36 @@ > +.. SPDX-License-Identifier: GPL-2.0 > + > +=============================== > +Linux/LoongArch system call ABI > +=============================== > + > +This document describes the system call ABI of Linux/LoongArch. > +As the kernel is 64-bit only for now, the description below assumes an LP64\* > +calling convention. > + > +Syscall numbers and parameters > +============================== > + > +Like with other recent architecture ports, for the most part Linux/LoongArch > +reuses the asm-generic syscall numbers and parameters. > +There are a few points worth mentioning though. > + > +* There is no ``renameat``. Use ``renameat2`` instead. > +* There is no ``getrlimit`` or ``setrlimit``. Use ``prlimit64`` instead. > +* There is no ``fstat`` or ``newfstatat``. Only ``statx`` is provided, and You may need list more syscalls: Controlled by __ARCH_WANT_OLD_STAT: sys_stat()/sys_lstat()/sys_fstat()/sys_fstatat() Controlled by __ARCH_WANT_NEW_STAT: sys_newstat()/sys_newlstat()/sys_newfstat()/sys_newfstatat() Controlled by __ARCH_WANT_STAT64: sys_stat64()/sys_lstat64()/sys_fstat64()/sys_fstatat64() Huacai > + low-level components making their own syscalls are expected to be aware of > + this (and provide their own shims if necessary). > + > +Invocation > +========== > + > +System calls are currently made with the ``syscall 0`` instruction. > +Although the immediate field in the instruction is not checked at present, > +it is strongly advised to keep it zeroed in case it is to be made meaningful > +in the future. > + > +The system call number is placed in the register ``a7``. > +Parameters, if present, are placed from ``a0`` through ``a6`` as needed, > +as if calling a function with the respective arguments. > +Upon return, ``a0`` contains the return value, and ``t0-t8`` should be > +considered clobbered; all other registers are preserved. > -- > 2.38.0 >