linux-kernel-test/arch/arm64/include/asm/stat.h
Catalin Marinas 7992d60dc4 arm64: System calls handling
This patch adds support for system calls coming from 64-bit
applications. It uses the asm-generic/unistd.h definitions with the
canonical set of system calls. The private system calls are only used
for 32-bit (compat) applications as 64-bit ones can set the TLS and
flush the caches entirely from user space.

The sys_call_table is just an array defined in a C file and it contains
pointers to the syscall functions. The array is 4KB aligned to allow the
use of the ADRP instruction (longer range ADR) in entry.S.

Signed-off-by: Will Deacon <will.deacon@arm.com>
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
Acked-by: Tony Lindgren <tony@atomide.com>
Acked-by: Nicolas Pitre <nico@linaro.org>
Acked-by: Olof Johansson <olof@lixom.net>
Acked-by: Santosh Shilimkar <santosh.shilimkar@ti.com>
2012-09-17 13:42:08 +01:00

63 lines
1.5 KiB
C

/*
* Copyright (C) 2012 ARM Ltd.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef __ASM_STAT_H
#define __ASM_STAT_H
#include <asm-generic/stat.h>
#if defined(__KERNEL__) && defined(CONFIG_COMPAT)
#include <asm/compat.h>
/*
* struct stat64 is needed for compat tasks only. Its definition is different
* from the generic struct stat64.
*/
struct stat64 {
compat_u64 st_dev;
unsigned char __pad0[4];
#define STAT64_HAS_BROKEN_ST_INO 1
compat_ulong_t __st_ino;
compat_uint_t st_mode;
compat_uint_t st_nlink;
compat_ulong_t st_uid;
compat_ulong_t st_gid;
compat_u64 st_rdev;
unsigned char __pad3[4];
compat_s64 st_size;
compat_ulong_t st_blksize;
compat_u64 st_blocks; /* Number of 512-byte blocks allocated. */
compat_ulong_t st_atime;
compat_ulong_t st_atime_nsec;
compat_ulong_t st_mtime;
compat_ulong_t st_mtime_nsec;
compat_ulong_t st_ctime;
compat_ulong_t st_ctime_nsec;
compat_u64 st_ino;
};
#endif
#endif