diff options
author | Suresh Siddha <suresh.b.siddha@intel.com> | 2010-02-11 11:50:59 -0800 |
---|---|---|
committer | H. Peter Anvin <hpa@zytor.com> | 2010-02-11 15:08:17 -0800 |
commit | 5b3efd500854d45d305b53c54c97db5970959980 (patch) | |
tree | 731629e22791d14b9661cada9c0c69eb38776c3b /include | |
parent | 676ad585531e965416fd958747894541dabcec96 (diff) | |
download | op-kernel-dev-5b3efd500854d45d305b53c54c97db5970959980.zip op-kernel-dev-5b3efd500854d45d305b53c54c97db5970959980.tar.gz |
x86, ptrace: regset extensions to support xstate
Add the xstate regset support which helps extend the kernel ptrace and the
core-dump interfaces to support AVX state etc.
This regset interface is designed to support all the future state that gets
supported using xsave/xrstor infrastructure.
Looking at the memory layout saved by "xsave", one can't say which state
is represented in the memory layout. This is because if a particular state is
in init state, in the xsave hdr it can be represented by bit '0'. And hence
we can't really say by the xsave header wether a state is in init state or
the state is not saved in the memory layout.
And hence the xsave memory layout available through this regset
interface uses SW usable bytes [464..511] to convey what state is represented
in the memory layout.
First 8 bytes of the sw_usable_bytes[464..467] will be set to OS enabled xstate
mask(which is same as the 64bit mask returned by the xgetbv's xCR0).
The note NT_X86_XSTATE represents the extended state information in the
core file, using the above mentioned memory layout.
Signed-off-by: Suresh Siddha <suresh.b.siddha@intel.com>
LKML-Reference: <20100211195614.802495327@sbs-t61.sc.intel.com>
Signed-off-by: Hongjiu Lu <hjl.tools@gmail.com>
Cc: Roland McGrath <roland@redhat.com>
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
Diffstat (limited to 'include')
-rw-r--r-- | include/linux/elf.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/include/linux/elf.h b/include/linux/elf.h index 0cc4d55..a8c4af0 100644 --- a/include/linux/elf.h +++ b/include/linux/elf.h @@ -361,6 +361,7 @@ typedef struct elf64_shdr { #define NT_PPC_VSX 0x102 /* PowerPC VSX registers */ #define NT_386_TLS 0x200 /* i386 TLS slots (struct user_desc) */ #define NT_386_IOPERM 0x201 /* x86 io permission bitmap (1=deny) */ +#define NT_X86_XSTATE 0x202 /* x86 extended state using xsave */ #define NT_S390_HIGH_GPRS 0x300 /* s390 upper register halves */ |