mips64 requires 'struct stat' conversion due to incorrect 32-bit
fields where time_t should be in the kernel version of the structure.
syscall_arch.h already performed the correct translation for stat,
fstat, and lstat syscalls, but omitted special handling for fstatat.
register long r7 __asm__("$7");
register long r2 __asm__("$2");
register long r7 __asm__("$7");
register long r2 __asm__("$2");
if (n == SYS_stat || n == SYS_fstat || n == SYS_lstat)
r5 = (long) &kst;
if (n == SYS_stat || n == SYS_fstat || n == SYS_lstat)
r5 = (long) &kst;
+ if (n == SYS_newfstatat)
+ r6 = (long) &kst;
- r4 = a;
- r6 = c;
- r7 = d;
__asm__ __volatile__ (
"daddu $2,$0,%2 ; syscall"
: "=&r"(r2), "=r"(r7) : "ir"(n), "0"(r2), "1"(r7),
__asm__ __volatile__ (
"daddu $2,$0,%2 ; syscall"
: "=&r"(r2), "=r"(r7) : "ir"(n), "0"(r2), "1"(r7),
if (n == SYS_stat || n == SYS_fstat || n == SYS_lstat)
__stat_fix(&kst, (struct stat *)b);
if (n == SYS_stat || n == SYS_fstat || n == SYS_lstat)
__stat_fix(&kst, (struct stat *)b);
+ if (n == SYS_newfstatat)
+ __stat_fix(&kst, (struct stat *)c);
{
long r2;
long old_b = b;
{
long r2;
long old_b = b;
struct kernel_stat kst;
if (n == SYS_stat || n == SYS_fstat || n == SYS_lstat)
b = (long) &kst;
struct kernel_stat kst;
if (n == SYS_stat || n == SYS_fstat || n == SYS_lstat)
b = (long) &kst;
+ if (n == SYS_newfstatat)
+ c = (long) &kst;
r2 = (__syscall)(n, a, b, c, d);
if (r2 > -4096UL) return r2;
if (n == SYS_stat || n == SYS_fstat || n == SYS_lstat)
__stat_fix(&kst, (struct stat *)old_b);
r2 = (__syscall)(n, a, b, c, d);
if (r2 > -4096UL) return r2;
if (n == SYS_stat || n == SYS_fstat || n == SYS_lstat)
__stat_fix(&kst, (struct stat *)old_b);
+ if (n == SYS_newfstatat)
+ __stat_fix(&kst, (struct stat *)old_c);
{
long r2;
long old_b = b;
{
long r2;
long old_b = b;
struct kernel_stat kst;
if (n == SYS_stat || n == SYS_fstat || n == SYS_lstat)
b = (long) &kst;
struct kernel_stat kst;
if (n == SYS_stat || n == SYS_fstat || n == SYS_lstat)
b = (long) &kst;
+ if (n == SYS_newfstatat)
+ c = (long) &kst;
r2 = (__syscall)(n, a, b, c, d, e);
if (r2 > -4096UL) return r2;
if (n == SYS_stat || n == SYS_fstat || n == SYS_lstat)
__stat_fix(&kst, (struct stat *)old_b);
r2 = (__syscall)(n, a, b, c, d, e);
if (r2 > -4096UL) return r2;
if (n == SYS_stat || n == SYS_fstat || n == SYS_lstat)
__stat_fix(&kst, (struct stat *)old_b);
+ if (n == SYS_newfstatat)
+ __stat_fix(&kst, (struct stat *)old_c);
{
long r2;
long old_b = b;
{
long r2;
long old_b = b;
struct kernel_stat kst;
if (n == SYS_stat || n == SYS_fstat || n == SYS_lstat)
b = (long) &kst;
struct kernel_stat kst;
if (n == SYS_stat || n == SYS_fstat || n == SYS_lstat)
b = (long) &kst;
+ if (n == SYS_newfstatat)
+ c = (long) &kst;
r2 = (__syscall)(n, a, b, c, d, e, f);
if (r2 > -4096UL) return r2;
if (n == SYS_stat || n == SYS_fstat || n == SYS_lstat)
__stat_fix(&kst, (struct stat *)old_b);
r2 = (__syscall)(n, a, b, c, d, e, f);
if (r2 > -4096UL) return r2;
if (n == SYS_stat || n == SYS_fstat || n == SYS_lstat)
__stat_fix(&kst, (struct stat *)old_b);
+ if (n == SYS_newfstatat)
+ __stat_fix(&kst, (struct stat *)old_c);