x86, asm: Fix CFI macro invocations to deal with shortcomings in gas
gas prior to (perhaps) 2.16.90 has problems with passing non- parenthesized expressions containing spaces to macros. Spaces, however, get inserted by cpp between any macro expanding to a number and a subsequent + or -. For the +, current x86 gas then removes the space again (future gas may not do so), but for the - the space gets retained and is then considered a separator between macro arguments. Fix the respective definitions for both the - and + cases, so that they neither contain spaces nor make cpp insert any (the latter by adding seemingly redundant parentheses). Signed-off-by: Jan Beulich <jbeulich@novell.com> LKML-Reference: <4CBDBEBA020000780001E05A@vpn.id2.novell.com> Cc: Alexander van Heukelum <heukelum@fastmail.fm> Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
This commit is contained in:
parent
d0ed0c3266
commit
3234282f33
7 changed files with 56 additions and 79 deletions
|
@ -73,31 +73,31 @@
|
|||
|
||||
#define GDT_ENTRY_DEFAULT_USER_DS 15
|
||||
|
||||
#define GDT_ENTRY_KERNEL_BASE 12
|
||||
#define GDT_ENTRY_KERNEL_BASE (12)
|
||||
|
||||
#define GDT_ENTRY_KERNEL_CS (GDT_ENTRY_KERNEL_BASE + 0)
|
||||
#define GDT_ENTRY_KERNEL_CS (GDT_ENTRY_KERNEL_BASE+0)
|
||||
|
||||
#define GDT_ENTRY_KERNEL_DS (GDT_ENTRY_KERNEL_BASE + 1)
|
||||
#define GDT_ENTRY_KERNEL_DS (GDT_ENTRY_KERNEL_BASE+1)
|
||||
|
||||
#define GDT_ENTRY_TSS (GDT_ENTRY_KERNEL_BASE + 4)
|
||||
#define GDT_ENTRY_LDT (GDT_ENTRY_KERNEL_BASE + 5)
|
||||
#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 + 6)
|
||||
#define GDT_ENTRY_APMBIOS_BASE (GDT_ENTRY_KERNEL_BASE + 11)
|
||||
#define GDT_ENTRY_PNPBIOS_BASE (GDT_ENTRY_KERNEL_BASE+6)
|
||||
#define GDT_ENTRY_APMBIOS_BASE (GDT_ENTRY_KERNEL_BASE+11)
|
||||
|
||||
#define GDT_ENTRY_ESPFIX_SS (GDT_ENTRY_KERNEL_BASE + 14)
|
||||
#define __ESPFIX_SS (GDT_ENTRY_ESPFIX_SS * 8)
|
||||
#define GDT_ENTRY_ESPFIX_SS (GDT_ENTRY_KERNEL_BASE+14)
|
||||
#define __ESPFIX_SS (GDT_ENTRY_ESPFIX_SS*8)
|
||||
|
||||
#define GDT_ENTRY_PERCPU (GDT_ENTRY_KERNEL_BASE + 15)
|
||||
#define GDT_ENTRY_PERCPU (GDT_ENTRY_KERNEL_BASE+15)
|
||||
#ifdef CONFIG_SMP
|
||||
#define __KERNEL_PERCPU (GDT_ENTRY_PERCPU * 8)
|
||||
#else
|
||||
#define __KERNEL_PERCPU 0
|
||||
#endif
|
||||
|
||||
#define GDT_ENTRY_STACK_CANARY (GDT_ENTRY_KERNEL_BASE + 16)
|
||||
#define GDT_ENTRY_STACK_CANARY (GDT_ENTRY_KERNEL_BASE+16)
|
||||
#ifdef CONFIG_CC_STACKPROTECTOR
|
||||
#define __KERNEL_STACK_CANARY (GDT_ENTRY_STACK_CANARY * 8)
|
||||
#define __KERNEL_STACK_CANARY (GDT_ENTRY_STACK_CANARY*8)
|
||||
#else
|
||||
#define __KERNEL_STACK_CANARY 0
|
||||
#endif
|
||||
|
@ -182,10 +182,10 @@
|
|||
|
||||
#endif
|
||||
|
||||
#define __KERNEL_CS (GDT_ENTRY_KERNEL_CS * 8)
|
||||
#define __KERNEL_DS (GDT_ENTRY_KERNEL_DS * 8)
|
||||
#define __USER_DS (GDT_ENTRY_DEFAULT_USER_DS* 8 + 3)
|
||||
#define __USER_CS (GDT_ENTRY_DEFAULT_USER_CS* 8 + 3)
|
||||
#define __KERNEL_CS (GDT_ENTRY_KERNEL_CS*8)
|
||||
#define __KERNEL_DS (GDT_ENTRY_KERNEL_DS*8)
|
||||
#define __USER_DS (GDT_ENTRY_DEFAULT_USER_DS*8+3)
|
||||
#define __USER_CS (GDT_ENTRY_DEFAULT_USER_CS*8+3)
|
||||
#ifndef CONFIG_PARAVIRT
|
||||
#define get_kernel_rpl() 0
|
||||
#endif
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue