diff options
| author | Linus Torvalds <torvalds@home.transmeta.com> | 2002-12-16 05:39:07 -0800 |
|---|---|---|
| committer | Linus Torvalds <torvalds@home.transmeta.com> | 2002-12-16 05:39:07 -0800 |
| commit | e2a6cbc0e18fea1604841988c0383b67119bb567 (patch) | |
| tree | e7912a63b596627d3c0ae30f0ab0caa6788e93bb /include | |
| parent | 4749dedc684b1a8f6c9f31b85b1f6d1a63ca495a (diff) | |
Add "sysenter" support on x86, and a "vsyscall" page.
Instead of doing a "int 0x80" instruction for system calls,
user space can do a "call 0xfffff000" which will do the right
thing regardless of what kind of system call support the CPU
has.
Diffstat (limited to 'include')
| -rw-r--r-- | include/asm-i386/fixmap.h | 7 | ||||
| -rw-r--r-- | include/asm-i386/segment.h | 36 |
2 files changed, 23 insertions, 20 deletions
diff --git a/include/asm-i386/fixmap.h b/include/asm-i386/fixmap.h index 5cbdbbe4b35d..0972df25f4c9 100644 --- a/include/asm-i386/fixmap.h +++ b/include/asm-i386/fixmap.h @@ -42,6 +42,8 @@ * task switches. */ enum fixed_addresses { + FIX_VSYSCALL, + FIX_HOLE, #ifdef CONFIG_X86_LOCAL_APIC FIX_APIC_BASE, /* local (CPU) APIC) -- required for SMP or not */ #endif @@ -96,10 +98,9 @@ extern void __set_fixmap (enum fixed_addresses idx, * used by vmalloc.c. * * Leave one empty page between vmalloc'ed areas and - * the start of the fixmap, and leave one page empty - * at the top of mem.. + * the start of the fixmap. */ -#define FIXADDR_TOP (0xffffe000UL) +#define FIXADDR_TOP (0xfffff000UL) #define __FIXADDR_SIZE (__end_of_permanent_fixed_addresses << PAGE_SHIFT) #define FIXADDR_START (FIXADDR_TOP - __FIXADDR_SIZE) diff --git a/include/asm-i386/segment.h b/include/asm-i386/segment.h index 25d468c3dc0d..2abdb7c5bea7 100644 --- a/include/asm-i386/segment.h +++ b/include/asm-i386/segment.h @@ -9,8 +9,8 @@ * 2 - reserved * 3 - reserved * - * 4 - default user CS <==== new cacheline - * 5 - default user DS + * 4 - unused <==== new cacheline + * 5 - unused * * ------- start of TLS (Thread-Local Storage) segments: * @@ -25,16 +25,18 @@ * * 12 - kernel code segment <==== new cacheline * 13 - kernel data segment - * 14 - TSS - * 15 - LDT - * 16 - PNPBIOS support (16->32 gate) - * 17 - PNPBIOS support - * 18 - PNPBIOS support + * 14 - default user CS + * 15 - default user DS + * 16 - TSS + * 17 - LDT + * 18 - PNPBIOS support (16->32 gate) * 19 - PNPBIOS support * 20 - PNPBIOS support - * 21 - APM BIOS support - * 22 - APM BIOS support - * 23 - APM BIOS support + * 21 - PNPBIOS support + * 22 - PNPBIOS support + * 23 - APM BIOS support + * 24 - APM BIOS support + * 25 - APM BIOS support */ #define GDT_ENTRY_TLS_ENTRIES 3 #define GDT_ENTRY_TLS_MIN 6 @@ -42,10 +44,10 @@ #define TLS_SIZE (GDT_ENTRY_TLS_ENTRIES * 8) -#define GDT_ENTRY_DEFAULT_USER_CS 4 +#define GDT_ENTRY_DEFAULT_USER_CS 14 #define __USER_CS (GDT_ENTRY_DEFAULT_USER_CS * 8 + 3) -#define GDT_ENTRY_DEFAULT_USER_DS 5 +#define GDT_ENTRY_DEFAULT_USER_DS 15 #define __USER_DS (GDT_ENTRY_DEFAULT_USER_DS * 8 + 3) #define GDT_ENTRY_KERNEL_BASE 12 @@ -56,14 +58,14 @@ #define GDT_ENTRY_KERNEL_DS (GDT_ENTRY_KERNEL_BASE + 1) #define __KERNEL_DS (GDT_ENTRY_KERNEL_DS * 8) -#define GDT_ENTRY_TSS (GDT_ENTRY_KERNEL_BASE + 2) -#define GDT_ENTRY_LDT (GDT_ENTRY_KERNEL_BASE + 3) +#define GDT_ENTRY_TSS (GDT_ENTRY_KERNEL_BASE + 4) +#define GDT_ENTRY_LDT (GDT_ENTRY_KERNEL_BASE + 5) -#define GDT_ENTRY_PNPBIOS_BASE (GDT_ENTRY_KERNEL_BASE + 4) -#define GDT_ENTRY_APMBIOS_BASE (GDT_ENTRY_KERNEL_BASE + 9) +#define GDT_ENTRY_PNPBIOS_BASE (GDT_ENTRY_KERNEL_BASE + 6) +#define GDT_ENTRY_APMBIOS_BASE (GDT_ENTRY_KERNEL_BASE + 11) /* - * The GDT has 21 entries but we pad it to cacheline boundary: + * The GDT has 23 entries but we pad it to cacheline boundary: */ #define GDT_ENTRIES 24 |
