diff options
Diffstat (limited to 'arch/x86/include')
| -rw-r--r-- | arch/x86/include/asm/calling.h | 52 | ||||
| -rw-r--r-- | arch/x86/include/asm/entry_arch.h | 19 | ||||
| -rw-r--r-- | arch/x86/include/asm/segment.h | 32 |
3 files changed, 47 insertions, 56 deletions
diff --git a/arch/x86/include/asm/calling.h b/arch/x86/include/asm/calling.h index 0e63c9a2a8d0..30af5a832163 100644 --- a/arch/x86/include/asm/calling.h +++ b/arch/x86/include/asm/calling.h | |||
| @@ -48,36 +48,38 @@ For 32-bit we have the following conventions - kernel is built with | |||
| 48 | 48 | ||
| 49 | 49 | ||
| 50 | /* | 50 | /* |
| 51 | * 64-bit system call stack frame layout defines and helpers, | 51 | * 64-bit system call stack frame layout defines and helpers, for |
| 52 | * for assembly code: | 52 | * assembly code (note that the seemingly unnecessary parentheses |
| 53 | * are to prevent cpp from inserting spaces in expressions that get | ||
| 54 | * passed to macros): | ||
| 53 | */ | 55 | */ |
| 54 | 56 | ||
| 55 | #define R15 0 | 57 | #define R15 (0) |
| 56 | #define R14 8 | 58 | #define R14 (8) |
| 57 | #define R13 16 | 59 | #define R13 (16) |
| 58 | #define R12 24 | 60 | #define R12 (24) |
| 59 | #define RBP 32 | 61 | #define RBP (32) |
| 60 | #define RBX 40 | 62 | #define RBX (40) |
| 61 | 63 | ||
| 62 | /* arguments: interrupts/non tracing syscalls only save up to here: */ | 64 | /* arguments: interrupts/non tracing syscalls only save up to here: */ |
| 63 | #define R11 48 | 65 | #define R11 (48) |
| 64 | #define R10 56 | 66 | #define R10 (56) |
| 65 | #define R9 64 | 67 | #define R9 (64) |
| 66 | #define R8 72 | 68 | #define R8 (72) |
| 67 | #define RAX 80 | 69 | #define RAX (80) |
| 68 | #define RCX 88 | 70 | #define RCX (88) |
| 69 | #define RDX 96 | 71 | #define RDX (96) |
| 70 | #define RSI 104 | 72 | #define RSI (104) |
| 71 | #define RDI 112 | 73 | #define RDI (112) |
| 72 | #define ORIG_RAX 120 /* + error_code */ | 74 | #define ORIG_RAX (120) /* + error_code */ |
| 73 | /* end of arguments */ | 75 | /* end of arguments */ |
| 74 | 76 | ||
| 75 | /* cpu exception frame or undefined in case of fast syscall: */ | 77 | /* cpu exception frame or undefined in case of fast syscall: */ |
| 76 | #define RIP 128 | 78 | #define RIP (128) |
| 77 | #define CS 136 | 79 | #define CS (136) |
| 78 | #define EFLAGS 144 | 80 | #define EFLAGS (144) |
| 79 | #define RSP 152 | 81 | #define RSP (152) |
| 80 | #define SS 160 | 82 | #define SS (160) |
| 81 | 83 | ||
| 82 | #define ARGOFFSET R11 | 84 | #define ARGOFFSET R11 |
| 83 | #define SWFRAME ORIG_RAX | 85 | #define SWFRAME ORIG_RAX |
| @@ -111,7 +113,7 @@ For 32-bit we have the following conventions - kernel is built with | |||
| 111 | .endif | 113 | .endif |
| 112 | .endm | 114 | .endm |
| 113 | 115 | ||
| 114 | #define ARG_SKIP 9*8 | 116 | #define ARG_SKIP (9*8) |
| 115 | 117 | ||
| 116 | .macro RESTORE_ARGS skiprax=0, addskip=0, skiprcx=0, skipr11=0, \ | 118 | .macro RESTORE_ARGS skiprax=0, addskip=0, skiprcx=0, skipr11=0, \ |
| 117 | skipr8910=0, skiprdx=0 | 119 | skipr8910=0, skiprdx=0 |
| @@ -169,7 +171,7 @@ For 32-bit we have the following conventions - kernel is built with | |||
| 169 | .endif | 171 | .endif |
| 170 | .endm | 172 | .endm |
| 171 | 173 | ||
| 172 | #define REST_SKIP 6*8 | 174 | #define REST_SKIP (6*8) |
| 173 | 175 | ||
| 174 | .macro SAVE_REST | 176 | .macro SAVE_REST |
| 175 | subq $REST_SKIP, %rsp | 177 | subq $REST_SKIP, %rsp |
diff --git a/arch/x86/include/asm/entry_arch.h b/arch/x86/include/asm/entry_arch.h index b8e96a18676b..57650ab4a5f5 100644 --- a/arch/x86/include/asm/entry_arch.h +++ b/arch/x86/include/asm/entry_arch.h | |||
| @@ -16,22 +16,11 @@ BUILD_INTERRUPT(call_function_single_interrupt,CALL_FUNCTION_SINGLE_VECTOR) | |||
| 16 | BUILD_INTERRUPT(irq_move_cleanup_interrupt,IRQ_MOVE_CLEANUP_VECTOR) | 16 | BUILD_INTERRUPT(irq_move_cleanup_interrupt,IRQ_MOVE_CLEANUP_VECTOR) |
| 17 | BUILD_INTERRUPT(reboot_interrupt,REBOOT_VECTOR) | 17 | BUILD_INTERRUPT(reboot_interrupt,REBOOT_VECTOR) |
| 18 | 18 | ||
| 19 | BUILD_INTERRUPT3(invalidate_interrupt0,INVALIDATE_TLB_VECTOR_START+0, | 19 | .irpc idx, "01234567" |
| 20 | smp_invalidate_interrupt) | 20 | BUILD_INTERRUPT3(invalidate_interrupt\idx, |
| 21 | BUILD_INTERRUPT3(invalidate_interrupt1,INVALIDATE_TLB_VECTOR_START+1, | 21 | (INVALIDATE_TLB_VECTOR_START)+\idx, |
| 22 | smp_invalidate_interrupt) | ||
| 23 | BUILD_INTERRUPT3(invalidate_interrupt2,INVALIDATE_TLB_VECTOR_START+2, | ||
| 24 | smp_invalidate_interrupt) | ||
| 25 | BUILD_INTERRUPT3(invalidate_interrupt3,INVALIDATE_TLB_VECTOR_START+3, | ||
| 26 | smp_invalidate_interrupt) | ||
| 27 | BUILD_INTERRUPT3(invalidate_interrupt4,INVALIDATE_TLB_VECTOR_START+4, | ||
| 28 | smp_invalidate_interrupt) | ||
| 29 | BUILD_INTERRUPT3(invalidate_interrupt5,INVALIDATE_TLB_VECTOR_START+5, | ||
| 30 | smp_invalidate_interrupt) | ||
| 31 | BUILD_INTERRUPT3(invalidate_interrupt6,INVALIDATE_TLB_VECTOR_START+6, | ||
| 32 | smp_invalidate_interrupt) | ||
| 33 | BUILD_INTERRUPT3(invalidate_interrupt7,INVALIDATE_TLB_VECTOR_START+7, | ||
| 34 | smp_invalidate_interrupt) | 22 | smp_invalidate_interrupt) |
| 23 | .endr | ||
| 35 | #endif | 24 | #endif |
| 36 | 25 | ||
| 37 | BUILD_INTERRUPT(x86_platform_ipi, X86_PLATFORM_IPI_VECTOR) | 26 | BUILD_INTERRUPT(x86_platform_ipi, X86_PLATFORM_IPI_VECTOR) |
diff --git a/arch/x86/include/asm/segment.h b/arch/x86/include/asm/segment.h index 14e0ed86a6f9..231f1c1d6607 100644 --- a/arch/x86/include/asm/segment.h +++ b/arch/x86/include/asm/segment.h | |||
| @@ -73,31 +73,31 @@ | |||
| 73 | 73 | ||
| 74 | #define GDT_ENTRY_DEFAULT_USER_DS 15 | 74 | #define GDT_ENTRY_DEFAULT_USER_DS 15 |
| 75 | 75 | ||
| 76 | #define GDT_ENTRY_KERNEL_BASE 12 | 76 | #define GDT_ENTRY_KERNEL_BASE (12) |
| 77 | 77 | ||
| 78 | #define GDT_ENTRY_KERNEL_CS (GDT_ENTRY_KERNEL_BASE + 0) | 78 | #define GDT_ENTRY_KERNEL_CS (GDT_ENTRY_KERNEL_BASE+0) |
| 79 | 79 | ||
| 80 | #define GDT_ENTRY_KERNEL_DS (GDT_ENTRY_KERNEL_BASE + 1) | 80 | #define GDT_ENTRY_KERNEL_DS (GDT_ENTRY_KERNEL_BASE+1) |
| 81 | 81 | ||
| 82 | #define GDT_ENTRY_TSS (GDT_ENTRY_KERNEL_BASE + 4) | 82 | #define GDT_ENTRY_TSS (GDT_ENTRY_KERNEL_BASE+4) |
| 83 | #define GDT_ENTRY_LDT (GDT_ENTRY_KERNEL_BASE + 5) | 83 | #define GDT_ENTRY_LDT (GDT_ENTRY_KERNEL_BASE+5) |
| 84 | 84 | ||
| 85 | #define GDT_ENTRY_PNPBIOS_BASE (GDT_ENTRY_KERNEL_BASE + 6) | 85 | #define GDT_ENTRY_PNPBIOS_BASE (GDT_ENTRY_KERNEL_BASE+6) |
| 86 | #define GDT_ENTRY_APMBIOS_BASE (GDT_ENTRY_KERNEL_BASE + 11) | 86 | #define GDT_ENTRY_APMBIOS_BASE (GDT_ENTRY_KERNEL_BASE+11) |
| 87 | 87 | ||
| 88 | #define GDT_ENTRY_ESPFIX_SS (GDT_ENTRY_KERNEL_BASE + 14) | 88 | #define GDT_ENTRY_ESPFIX_SS (GDT_ENTRY_KERNEL_BASE+14) |
| 89 | #define __ESPFIX_SS (GDT_ENTRY_ESPFIX_SS * 8) | 89 | #define __ESPFIX_SS (GDT_ENTRY_ESPFIX_SS*8) |
| 90 | 90 | ||
| 91 | #define GDT_ENTRY_PERCPU (GDT_ENTRY_KERNEL_BASE + 15) | 91 | #define GDT_ENTRY_PERCPU (GDT_ENTRY_KERNEL_BASE+15) |
| 92 | #ifdef CONFIG_SMP | 92 | #ifdef CONFIG_SMP |
| 93 | #define __KERNEL_PERCPU (GDT_ENTRY_PERCPU * 8) | 93 | #define __KERNEL_PERCPU (GDT_ENTRY_PERCPU * 8) |
| 94 | #else | 94 | #else |
| 95 | #define __KERNEL_PERCPU 0 | 95 | #define __KERNEL_PERCPU 0 |
| 96 | #endif | 96 | #endif |
| 97 | 97 | ||
| 98 | #define GDT_ENTRY_STACK_CANARY (GDT_ENTRY_KERNEL_BASE + 16) | 98 | #define GDT_ENTRY_STACK_CANARY (GDT_ENTRY_KERNEL_BASE+16) |
| 99 | #ifdef CONFIG_CC_STACKPROTECTOR | 99 | #ifdef CONFIG_CC_STACKPROTECTOR |
| 100 | #define __KERNEL_STACK_CANARY (GDT_ENTRY_STACK_CANARY * 8) | 100 | #define __KERNEL_STACK_CANARY (GDT_ENTRY_STACK_CANARY*8) |
| 101 | #else | 101 | #else |
| 102 | #define __KERNEL_STACK_CANARY 0 | 102 | #define __KERNEL_STACK_CANARY 0 |
| 103 | #endif | 103 | #endif |
| @@ -182,10 +182,10 @@ | |||
| 182 | 182 | ||
| 183 | #endif | 183 | #endif |
| 184 | 184 | ||
| 185 | #define __KERNEL_CS (GDT_ENTRY_KERNEL_CS * 8) | 185 | #define __KERNEL_CS (GDT_ENTRY_KERNEL_CS*8) |
| 186 | #define __KERNEL_DS (GDT_ENTRY_KERNEL_DS * 8) | 186 | #define __KERNEL_DS (GDT_ENTRY_KERNEL_DS*8) |
| 187 | #define __USER_DS (GDT_ENTRY_DEFAULT_USER_DS* 8 + 3) | 187 | #define __USER_DS (GDT_ENTRY_DEFAULT_USER_DS*8+3) |
| 188 | #define __USER_CS (GDT_ENTRY_DEFAULT_USER_CS* 8 + 3) | 188 | #define __USER_CS (GDT_ENTRY_DEFAULT_USER_CS*8+3) |
| 189 | #ifndef CONFIG_PARAVIRT | 189 | #ifndef CONFIG_PARAVIRT |
| 190 | #define get_kernel_rpl() 0 | 190 | #define get_kernel_rpl() 0 |
| 191 | #endif | 191 | #endif |
