forked from KolibriOS/kolibrios
ddk: v4.6.7
git-svn-id: svn://kolibrios.org@7143 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
13
drivers/include/uapi/asm/bitsperlong.h
Normal file
13
drivers/include/uapi/asm/bitsperlong.h
Normal file
@@ -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 */
|
||||
|
6
drivers/include/uapi/asm/byteorder.h
Normal file
6
drivers/include/uapi/asm/byteorder.h
Normal file
@@ -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 */
|
25
drivers/include/uapi/asm/posix_types_32.h
Normal file
25
drivers/include/uapi/asm/posix_types_32.h
Normal file
@@ -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 */
|
19
drivers/include/uapi/asm/posix_types_64.h
Normal file
19
drivers/include/uapi/asm/posix_types_64.h
Normal file
@@ -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 */
|
19
drivers/include/uapi/asm/posix_types_x32.h
Normal file
19
drivers/include/uapi/asm/posix_types_x32.h
Normal file
@@ -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 */
|
@@ -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
|
||||
|
@@ -256,7 +256,7 @@ struct sigcontext_64 {
|
||||
__u16 cs;
|
||||
__u16 gs;
|
||||
__u16 fs;
|
||||
__u16 __pad0;
|
||||
__u16 ss;
|
||||
__u64 err;
|
||||
__u64 trapno;
|
||||
__u64 oldmask;
|
||||
@@ -341,9 +341,37 @@ struct sigcontext {
|
||||
__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;
|
||||
|
137
drivers/include/uapi/asm/stat.h
Normal file
137
drivers/include/uapi/asm/stat.h
Normal file
@@ -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 */
|
36
drivers/include/uapi/asm/swab.h
Normal file
36
drivers/include/uapi/asm/swab.h
Normal file
@@ -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 */
|
6
drivers/include/uapi/asm/types.h
Normal file
6
drivers/include/uapi/asm/types.h
Normal file
@@ -0,0 +1,6 @@
|
||||
#ifndef _ASM_X86_TYPES_H
|
||||
#define _ASM_X86_TYPES_H
|
||||
|
||||
#include <asm-generic/types.h>
|
||||
|
||||
#endif /* _ASM_X86_TYPES_H */
|
Reference in New Issue
Block a user