/drivers/include/uapi/asm/bitsperlong.h |
---|
0,0 → 1,13 |
#ifndef __ASM_X86_BITSPERLONG_H |
#define __ASM_X86_BITSPERLONG_H |
#if defined(__x86_64__) && !defined(__ILP32__) |
# define __BITS_PER_LONG 64 |
#else |
# define __BITS_PER_LONG 32 |
#endif |
#include <asm-generic/bitsperlong.h> |
#endif /* __ASM_X86_BITSPERLONG_H */ |
/drivers/include/uapi/asm/byteorder.h |
---|
0,0 → 1,6 |
#ifndef _ASM_X86_BYTEORDER_H |
#define _ASM_X86_BYTEORDER_H |
#include <linux/byteorder/little_endian.h> |
#endif /* _ASM_X86_BYTEORDER_H */ |
/drivers/include/uapi/asm/posix_types_32.h |
---|
0,0 → 1,25 |
#ifndef _ASM_X86_POSIX_TYPES_32_H |
#define _ASM_X86_POSIX_TYPES_32_H |
/* |
* This file is generally used by user-level software, so you need to |
* be a little careful about namespace pollution etc. Also, we cannot |
* assume GCC is being used. |
*/ |
typedef unsigned short __kernel_mode_t; |
#define __kernel_mode_t __kernel_mode_t |
typedef unsigned short __kernel_ipc_pid_t; |
#define __kernel_ipc_pid_t __kernel_ipc_pid_t |
typedef unsigned short __kernel_uid_t; |
typedef unsigned short __kernel_gid_t; |
#define __kernel_uid_t __kernel_uid_t |
typedef unsigned short __kernel_old_dev_t; |
#define __kernel_old_dev_t __kernel_old_dev_t |
#include <asm-generic/posix_types.h> |
#endif /* _ASM_X86_POSIX_TYPES_32_H */ |
/drivers/include/uapi/asm/posix_types_64.h |
---|
0,0 → 1,19 |
#ifndef _ASM_X86_POSIX_TYPES_64_H |
#define _ASM_X86_POSIX_TYPES_64_H |
/* |
* This file is generally used by user-level software, so you need to |
* be a little careful about namespace pollution etc. Also, we cannot |
* assume GCC is being used. |
*/ |
typedef unsigned short __kernel_old_uid_t; |
typedef unsigned short __kernel_old_gid_t; |
#define __kernel_old_uid_t __kernel_old_uid_t |
typedef unsigned long __kernel_old_dev_t; |
#define __kernel_old_dev_t __kernel_old_dev_t |
#include <asm-generic/posix_types.h> |
#endif /* _ASM_X86_POSIX_TYPES_64_H */ |
/drivers/include/uapi/asm/posix_types_x32.h |
---|
0,0 → 1,19 |
#ifndef _ASM_X86_POSIX_TYPES_X32_H |
#define _ASM_X86_POSIX_TYPES_X32_H |
/* |
* This file is only used by user-level software, so you need to |
* be a little careful about namespace pollution etc. Also, we cannot |
* assume GCC is being used. |
* |
* These types should generally match the ones used by the 64-bit kernel, |
* |
*/ |
typedef long long __kernel_long_t; |
typedef unsigned long long __kernel_ulong_t; |
#define __kernel_long_t __kernel_long_t |
#include <asm/posix_types_64.h> |
#endif /* _ASM_X86_POSIX_TYPES_X32_H */ |
/drivers/include/uapi/asm/processor-flags.h |
---|
118,6 → 118,8 |
#define X86_CR4_SMEP _BITUL(X86_CR4_SMEP_BIT) |
#define X86_CR4_SMAP_BIT 21 /* enable SMAP support */ |
#define X86_CR4_SMAP _BITUL(X86_CR4_SMAP_BIT) |
#define X86_CR4_PKE_BIT 22 /* enable Protection Keys support */ |
#define X86_CR4_PKE _BITUL(X86_CR4_PKE_BIT) |
/* |
* x86-64 Task Priority Register, CR8 |
/drivers/include/uapi/asm/sigcontext.h |
---|
256,7 → 256,7 |
__u16 cs; |
__u16 gs; |
__u16 fs; |
__u16 __pad0; |
__u16 ss; |
__u64 err; |
__u64 trapno; |
__u64 oldmask; |
341,9 → 341,37 |
__u64 rip; |
__u64 eflags; /* RFLAGS */ |
__u16 cs; |
/* |
* Prior to 2.5.64 ("[PATCH] x86-64 updates for 2.5.64-bk3"), |
* Linux saved and restored fs and gs in these slots. This |
* was counterproductive, as fsbase and gsbase were never |
* saved, so arch_prctl was presumably unreliable. |
* |
* These slots should never be reused without extreme caution: |
* |
* - Some DOSEMU versions stash fs and gs in these slots manually, |
* thus overwriting anything the kernel expects to be preserved |
* in these slots. |
* |
* - If these slots are ever needed for any other purpose, |
* there is some risk that very old 64-bit binaries could get |
* confused. I doubt that many such binaries still work, |
* though, since the same patch in 2.5.64 also removed the |
* 64-bit set_thread_area syscall, so it appears that there |
* is no TLS API beyond modify_ldt that works in both pre- |
* and post-2.5.64 kernels. |
* |
* If the kernel ever adds explicit fs, gs, fsbase, and gsbase |
* save/restore, it will most likely need to be opt-in and use |
* different context slots. |
*/ |
__u16 gs; |
__u16 fs; |
__u16 __pad0; |
union { |
__u16 ss; /* If UC_SIGCONTEXT_SS */ |
__u16 __pad0; /* Alias name for old (!UC_SIGCONTEXT_SS) user-space */ |
}; |
__u64 err; |
__u64 trapno; |
__u64 oldmask; |
/drivers/include/uapi/asm/stat.h |
---|
0,0 → 1,137 |
#ifndef _ASM_X86_STAT_H |
#define _ASM_X86_STAT_H |
#include <asm/posix_types.h> |
#define STAT_HAVE_NSEC 1 |
#ifdef __i386__ |
struct stat { |
unsigned long st_dev; |
unsigned long st_ino; |
unsigned short st_mode; |
unsigned short st_nlink; |
unsigned short st_uid; |
unsigned short st_gid; |
unsigned long st_rdev; |
unsigned long st_size; |
unsigned long st_blksize; |
unsigned long st_blocks; |
unsigned long st_atime; |
unsigned long st_atime_nsec; |
unsigned long st_mtime; |
unsigned long st_mtime_nsec; |
unsigned long st_ctime; |
unsigned long st_ctime_nsec; |
unsigned long __unused4; |
unsigned long __unused5; |
}; |
/* We don't need to memset the whole thing just to initialize the padding */ |
#define INIT_STRUCT_STAT_PADDING(st) do { \ |
st.__unused4 = 0; \ |
st.__unused5 = 0; \ |
} while (0) |
#define STAT64_HAS_BROKEN_ST_INO 1 |
/* This matches struct stat64 in glibc2.1, hence the absolutely |
* insane amounts of padding around dev_t's. |
*/ |
struct stat64 { |
unsigned long long st_dev; |
unsigned char __pad0[4]; |
unsigned long __st_ino; |
unsigned int st_mode; |
unsigned int st_nlink; |
unsigned long st_uid; |
unsigned long st_gid; |
unsigned long long st_rdev; |
unsigned char __pad3[4]; |
long long st_size; |
unsigned long st_blksize; |
/* Number 512-byte blocks allocated. */ |
unsigned long long st_blocks; |
unsigned long st_atime; |
unsigned long st_atime_nsec; |
unsigned long st_mtime; |
unsigned int st_mtime_nsec; |
unsigned long st_ctime; |
unsigned long st_ctime_nsec; |
unsigned long long st_ino; |
}; |
/* We don't need to memset the whole thing just to initialize the padding */ |
#define INIT_STRUCT_STAT64_PADDING(st) do { \ |
memset(&st.__pad0, 0, sizeof(st.__pad0)); \ |
memset(&st.__pad3, 0, sizeof(st.__pad3)); \ |
} while (0) |
#else /* __i386__ */ |
struct stat { |
__kernel_ulong_t st_dev; |
__kernel_ulong_t st_ino; |
__kernel_ulong_t st_nlink; |
unsigned int st_mode; |
unsigned int st_uid; |
unsigned int st_gid; |
unsigned int __pad0; |
__kernel_ulong_t st_rdev; |
__kernel_long_t st_size; |
__kernel_long_t st_blksize; |
__kernel_long_t st_blocks; /* Number 512-byte blocks allocated. */ |
__kernel_ulong_t st_atime; |
__kernel_ulong_t st_atime_nsec; |
__kernel_ulong_t st_mtime; |
__kernel_ulong_t st_mtime_nsec; |
__kernel_ulong_t st_ctime; |
__kernel_ulong_t st_ctime_nsec; |
__kernel_long_t __unused[3]; |
}; |
/* We don't need to memset the whole thing just to initialize the padding */ |
#define INIT_STRUCT_STAT_PADDING(st) do { \ |
st.__pad0 = 0; \ |
st.__unused[0] = 0; \ |
st.__unused[1] = 0; \ |
st.__unused[2] = 0; \ |
} while (0) |
#endif |
/* for 32bit emulation and 32 bit kernels */ |
struct __old_kernel_stat { |
unsigned short st_dev; |
unsigned short st_ino; |
unsigned short st_mode; |
unsigned short st_nlink; |
unsigned short st_uid; |
unsigned short st_gid; |
unsigned short st_rdev; |
#ifdef __i386__ |
unsigned long st_size; |
unsigned long st_atime; |
unsigned long st_mtime; |
unsigned long st_ctime; |
#else |
unsigned int st_size; |
unsigned int st_atime; |
unsigned int st_mtime; |
unsigned int st_ctime; |
#endif |
}; |
#endif /* _ASM_X86_STAT_H */ |
/drivers/include/uapi/asm/swab.h |
---|
0,0 → 1,36 |
#ifndef _ASM_X86_SWAB_H |
#define _ASM_X86_SWAB_H |
#include <linux/types.h> |
#include <linux/compiler.h> |
static inline __attribute_const__ __u32 __arch_swab32(__u32 val) |
{ |
asm("bswapl %0" : "=r" (val) : "0" (val)); |
return val; |
} |
#define __arch_swab32 __arch_swab32 |
static inline __attribute_const__ __u64 __arch_swab64(__u64 val) |
{ |
#ifdef __i386__ |
union { |
struct { |
__u32 a; |
__u32 b; |
} s; |
__u64 u; |
} v; |
v.u = val; |
asm("bswapl %0 ; bswapl %1 ; xchgl %0,%1" |
: "=r" (v.s.a), "=r" (v.s.b) |
: "0" (v.s.a), "1" (v.s.b)); |
return v.u; |
#else /* __i386__ */ |
asm("bswapq %0" : "=r" (val) : "0" (val)); |
return val; |
#endif |
} |
#define __arch_swab64 __arch_swab64 |
#endif /* _ASM_X86_SWAB_H */ |
/drivers/include/uapi/asm/types.h |
---|
0,0 → 1,6 |
#ifndef _ASM_X86_TYPES_H |
#define _ASM_X86_TYPES_H |
#include <asm-generic/types.h> |
#endif /* _ASM_X86_TYPES_H */ |