|
@@ -204,6 +204,7 @@ void set_personality_ia32(bool);
|
|
|
|
|
|
#define ELF_CORE_COPY_REGS(pr_reg, regs) \
|
|
|
do { \
|
|
|
+ unsigned long base; \
|
|
|
unsigned v; \
|
|
|
(pr_reg)[0] = (regs)->r15; \
|
|
|
(pr_reg)[1] = (regs)->r14; \
|
|
@@ -226,8 +227,8 @@ do { \
|
|
|
(pr_reg)[18] = (regs)->flags; \
|
|
|
(pr_reg)[19] = (regs)->sp; \
|
|
|
(pr_reg)[20] = (regs)->ss; \
|
|
|
- (pr_reg)[21] = current->thread.fsbase; \
|
|
|
- (pr_reg)[22] = current->thread.gsbase; \
|
|
|
+ rdmsrl(MSR_FS_BASE, base); (pr_reg)[21] = base; \
|
|
|
+ rdmsrl(MSR_KERNEL_GS_BASE, base); (pr_reg)[22] = base; \
|
|
|
asm("movl %%ds,%0" : "=r" (v)); (pr_reg)[23] = v; \
|
|
|
asm("movl %%es,%0" : "=r" (v)); (pr_reg)[24] = v; \
|
|
|
asm("movl %%fs,%0" : "=r" (v)); (pr_reg)[25] = v; \
|