summaryrefslogtreecommitdiff
path: root/libc/sysdeps/linux/mips/bits/syscalls.h
AgeCommit message (Collapse)Author
2020-05-17mips: Do not include hi and lo in __SYSCALL_CLOBBERS for R6Romain Naour
From [1] "GCC 10 (PR 91233) won't silently allow registers that are not architecturally available to be present in the clobber list anymore, resulting in build failure for mips*r6 targets in form of: ... .../sysdep.h:146:2: error: the register ‘lo’ cannot be clobbered in ‘asm’ for the current target 146 | __asm__ volatile ( \ | ^~~~~~~ This is because base R6 ISA doesn't define hi and lo registers w/o DSP extension. This patch provides the alternative definitions of __SYSCALL_CLOBBERS for r6 targets that won't include those registers." [1] https://sourceware.org/git/?p=glibc.git;a=commit;h=020b2a97bb15f807c0482f0faee2184ed05bcad8 Signed-off-by: Romain Naour <romain.naour@gmail.com> Cc: Waldemar Brodkorb <wbx@openadk.org>
2018-11-23Defined INLINE_SYSCALL_NOERR_NCS in mips/bits/syscalls.hVolodymyr Boyko
On Linux/MIPS (O32 ABI) for system call we have two result registers - v0 and a3. v0 contains actual syscall result on success or error number on fail, a3 set to 0/1 for indicating syscall success/fail. (if a3 == 1, v0 contains errno). Now as we can see from definition of handle_sys (arch/mips/kernel/scall32-o32.S), handler treats returned by syscall function (let's call "original") values in range [-EMAXERRNO; 0[ as -errno, a3 is set to 1 and final returned (to userspace) value is (-original). INLINE_SYSCALL_NOERR_NCS defined in mips/bits/syscalls.h will handle this behaviour. Signed-off-by: Volodymyr Boyko <boyko.cxx@gmail.com>
2014-02-02mips: silence 'set but not used' warningsSteve Ellcey
This patch uses 'attribute_unused' to clean up a number of warnings messages that are generated when doing a MIPS build. All of the changes are in MIPS specific files and there are no code changes other then adding the unused attribute where needed. Signed-off-by: Steve Ellcey <sellcey@mips.com> Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
2010-04-27MIPS: restore INLINE_SYSCALL macroGabor Juhos
The MIPS specific INLINE_SYSCALL macro has been renamed to INLINE_SYSCALL_NCS with: 763bbf9e9a27426c9be8322dca5ddf2cb4dbc464 syscall: unify part 2: NCS variety Declare common NCS (non-constant syscall) variants and convert the existing ports over to this. This change breaks system calls. The code generated with using of the new macro does not obey the restartable syscall convention used by the linux kernel. When it tries to restart the syscall the errno value is not being replaced by the syscall number. This causes weird behaviour of the 'ping' command in busybox for example: root@OpenWrt:/# ping 192.168.1.254 PING 192.168.1.254 (192.168.1.254): 56 data bytes 64 bytes from 192.168.1.254: seq=0 ttl=128 time=6.292 ms ping: recvfrom: Function not implemented 64 bytes from 192.168.1.254: seq=1 ttl=128 time=0.719 ms ping: recvfrom: Function not implemented 64 bytes from 192.168.1.254: seq=2 ttl=128 time=0.489 ms ping: recvfrom: Function not implemented 64 bytes from 192.168.1.254: seq=3 ttl=128 time=0.486 ms ping: recvfrom: Function not implemented 64 bytes from 192.168.1.254: seq=4 ttl=128 time=0.487 ms ping: recvfrom: Function not implemented 64 bytes from 192.168.1.254: seq=5 ttl=128 time=0.939 ms ping: recvfrom: Function not implemented 64 bytes from 192.168.1.254: seq=6 ttl=128 time=0.971 ms ping: recvfrom: Function not implemented 64 bytes from 192.168.1.254: seq=7 ttl=128 time=0.488 ms ping: recvfrom: Funct^C Signed-off-by: Gabor Juhos <juhosg@openwrt.org> Signed-off-by: Austin Foxley <austinf@cetoncorp.com>
2009-09-26mips: do not save variables in "hi" or "lo" across system callsDaniel Jacobowitz
The kernel does not save these registers across system calls. GCC 4.4 has gotten more aggressive about using them for temporary variables, so this shows up as intermittent crashes if you use a recent compiler. Signed-off-by: Daniel Jacobowitz <dan@codesourcery.com> Signed-off-by: Mike Frysinger <vapier@gentoo.org>
2009-07-09syscall: unify part 2: NCS varietyMike Frysinger
Declare common NCS (non-constant syscall) variants and convert the existing ports over to this. Signed-off-by: Mike Frysinger <vapier@gentoo.org>
2009-07-08syscall: unify common syscall definesMike Frysinger
Unify all the common syscall defines in syscalls-common.h and scrub all the duplicated code from relevant ports. This should also make converting existing ports to INLINE_SYSCALL() much easier as they don't have to get lost in all the unrelated noise, as well as creating new ports. Signed-off-by: Mike Frysinger <vapier@gentoo.org>
2008-07-23- trim any trailing whitespaceBernhard Reutner-Fischer
2007-02-15Atsushi Nemoto writes:Mike Frysinger
When I imported INLINE_SYSCALL, etc. from glibc, I just copied whole macros for each ABI. Actually, except for argument type (long vs. long long), internal_syscall[0-4] are identical for all ABI, and internal_syscall[5-6] for N32/N64 are identical for N32/N64. And I just disabled FORCE_FRAME_POINTER since it had caused build failure, but including <alloca.h> can solve it. Here is a patch to handle these issues, plus asm/__asm__ and volatile/__volatile__ conversion. Thanks for Peter S. Mazinger who did basic work of this cleanup.
2007-02-11Atsushi Nemoto writes:Mike Frysinger
This patch imports INLINE_SYSCALL, etc. from glibc-2.5 ports and implements _syscall[0-7] by using them, like arm and powerpc. I think this patch does not change functionality, but gives better __SYSCALL_CLOBBERS for N32/N64.
2006-12-08Take Mike Frysinger's comments into account -- make certain that userEric Andersen
applications stop using _syscall#() and use syscall() instead. Cleanup internal handling of syscall includes to use the correct header file.
2006-11-04mips64 patch from Atsushi Nemoto:Eric Andersen
The mips64 N32/N64 ABI can pass much arguments via registers.
2006-08-23sync with psm: update errno handling to be the same on all archesMike Frysinger
2006-01-05sync __SYSCALL_CLOBBERS macro from glibcMike Frysinger
2005-04-13Further rework the mips syscallsEric Andersen
2005-04-01Cleanup the mips syscalls a bit more, and fix a fewEric Andersen
annoying warnings.
2005-03-14Make mips/mipsel syscalls no longer complain about the "use of memory inputEric Andersen
without lvalue in asm". Give the asm an lvalue so it can be happy.
2004-10-19Atsushi Nemoto writes:Eric Andersen
In a recent post to linux-mips ML (and libc-alpha ML), a problem with inline syscalls was reported. http://www.linux-mips.org/archives/linux-mips/2004-10/msg00142.html It seems uClibc should be fixed also for newer gcc. Here is a patch.
2002-09-05Change <bits/syscall.h> to <bits/sysnum.h>.Miles Bader
2002-08-09Cleanup error returns to avoid warningsEric Andersen
-Erik
2002-07-26The __set_errno macro _must_ match that defined in include/bits/errno.h. WeEric Andersen
can't tack in the return -1 since then when people include errno.h, the return -1 mysteriously vanishes... Setting the __set_errno back and restoring the 'return -1;' calls to each _syscall[0-n] macro makes mips syscalls work again. -Erik
2002-07-25ldso specific syscalls and userspace syscalls all in one file now."Steven J. Hill"
2002-07-22Rework syscall handling. Rewrite syscall handlers for x86 and ARM.Eric Andersen
Prepare to kill the UNIFIED_SYSCALL option and instead have it be a per arch thing that is either enabled or not for that arch. -Erik
2002-02-04Be consistant about the ways in which asm/unistd.h mightEric Andersen
be included to avoid gratuitous conflicts... This is a hack till we have proper _syscall macros for all archs. -Erik
2002-02-01Add in syscalls.h for mipsel, thanks to Steven J. Hill.Eric Andersen
Remove and ignore generated syscall.h files from sparc and mipsel.