diff options
author | John Baldwin <jhb@FreeBSD.org> | 2023-08-28 14:18:19 -0700 |
---|---|---|
committer | John Baldwin <jhb@FreeBSD.org> | 2023-08-28 14:18:19 -0700 |
commit | 03e6fe7e0a6fc4adccf59681962490a10fb31f7c (patch) | |
tree | 264e4e5f5946d0836d8f27f4e31c9ff54806a29c /gdbserver/i387-fp.h | |
parent | 8938f5311757ebd7dc88edb860d568d26756ac3b (diff) | |
download | fsf-binutils-gdb-03e6fe7e0a6fc4adccf59681962490a10fb31f7c.zip fsf-binutils-gdb-03e6fe7e0a6fc4adccf59681962490a10fb31f7c.tar.gz fsf-binutils-gdb-03e6fe7e0a6fc4adccf59681962490a10fb31f7c.tar.bz2 |
gdbserver: Add a function to set the XSAVE mask and size.
Make x86_xcr0 private to i387-fp.cc and use i387_set_xsave_mask to set
the value instead. Add a static global instance of x86_xsave_layout
and initialize it in the new function as well to be used in a future
commit to parse XSAVE extended state regions.
Update the Linux port to use this function rather than setting
x86_xcr0 directly. In the case that XML is not supported, don't
bother setting x86_xcr0 to the default value but just omit the call to
i387_set_xsave_mask as i387-fp.cc defaults to the SSE case used for
non-XML.
In addition, use x86_xsave_length to determine the size of the XSAVE
register set via CPUID.
Approved-By: Simon Marchi <simon.marchi@efficios.com>
Diffstat (limited to 'gdbserver/i387-fp.h')
-rw-r--r-- | gdbserver/i387-fp.h | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/gdbserver/i387-fp.h b/gdbserver/i387-fp.h index f536a2b..09b6a91 100644 --- a/gdbserver/i387-fp.h +++ b/gdbserver/i387-fp.h @@ -28,6 +28,8 @@ void i387_fxsave_to_cache (struct regcache *regcache, const void *buf); void i387_cache_to_xsave (struct regcache *regcache, void *buf); void i387_xsave_to_cache (struct regcache *regcache, const void *buf); -extern unsigned long long x86_xcr0; +/* Set the XSAVE mask and fetch the XSAVE layout via CPUID. */ + +void i387_set_xsave_mask (uint64_t xcr0, int len); #endif /* GDBSERVER_I387_FP_H */ |