Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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>

authored by

Al Viro and committed by
Richard Weinberger
2014d018 09e129a6

+35 -75
+35 -3
arch/x86/um/shared/sysdep/host_ldt.h
··· 1 - #ifdef __i386__ 2 - #include "host_ldt_32.h" 1 + #ifndef __ASM_HOST_LDT_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 33 #else 4 - #include "host_ldt_64.h" 34 + #define LDT_empty(info) (_LDT_empty(info)) 35 + #endif 36 + 5 37 #endif
-34
arch/x86/um/shared/sysdep/host_ldt_32.h
··· 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
-38
arch/x86/um/shared/sysdep/host_ldt_64.h
··· 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