aboutsummaryrefslogtreecommitdiff
path: root/gdbserver/i387-fp.h
diff options
context:
space:
mode:
authorJohn Baldwin <jhb@FreeBSD.org>2023-08-28 14:18:19 -0700
committerJohn Baldwin <jhb@FreeBSD.org>2023-08-28 14:18:19 -0700
commit03e6fe7e0a6fc4adccf59681962490a10fb31f7c (patch)
tree264e4e5f5946d0836d8f27f4e31c9ff54806a29c /gdbserver/i387-fp.h
parent8938f5311757ebd7dc88edb860d568d26756ac3b (diff)
downloadfsf-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.h4
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 */