|
@@ -10,6 +10,7 @@
|
|
|
#include <asm/ptrace.h>
|
|
|
#include <asm/user.h>
|
|
|
#include <asm/auxvec.h>
|
|
|
+#include <asm/fsgsbase.h>
|
|
|
|
|
|
typedef unsigned long elf_greg_t;
|
|
|
|
|
@@ -205,7 +206,6 @@ 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; \
|
|
@@ -228,8 +228,8 @@ do { \
|
|
|
(pr_reg)[18] = (regs)->flags; \
|
|
|
(pr_reg)[19] = (regs)->sp; \
|
|
|
(pr_reg)[20] = (regs)->ss; \
|
|
|
- rdmsrl(MSR_FS_BASE, base); (pr_reg)[21] = base; \
|
|
|
- rdmsrl(MSR_KERNEL_GS_BASE, base); (pr_reg)[22] = base; \
|
|
|
+ (pr_reg)[21] = x86_fsbase_read_cpu(); \
|
|
|
+ (pr_reg)[22] = x86_gsbase_read_cpu_inactive(); \
|
|
|
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; \
|