diff options
author | Al Viro <viro@ftp.linux.org.uk> | 2011-08-18 20:09:29 +0100 |
---|---|---|
committer | Richard Weinberger <richard@nod.at> | 2011-11-02 14:15:15 +0100 |
commit | 2014d01878a8c38111eba3333f0d70ceb91f0bb7 (patch) | |
tree | 12ef1cec8ca70acaa3cdebafe243ea73d3da9679 /arch/x86/um/shared/sysdep/host_ldt.h | |
parent | 09e129a6038ead049b3ee509475420963f052a80 (diff) | |
download | linux-2014d01878a8c38111eba3333f0d70ceb91f0bb7.tar.bz2 |
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/shared/sysdep/host_ldt.h')
-rw-r--r-- | arch/x86/um/shared/sysdep/host_ldt.h | 38 |
1 files changed, 35 insertions, 3 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 @@ -#ifdef __i386__ -#include "host_ldt_32.h" +#ifndef __ASM_HOST_LDT_H +#define __ASM_HOST_LDT_H + +#include <asm/ldt.h> + +#define LDT_entry_a(info) \ + ((((info)->base_addr & 0x0000ffff) << 16) | ((info)->limit & 0x0ffff)) + +#define LDT_entry_b(info) \ + (((info)->base_addr & 0xff000000) | \ + (((info)->base_addr & 0x00ff0000) >> 16) | \ + ((info)->limit & 0xf0000) | \ + (((info)->read_exec_only ^ 1) << 9) | \ + ((info)->contents << 10) | \ + (((info)->seg_not_present ^ 1) << 15) | \ + ((info)->seg_32bit << 22) | \ + ((info)->limit_in_pages << 23) | \ + ((info)->useable << 20) | \ + 0x7000) + +#define _LDT_empty(info) (\ + (info)->base_addr == 0 && \ + (info)->limit == 0 && \ + (info)->contents == 0 && \ + (info)->read_exec_only == 1 && \ + (info)->seg_32bit == 0 && \ + (info)->limit_in_pages == 0 && \ + (info)->seg_not_present == 1 && \ + (info)->useable == 0 ) + +#ifdef CONFIG_X86_64 +#define LDT_empty(info) (_LDT_empty(info) && ((info)->lm == 0)) #else -#include "host_ldt_64.h" +#define LDT_empty(info) (_LDT_empty(info)) +#endif + #endif |