aboutsummaryrefslogtreecommitdiff
path: root/gdb/nat/aarch64-sve-linux-ptrace.h
diff options
context:
space:
mode:
authorAlan Hayward <alan.hayward@arm.com>2018-06-14 10:10:03 +0100
committerAlan Hayward <alan.hayward@arm.com>2018-06-18 10:02:56 +0100
commit17a1cc89b5706f0ad8142ab85d62bce33249e905 (patch)
tree7ca8fe7fe92ccaa4b2175085801b03338b74ee54 /gdb/nat/aarch64-sve-linux-ptrace.h
parent0fe3a558306ba4792c96e7258bd7209a206e2867 (diff)
downloadfsf-binutils-gdb-17a1cc89b5706f0ad8142ab85d62bce33249e905.zip
fsf-binutils-gdb-17a1cc89b5706f0ad8142ab85d62bce33249e905.tar.gz
fsf-binutils-gdb-17a1cc89b5706f0ad8142ab85d62bce33249e905.tar.bz2
Add Aarch64 SVE compatibility macros
This header provides compatibility support for SVE allow building even when the underlying host system lacks support for SVE. If the binary is then run on an SVE-enabled kernel then support will automatically be available. gdb/ * nat/aarch64-sve-linux-sigcontext.h: New file. * nat/aarch64-sve-linux-ptrace.h (SVE_VQ_BYTES): Move to new files. (SVE_VQ_MIN): Likewise. (SVE_VQ_MAX): Likewise. (SVE_VL_MIN): Likewise. (SVE_VL_MAX): Likewise. (SVE_NUM_ZREGS): Likewise. (SVE_NUM_PREGS): Likewise. (sve_vl_valid): Likewise. (struct user_sve_header): Likewise.
Diffstat (limited to 'gdb/nat/aarch64-sve-linux-ptrace.h')
-rw-r--r--gdb/nat/aarch64-sve-linux-ptrace.h44
1 files changed, 4 insertions, 40 deletions
diff --git a/gdb/nat/aarch64-sve-linux-ptrace.h b/gdb/nat/aarch64-sve-linux-ptrace.h
index 61f8414..7f5a81f 100644
--- a/gdb/nat/aarch64-sve-linux-ptrace.h
+++ b/gdb/nat/aarch64-sve-linux-ptrace.h
@@ -20,54 +20,18 @@
#ifndef AARCH64_SVE_LINUX_PTRACE_H
#define AARCH64_SVE_LINUX_PTRACE_H
-/* Where indicated, this file contains defines and macros lifted directly from
- the Linux kernel headers, with no modification.
- Refer to Linux kernel documentation for details. */
-
#include <asm/sigcontext.h>
#include <sys/utsname.h>
#include <sys/ptrace.h>
#include <asm/ptrace.h>
+#ifndef SVE_SIG_ZREGS_SIZE
+#include "aarch64-sve-linux-sigcontext.h"
+#endif
+
/* Read VQ for the given tid using ptrace. If SVE is not supported then zero
is returned (on a system that supports SVE, then VQ cannot be zero). */
uint64_t aarch64_sve_get_vq (int tid);
-/* Structures and defines taken from sigcontext.h. */
-
-#ifndef SVE_SIG_ZREGS_SIZE
-
-#define SVE_VQ_BYTES 16 /* number of bytes per quadword */
-
-#define SVE_VQ_MIN 1
-#define SVE_VQ_MAX 512
-
-#define SVE_VL_MIN (SVE_VQ_MIN * SVE_VQ_BYTES)
-#define SVE_VL_MAX (SVE_VQ_MAX * SVE_VQ_BYTES)
-
-#define SVE_NUM_ZREGS 32
-#define SVE_NUM_PREGS 16
-
-#define sve_vl_valid(vl) \
- ((vl) % SVE_VQ_BYTES == 0 && (vl) >= SVE_VL_MIN && (vl) <= SVE_VL_MAX)
-
-#endif /* SVE_SIG_ZREGS_SIZE. */
-
-
-/* Structures and defines taken from ptrace.h. */
-
-#ifndef SVE_PT_SVE_ZREG_SIZE
-
-struct user_sve_header {
- __u32 size; /* total meaningful regset content in bytes */
- __u32 max_size; /* maxmium possible size for this thread */
- __u16 vl; /* current vector length */
- __u16 max_vl; /* maximum possible vector length */
- __u16 flags;
- __u16 __reserved;
-};
-
-#endif /* SVE_PT_SVE_ZREG_SIZE. */
-
#endif /* aarch64-sve-linux-ptrace.h */