X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=gdb%2Farch%2Faarch64.h;h=95edb664b5517e2f34c255733e797e4d8f1db35f;hb=eb79b2318066cafb75ffdce310e3bbd44f7c79e3;hp=4fe6d02f6e23d47ec9595c170c6fe3450352051b;hpb=6dc0ebde59dfb73eae507ced718bafa54023bf33;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/arch/aarch64.h b/gdb/arch/aarch64.h index 4fe6d02f6e..95edb664b5 100644 --- a/gdb/arch/aarch64.h +++ b/gdb/arch/aarch64.h @@ -1,6 +1,6 @@ /* Common target-dependent functionality for AArch64. - Copyright (C) 2017-2019 Free Software Foundation, Inc. + Copyright (C) 2017-2021 Free Software Foundation, Inc. This file is part of GDB. @@ -20,14 +20,26 @@ #ifndef ARCH_AARCH64_H #define ARCH_AARCH64_H -#include "common/tdesc.h" +#include "gdbsupport/tdesc.h" + +/* Holds information on what architectural features are available. This is + used to select register sets. */ +struct aarch64_features +{ + bool sve = false; + bool pauth = false; + bool mte = false; +}; /* Create the aarch64 target description. A non zero VQ value indicates both the presence of SVE and the Vector Quotient - the number of 128bit chunks in an SVE Z register. HAS_PAUTH_P indicates the presence of the PAUTH - feature. */ + feature. -target_desc *aarch64_create_target_description (uint64_t vq, bool has_pauth_p); + MTE_P indicates the presence of the Memory Tagging Extension feature. */ + +target_desc *aarch64_create_target_description (uint64_t vq, bool has_pauth_p, + bool mte_p); /* Register numbers of various important registers. Note that on SVE, the Z registers reuse the V register numbers and the V @@ -58,6 +70,8 @@ enum aarch64_regnum AARCH64_LAST_V_ARG_REGNUM = AARCH64_V0_REGNUM + 7 }; +#define V_REGISTER_SIZE 16 + /* Pseudo register base numbers. */ #define AARCH64_Q0_REGNUM 0 #define AARCH64_D0_REGNUM (AARCH64_Q0_REGNUM + AARCH64_D_REGISTER_COUNT) @@ -66,6 +80,10 @@ enum aarch64_regnum #define AARCH64_B0_REGNUM (AARCH64_H0_REGNUM + 32) #define AARCH64_SVE_V0_REGNUM (AARCH64_B0_REGNUM + 32) +#define AARCH64_PAUTH_DMASK_REGNUM(pauth_reg_base) (pauth_reg_base) +#define AARCH64_PAUTH_CMASK_REGNUM(pauth_reg_base) (pauth_reg_base + 1) +#define AARCH64_PAUTH_REGS_SIZE (16) + #define AARCH64_X_REGS_NUM 31 #define AARCH64_V_REGS_NUM 32 #define AARCH64_SVE_Z_REGS_NUM AARCH64_V_REGS_NUM