Re: Details of MIPS(Octeon) system call semantics

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, Jun 02, 2010 at 03:17:38PM +0500, adnan iqbal wrote:

> I am able to find system call list (o32 and n64) in
> /usr/include/asm/unistd.h over octeon/debian board. I am looking for details
> about these system calls so that for each system call i know exactly
> 
> 1. What parmeters should be set in which registers before syscall
> 2. Which registers contain output of those system calls.

The basic concept for all ABIs is that syscalls are working almost like
subroutine calls, so:

 o arguments are passed in $a0 - $a3 for o32
 o arguments are passed in $a0 - $a7 for N32 and N64
 o argument that don't fit into the argument registers are passed on the
   stack.
 o for details such as alignment of 64-bit arguments the usual ABI
   conventions apply
 o the result is return in $v0

In addition to normal subroutine calls:

 o $a3 on syscall return will indicate success or error.  0 means success,
   non-zero means an error happened in which case $v0 will contain an
   errno.h error code.
 o Many syscalls deviate from this convention.  For example the sigreturn
   family of syscalls doesn't return a result or error status.
 o pipe() will return the 2nd filedescriptor of the result in $v1.
 o vfork is even more weird.
 o The ABI differences mean there are many subtle difference between the
   syscall handlers.

  Ralf



[Index of Archives]     [Linux MIPS Home]     [LKML Archive]     [Linux ARM Kernel]     [Linux ARM]     [Linux]     [Git]     [Yosemite News]     [Linux SCSI]     [Linux Hams]

  Powered by Linux