diff options
author | Al Viro <viro@ftp.linux.org.uk> | 2011-08-18 15:09:29 -0400 |
---|---|---|
committer | Richard Weinberger <richard@nod.at> | 2011-11-02 09:15:15 -0400 |
commit | 2014d01878a8c38111eba3333f0d70ceb91f0bb7 (patch) | |
tree | 12ef1cec8ca70acaa3cdebafe243ea73d3da9679 /arch/x86/um | |
parent | 09e129a6038ead049b3ee509475420963f052a80 (diff) |
um: merge host_ldt_{32,64}.h
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Richard Weinberger <richard@nod.at>
Diffstat (limited to 'arch/x86/um')
-rw-r--r-- | arch/x86/um/shared/sysdep/host_ldt.h | 38 | ||||
-rw-r--r-- | arch/x86/um/shared/sysdep/host_ldt_32.h | 34 | ||||
-rw-r--r-- | arch/x86/um/shared/sysdep/host_ldt_64.h | 38 |
3 files changed, 35 insertions, 75 deletions
diff --git a/arch/x86/um/shared/sysdep/host_ldt.h b/arch/x86/um/shared/sysdep/host_ldt.h index 94518b3e0da5..246ff7ace5e5 100644 --- a/arch/x86/um/shared/sysdep/host_ldt.h +++ b/arch/x86/um/shared/sysdep/host_ldt.h | |||
@@ -1,5 +1,37 @@ | |||
1 | #ifdef __i386__ | 1 | #ifndef __ASM_HOST_LDT_H |
2 | #include "host_ldt_32.h" | 2 | #define __ASM_HOST_LDT_H |
3 | |||
4 | #include <asm/ldt.h> | ||
5 | |||
6 | #define LDT_entry_a(info) \ | ||
7 | ((((info)->base_addr & 0x0000ffff) << 16) | ((info)->limit & 0x0ffff)) | ||
8 | |||
9 | #define LDT_entry_b(info) \ | ||
10 | (((info)->base_addr & 0xff000000) | \ | ||
11 | (((info)->base_addr & 0x00ff0000) >> 16) | \ | ||
12 | ((info)->limit & 0xf0000) | \ | ||
13 | (((info)->read_exec_only ^ 1) << 9) | \ | ||
14 | ((info)->contents << 10) | \ | ||
15 | (((info)->seg_not_present ^ 1) << 15) | \ | ||
16 | ((info)->seg_32bit << 22) | \ | ||
17 | ((info)->limit_in_pages << 23) | \ | ||
18 | ((info)->useable << 20) | \ | ||
19 | 0x7000) | ||
20 | |||
21 | #define _LDT_empty(info) (\ | ||
22 | (info)->base_addr == 0 && \ | ||
23 | (info)->limit == 0 && \ | ||
24 | (info)->contents == 0 && \ | ||
25 | (info)->read_exec_only == 1 && \ | ||
26 | (info)->seg_32bit == 0 && \ | ||
27 | (info)->limit_in_pages == 0 && \ | ||
28 | (info)->seg_not_present == 1 && \ | ||
29 | (info)->useable == 0 ) | ||
30 | |||
31 | #ifdef CONFIG_X86_64 | ||
32 | #define LDT_empty(info) (_LDT_empty(info) && ((info)->lm == 0)) | ||
3 | #else | 33 | #else |
4 | #include "host_ldt_64.h" | 34 | #define LDT_empty(info) (_LDT_empty(info)) |
35 | #endif | ||
36 | |||
5 | #endif | 37 | #endif |
diff --git a/arch/x86/um/shared/sysdep/host_ldt_32.h b/arch/x86/um/shared/sysdep/host_ldt_32.h deleted file mode 100644 index 0953cc4df652..000000000000 --- a/arch/x86/um/shared/sysdep/host_ldt_32.h +++ /dev/null | |||
@@ -1,34 +0,0 @@ | |||
1 | #ifndef __ASM_HOST_LDT_I386_H | ||
2 | #define __ASM_HOST_LDT_I386_H | ||
3 | |||
4 | #include <asm/ldt.h> | ||
5 | |||
6 | /* | ||
7 | * macros stolen from include/asm-i386/desc.h | ||
8 | */ | ||
9 | #define LDT_entry_a(info) \ | ||
10 | ((((info)->base_addr & 0x0000ffff) << 16) | ((info)->limit & 0x0ffff)) | ||
11 | |||
12 | #define LDT_entry_b(info) \ | ||
13 | (((info)->base_addr & 0xff000000) | \ | ||
14 | (((info)->base_addr & 0x00ff0000) >> 16) | \ | ||
15 | ((info)->limit & 0xf0000) | \ | ||
16 | (((info)->read_exec_only ^ 1) << 9) | \ | ||
17 | ((info)->contents << 10) | \ | ||
18 | (((info)->seg_not_present ^ 1) << 15) | \ | ||
19 | ((info)->seg_32bit << 22) | \ | ||
20 | ((info)->limit_in_pages << 23) | \ | ||
21 | ((info)->useable << 20) | \ | ||
22 | 0x7000) | ||
23 | |||
24 | #define LDT_empty(info) (\ | ||
25 | (info)->base_addr == 0 && \ | ||
26 | (info)->limit == 0 && \ | ||
27 | (info)->contents == 0 && \ | ||
28 | (info)->read_exec_only == 1 && \ | ||
29 | (info)->seg_32bit == 0 && \ | ||
30 | (info)->limit_in_pages == 0 && \ | ||
31 | (info)->seg_not_present == 1 && \ | ||
32 | (info)->useable == 0 ) | ||
33 | |||
34 | #endif | ||
diff --git a/arch/x86/um/shared/sysdep/host_ldt_64.h b/arch/x86/um/shared/sysdep/host_ldt_64.h deleted file mode 100644 index e8b1be1e154f..000000000000 --- a/arch/x86/um/shared/sysdep/host_ldt_64.h +++ /dev/null | |||
@@ -1,38 +0,0 @@ | |||
1 | #ifndef __ASM_HOST_LDT_X86_64_H | ||
2 | #define __ASM_HOST_LDT_X86_64_H | ||
3 | |||
4 | #include <asm/ldt.h> | ||
5 | |||
6 | /* | ||
7 | * macros stolen from include/asm-x86_64/desc.h | ||
8 | */ | ||
9 | #define LDT_entry_a(info) \ | ||
10 | ((((info)->base_addr & 0x0000ffff) << 16) | ((info)->limit & 0x0ffff)) | ||
11 | |||
12 | /* Don't allow setting of the lm bit. It is useless anyways because | ||
13 | * 64bit system calls require __USER_CS. */ | ||
14 | #define LDT_entry_b(info) \ | ||
15 | (((info)->base_addr & 0xff000000) | \ | ||
16 | (((info)->base_addr & 0x00ff0000) >> 16) | \ | ||
17 | ((info)->limit & 0xf0000) | \ | ||
18 | (((info)->read_exec_only ^ 1) << 9) | \ | ||
19 | ((info)->contents << 10) | \ | ||
20 | (((info)->seg_not_present ^ 1) << 15) | \ | ||
21 | ((info)->seg_32bit << 22) | \ | ||
22 | ((info)->limit_in_pages << 23) | \ | ||
23 | ((info)->useable << 20) | \ | ||
24 | /* ((info)->lm << 21) | */ \ | ||
25 | 0x7000) | ||
26 | |||
27 | #define LDT_empty(info) (\ | ||
28 | (info)->base_addr == 0 && \ | ||
29 | (info)->limit == 0 && \ | ||
30 | (info)->contents == 0 && \ | ||
31 | (info)->read_exec_only == 1 && \ | ||
32 | (info)->seg_32bit == 0 && \ | ||
33 | (info)->limit_in_pages == 0 && \ | ||
34 | (info)->seg_not_present == 1 && \ | ||
35 | (info)->useable == 0 && \ | ||
36 | (info)->lm == 0) | ||
37 | |||
38 | #endif | ||