From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 18191 invoked by alias); 31 May 2018 12:22:27 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Received: (qmail 18171 invoked by uid 89); 31 May 2018 12:22:26 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-26.9 required=5.0 tests=BAYES_00,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,SPF_PASS autolearn=ham version=3.3.2 spammy= X-HELO: sessmg23.ericsson.net Received: from sessmg23.ericsson.net (HELO sessmg23.ericsson.net) (193.180.251.45) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Thu, 31 May 2018 12:22:24 +0000 Received: from ESESSHC008.ericsson.se (Unknown_Domain [153.88.183.42]) by sessmg23.ericsson.net (Symantec Mail Security) with SMTP id 8A.4B.10459.DF8EF0B5; Thu, 31 May 2018 14:22:21 +0200 (CEST) Received: from ESESSMB501.ericsson.se (153.88.183.162) by ESESSHC008.ericsson.se (153.88.183.42) with Microsoft SMTP Server (TLS) id 14.3.382.0; Thu, 31 May 2018 14:21:52 +0200 Received: from ESESSMB504.ericsson.se (153.88.183.165) by ESESSMB501.ericsson.se (153.88.183.162) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1466.3; Thu, 31 May 2018 14:21:51 +0200 Received: from NAM03-DM3-obe.outbound.protection.outlook.com (153.88.183.157) by ESESSMB504.ericsson.se (153.88.183.165) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1466.3 via Frontend Transport; Thu, 31 May 2018 14:21:51 +0200 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=simon.marchi@ericsson.com; Received: from [10.0.0.110] (192.222.164.54) by BN7PR15MB2385.namprd15.prod.outlook.com (2603:10b6:406:8c::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.820.11; Thu, 31 May 2018 12:21:48 +0000 Subject: Re: [PATCH 6/8] Aarch64 SVE pseudo register support To: Alan Hayward , CC: References: <20180511105256.27388-1-alan.hayward@arm.com> <20180511105256.27388-7-alan.hayward@arm.com> From: Simon Marchi Message-ID: Date: Thu, 31 May 2018 13:26:00 -0000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.8.0 MIME-Version: 1.0 In-Reply-To: <20180511105256.27388-7-alan.hayward@arm.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit X-ClientProxiedBy: YQBPR0101CA0002.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:c00::15) To BN7PR15MB2385.namprd15.prod.outlook.com (2603:10b6:406:8c::23) X-MS-PublicTrafficType: Email X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(7020095)(4652020)(5600026)(4534165)(4627221)(201703031133081)(201702281549075)(2017052603328)(7153060)(7193020);SRVR:BN7PR15MB2385; X-Microsoft-Exchange-Diagnostics: 1;BN7PR15MB2385;3:8NvjLl3K7ORW9fBuvcI/BLgGmWaoIgjzUK4TeMWhsxN4iL3XZlW2gJ9YepZ16G+aQnVnSx+wedKqHko5KqI2tkb/bekym/zGvlzCAphF8z/2vZjaZyDtJ/8n3KK1bXghinV7LMcmLxjAii8Lk3X6XL5aQj8wnXI5YgOaWFuDhKgsdm2MBXTZpkPfS1VoBuyehy9TDylb3aiwTZUK/Qi6hU2BWUb9S2LUbuhpTUKcNlLCYBelGCCzeSSVuByFQc4V;25:ScacD89XN2SUl021nt8hNHJ+eMLuXWMY8VyHH7aA0Ql6VPft7Mt8zYq2TWkG+cjjYK53pCniUiaXQf33A5lVPaNp5iMX7CvYP8TJ/6FhCBn++nLzkzgGT2eAYfplZyv9D44LOHCNr8iV4h6hck9RDrrTYeiJclNc631bGrvndJ31eFkdOaFvNVZXrlXQjGRUIr//WMoUOZR5r6OiJ1xx+DLtBj/lyDIGma1XH82b+1oJ29EUTseZwwHXrOwd6rjSkvtV4Tl7R2Xn6M4l84doOrE8yv2+fGi6PVBUBUM4O3BzxRzWgwmsFdHFhUqvK0Jn5ypzimmMH5DpLcqONmlKLw==;31:4EnVB41odzHJTHLMTm/4rcXFzuh8f/2q//jR8jggIiebGnutBAEXTzbAFV9hYZBj7VMI7O5pAx9ghZDmyfAE+4CHOssQVqn7pwapsfVNgcd/IPVa2iFlWyrSPo/o8I9BH0ic8igYaluT1cU/ol0x64IyO4dxCkzHNt+5RbVebVs7ZVI3zCBw7wmg6S2HjGMiziofY+yFCI/ZPmp6teVlQ07CEPZJ51G0heptfgHea4s= X-MS-TrafficTypeDiagnostic: BN7PR15MB2385: X-Microsoft-Exchange-Diagnostics: 1;BN7PR15MB2385;20:b3xO48k3JYmMiJBEVupsTuQxVrQ8xVGCMJxrcpf441zYMT19mOMndmWDJk5uMWyiChboxzY4dPbwI3zeTXdCfyamqk4YvtlZ65R0SZHgiP15Y2n52JwKdc4nDNwOCzvEceCTXPM+W9l/2vw2aStlHolCujnCI9vjv0bUd52b6dlD00DwunxG6rjxcwbD32Yb+31DkjQCANH87l0bX9uLv0q9bFOWreawpyEPvENVFenKhi24aRAoxYxgpOVN3iTk+uwcO6bYPNzMFRhkf5BVK84gAY9e9pi9hJU829UFCioW2Z8ToDLV4N08X8kVfzv20HpJDx6JN8ilxzcX7DaFXb0cZHoOHDqlr2rAI6YnklYcODAvyKgv6uIm3s2p72rI7Hh6Hn9hAaa9jorPw7dWmDTx3yFSyDPiAleRvveNmRBAT3Pg6pzGAoskYJ4SNBd+LceQfqiJG/6/BaOolzvi0uLA/l/gtLiS2B1kdDeOruP4khYdnGZRvUaVJ68lJkPY;4:5CIUvxjSFgOZLmE+hHwgRKsf394a7I/IitVfRIPtIYd76ELNnRUbtZmqRnXJYPmlkCZPHkIjof0HfFMO8M41Z0uf1Sy+hoVK0V6XZpS2H37lhbD8j6sFNZ+KNzgnfJzpbCBheEeZ99Cnk1vGOCUSxmNy5+p950p1btnT6dWC/HVQrmk6fQxUeC2U3VoTZYb6Fafx5kIDxL6BG0q75dyKrFzcasiOIb2F2utg2ilDTXXG2OOYQh0QwEup7g0yZae6jh0//D4kIa6gy+k6irTb4BvW6gJ18vcp0lZyOidDOSYk4Fgz/lrvi1T0XaxnWInx X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(180628864354917); X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(10201501046)(3002001)(3231254)(944501410)(52105095)(93006095)(93001095)(149027)(150027)(6041310)(20161123564045)(20161123558120)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123562045)(20161123560045)(6072148)(201708071742011)(7699016);SRVR:BN7PR15MB2385;BCL:0;PCL:0;RULEID:;SRVR:BN7PR15MB2385; X-Forefront-PRVS: 06891E23FB X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(6049001)(39860400002)(346002)(366004)(376002)(39380400002)(396003)(189003)(199004)(23676004)(31696002)(86362001)(53936002)(2616005)(956004)(476003)(478600001)(6486002)(229853002)(5660300001)(106356001)(8676002)(65826007)(81166006)(105586002)(81156014)(486006)(44832011)(6666003)(31686004)(305945005)(7736002)(8936002)(36756003)(4326008)(316002)(186003)(25786009)(16526019)(65806001)(65956001)(53546011)(26005)(2906002)(47776003)(68736007)(16576012)(6246003)(58126008)(11346002)(77096007)(66066001)(64126003)(6116002)(3846002)(230700001)(50466002)(386003)(76176011)(97736004)(446003)(52116002)(52146003)(2486003);DIR:OUT;SFP:1101;SCL:1;SRVR:BN7PR15MB2385;H:[10.0.0.110];FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;MX:1;A:1; Received-SPF: None (protection.outlook.com: ericsson.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtCTjdQUjE1TUIyMzg1OzIzOlAva29GcVFCbmo1ajRRcGJMZEF0S3FJZUVh?= =?utf-8?B?VGpSWnlJUC9teTdHQURYQW8zR3FjYmxSMkdabUFXTVlhTThHRk1wSkg3THUv?= =?utf-8?B?Ym93aHBPdnhWVGNDSnZMVmYycG5Ta1pncXlWUmE3QTdVQ3puR2JVWjQ4QTAv?= =?utf-8?B?RVVmOFFVTTZpb1ZjOXB5ZU93anRUUlhKMnlWa1ZXbHJDNElNOFZlaGx3SkJm?= =?utf-8?B?UkFWVytnNGw2SlFQanJueThJZ0VsYVZlNkwvSy9WazIveGFEWUNHeTViMGdn?= =?utf-8?B?YWZXaDBKbVBEUGJXQ2hKVkJCbXI2RVRMYU0zQnFzTWRFL3BsZ2ZNeXlpYW51?= =?utf-8?B?aExZeVg4V3YzVVFUUW44Tmhla0YxY3lmWi82dG5vK3dhMWN4QzVQcm1FZVRG?= =?utf-8?B?T2lUUnRFL3Zic1VWTFdkREpCb1NkK3RuaTdTc3QzRnp1NHZ0YmRCUTFzcXd2?= =?utf-8?B?VkpMSm5jVTBEREdKZ3RnRnVGdzIzcFovaHFtSFZpZUpQVUlVaXdyamVkQkNU?= =?utf-8?B?Mk0rSWp0L25XNlZWcjEwd3BLZEVSOEtCMkNHd3ZsT2lmSjRDV2xmYXpuVjA2?= =?utf-8?B?d1dzYVRVYVJLUWtsUktTVGV1QnhNK2xQcFFlaWpLVzBTd2FYTDlCNXk3QW95?= =?utf-8?B?WlJPbWFCY1I3Q3Y2REZMN3ZhYm5yRUsySW9ndWVMOEl2eXFlZnRHc1ZVU2l0?= =?utf-8?B?b2xEdS9xS1NTYUdraWx5T29rN3FuN25WTUNKTWJLR3dHTXV0SWM1TGFncXVj?= =?utf-8?B?YSt3ajhwUXlZTkQrZjZZMWhXVmNtU3dQNEN2NzdTMmlobzlpR0wzbjdmSGh5?= =?utf-8?B?a3NXQ2c0MHA0djRhZ0Z2czhjTVZmSlhpWkY0SEZwL3JHSk9YbVVKYjIzNDVm?= =?utf-8?B?Rm5nQXkrRnRTMWlSWnEzSzUzMzZOU1RTdUdsK2FpaGVzbDB4S0ZJSmV6VmtJ?= =?utf-8?B?Z052OG9DZG9Bd3B2M2gwamFkbU5mVHpDTzltYjBMME03WmRYOGxVaStXWG4z?= =?utf-8?B?MU1Nc0tGUGc2MTVZM1lnL01TZnpkN21EeGlmVlppeUhIajNFNUVreElxazFp?= =?utf-8?B?bUxsWlpwcmRXY2dlL2xnZ3hUK2dmMHE1UlRkM0NQTmd4YWN4TUhHZldlQTJ1?= =?utf-8?B?K0thdFJJSGk1Sk9wS21ubzd3OGZ1VkV2OVJianl6ZHF6M2lPd2locGRsa08y?= =?utf-8?B?UFBKTzZqVVJ2aXlpUXFONVR6c1hhaGNiWnArUjF0QXk4bHpNRVVQL0tHaGR5?= =?utf-8?B?VHZ3YUkyZXdnZGFWQ015UnJMTHptMDQ2bXRsVzZsUkd2QWlGNTJpMWtoWlFv?= =?utf-8?B?aGgvOVIrV2NBK0g4c3dyRjhJNy85NnBjMGh6aWRyazkwc3RGcmxqTzVvQm5s?= =?utf-8?B?Y09sQmhhYTE1U1RzS2pWVmJQalZOZWtrL3d0TG9QcTFpU1YzYXIrUDNVd3k5?= =?utf-8?B?QXpxUEdhb0NockJDYVNDTlF1eUh2TnJ6ZzFIQlRlQ0YvTUZ2dkRxbzFCNXpP?= =?utf-8?B?Ym1VWEVhb29uV242bmF6NDkzWVNCSzl0SW5KemR5UmVvQitlS3RVeXBqYXBH?= =?utf-8?B?Wmh1SE9HZkxhRVFxZEs0KzRwbjhYcXJLN0hpM0dvS0xSTThVaExoQVFMZk9T?= =?utf-8?B?TU5iUkF1RXVHMGJMRW9jT0VRNU9YY0JFUXYwZjBBNk1Gc2xRdUhhTzhNSmVo?= =?utf-8?B?OTJzWmFjVlhYZzN4NVo0djZIVEMwQUhYTzRreTdxMU1KR0cvZUZUbG53ZURV?= =?utf-8?B?ZUp5YUJURE1xdHRZZlpnNm9DbkxzaXhwT1dXQVhRK2RDaFU0dkNtYnJhQVNH?= =?utf-8?B?cW52S3hDNGhSQkhTeWNRaXVNZldrQ0ltanhEWnFZc04yenprczV3ZVVsTFBv?= =?utf-8?B?RUQwWE9vdnB6MFJuUWdqV1VrTEdJWE5qZ0hrc3hCbnNmcWE4RElpVGkwUW1P?= =?utf-8?B?emU2RFFLbUdBPT0=?= X-Microsoft-Antispam-Message-Info: kMXFJ9wu4zqyXMg1s5/QmwFlpzws+LmRmpMlS+eovljet42CXCjhU5ywh61vRcogBtHqlakU0m6YRPWsIIATKCT6YGvD42B0g/EjWSNy8UVKdTdZVbeyaSgZoFvB0CTEZpobaXH9WZNO94fm0wWJQoZm+lUe1BM3g/LzjkxQH5QEISOUYbFcjqVOi1cGZqa2 X-Microsoft-Exchange-Diagnostics: 1;BN7PR15MB2385;6:LBEpBZNeEngF2cYhvJDpvTnzhKlq9L2A2IuDSphzbBEYGYag39JbP1mDF5z2Xz2SO6wRRC2Q/Ya7GmaOSzPdYJpg8YiKjlTg4tPYmL/fzFXfOnhNdBYlqtN2lgczHWZG6cDQ1f4KJD3RXiREcXHSQ+jPUjSF06bkRsYkVDqmzQSD4RgKhXjjp7HzOqVF3sNbfO+qj8cYPOu7pcG9S70DHIISgj4Q+f5fM9jshfd/F8xvH62svGa4e3T86InvQNl4JiwKcM8ENBVDwCngyQCdjLazwzMNhbrUbJpbyUb5osjXjqYJ4S0AXjdyI/DK+8co7ix1+6c2jypzxkGIV8kmeQQiAwDppcORhBpahtwcJQiRg/UA33FNCR3E15W3Pt42VJe8f60i+eRCoTuemQDFUKzjPpouMyakeIg8qK+9AheV2HCpRM3uCbtUKgaD6I4gspg9QgVkVv1s03t11J1nxg==;5:jC3EMR2JceuMjeFP0+YI7Ar3KT/uriIhvWGLytjcUFDX2auUNGMhQqjjVIlfqxFhG4QZ7SoD3kiMSb7TC9C5+8/NOfaWvTec8lP1peuLgWgh4OuzxiMHenVkZB7erSagObMx6hGXwz6r+J2SN/iy6Qfs9aEB+r2sVPvppi3Tjac=;24:2xgJBWfUsxfMeabZBdDrFsvZ+8UGOocBfmU72cT7rEJ4hQggwk20r0b3s0FiKrQtjcf6P3r5BENFHkkSGw/nEDyXWfFgBnSiE1V6lZb31/U= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;BN7PR15MB2385;7:37V0iBuWoB5yz09Ck+LaLtpOEiXXgyQ33kxjF0IacuYI/Wiht0ksFOWTQiUq89ExSWfHBeYp2Yp31QaN7y13pnQ7jxtbuL6EmlA79Wdf+CVyWLqwxY3oA9ZdxfdklyUr4wKNcSWgdewPG3uE9uxaI/HWCsyEyHDFWWDtFU0yXsDSwQ2shlVe+l2uom2RtUrQTWMyZDrzYESHyZQLM8ovx4i8RTRqlP6FD6NP66xvKJj6g+GN09lKZ//z1Z8W01J5 X-MS-Office365-Filtering-Correlation-Id: 1b862d6e-306d-4e1e-27dd-08d5c6f11573 X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 May 2018 12:21:48.8216 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 1b862d6e-306d-4e1e-27dd-08d5c6f11573 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 92e84ceb-fbfd-47ab-be52-080c6b87953f X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN7PR15MB2385 X-OriginatorOrg: ericsson.com X-IsSubscribed: yes X-SW-Source: 2018-05/txt/msg00845.txt.bz2 On 2018-05-11 06:52 AM, Alan Hayward wrote: > Add the functionality for reading/writing psuedo registers. "pseudo" > > On SVE the V registers are pseudo registers. This is supported > by adding AARCH64_SVE_V0_REGNUM. > > 2018-05-11 Alan Hayward > > * aarch64-tdep.c (AARCH64_SVE_V0_REGNUM): Add define. > (aarch64_vnv_type): Add function. > (aarch64_pseudo_register_name): Add V regs for SVE. > (aarch64_pseudo_register_type): Likewise. > (aarch64_pseudo_register_reggroup_p): Likewise. > (aarch64_pseudo_read_value_2): Use V0 offset for SVE > (aarch64_pseudo_read_value): Add V regs for SVE. > (aarch64_pseudo_write_2): Use V0 offset for SVE > (aarch64_pseudo_write): Add V regs for SVE. > * aarch64-tdep.h (struct gdbarch_tdep): Add vnv_type. > --- > gdb/aarch64-tdep.c | 151 +++++++++++++++++++++++++++++++++++++++++++++-------- > gdb/aarch64-tdep.h | 1 + > 2 files changed, 130 insertions(+), 22 deletions(-) > > diff --git a/gdb/aarch64-tdep.c b/gdb/aarch64-tdep.c > index 003fefb3c9..6a40a081cb 100644 > --- a/gdb/aarch64-tdep.c > +++ b/gdb/aarch64-tdep.c > @@ -69,6 +69,7 @@ > #define AARCH64_S0_REGNUM (AARCH64_D0_REGNUM + 32) > #define AARCH64_H0_REGNUM (AARCH64_S0_REGNUM + 32) > #define AARCH64_B0_REGNUM (AARCH64_H0_REGNUM + 32) > +#define AARCH64_SVE_V0_REGNUM (AARCH64_B0_REGNUM + 32) > > /* All possible aarch64 target descriptors. */ > struct target_desc *tdesc_aarch64_list[AARCH64_MAX_SVE_VQ + 1]; > @@ -1766,6 +1767,33 @@ aarch64_vnb_type (struct gdbarch *gdbarch) > return tdep->vnb_type; > } > > +/* Return the type for an AdvSISD V register. */ > + > +static struct type * > +aarch64_vnv_type (struct gdbarch *gdbarch) > +{ > + struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); > + > + if (tdep->vnv_type == NULL) > + { > + struct type *t; > + struct type *elem; > + > + t = arch_composite_type (gdbarch, "__gdb_builtin_type_vnv", > + TYPE_CODE_UNION); > + > + append_composite_type_field (t, "d", aarch64_vnd_type (gdbarch)); > + append_composite_type_field (t, "s", aarch64_vns_type (gdbarch)); > + append_composite_type_field (t, "h", aarch64_vnh_type (gdbarch)); > + append_composite_type_field (t, "b", aarch64_vnb_type (gdbarch)); > + append_composite_type_field (t, "q", aarch64_vnq_type (gdbarch)); > + > + tdep->vnv_type = t; > + } > + > + return tdep->vnv_type; > +} > + > /* Implement the "dwarf2_reg_to_regnum" gdbarch method. */ > > static int > @@ -2114,6 +2142,8 @@ aarch64_gen_return_address (struct gdbarch *gdbarch, > static const char * > aarch64_pseudo_register_name (struct gdbarch *gdbarch, int regnum) > { > + struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); > + > static const char *const q_name[] = > { > "q0", "q1", "q2", "q3", > @@ -2191,6 +2221,25 @@ aarch64_pseudo_register_name (struct gdbarch *gdbarch, int regnum) > if (regnum >= AARCH64_B0_REGNUM && regnum < AARCH64_B0_REGNUM + 32) > return b_name[regnum - AARCH64_B0_REGNUM]; > > + if (tdep->has_sve ()) > + { > + static const char *const sve_v_name[] = > + { > + "v0", "v1", "v2", "v3", > + "v4", "v5", "v6", "v7", > + "v8", "v9", "v10", "v11", > + "v12", "v13", "v14", "v15", > + "v16", "v17", "v18", "v19", > + "v20", "v21", "v22", "v23", > + "v24", "v25", "v26", "v27", > + "v28", "v29", "v30", "v31", > + }; > + > + if (regnum >= AARCH64_SVE_V0_REGNUM > + && regnum < AARCH64_SVE_V0_REGNUM + AARCH64_V_REGS_NUM) > + return sve_v_name[regnum - AARCH64_SVE_V0_REGNUM]; > + } > + > internal_error (__FILE__, __LINE__, > _("aarch64_pseudo_register_name: bad register number %d"), > regnum); > @@ -2201,6 +2250,8 @@ aarch64_pseudo_register_name (struct gdbarch *gdbarch, int regnum) > static struct type * > aarch64_pseudo_register_type (struct gdbarch *gdbarch, int regnum) > { > + struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); > + > regnum -= gdbarch_num_regs (gdbarch); > > if (regnum >= AARCH64_Q0_REGNUM && regnum < AARCH64_Q0_REGNUM + 32) > @@ -2218,6 +2269,10 @@ aarch64_pseudo_register_type (struct gdbarch *gdbarch, int regnum) > if (regnum >= AARCH64_B0_REGNUM && regnum < AARCH64_B0_REGNUM + 32) > return aarch64_vnb_type (gdbarch); > > + if (tdep->has_sve () && regnum >= AARCH64_SVE_V0_REGNUM > + && regnum < AARCH64_SVE_V0_REGNUM + 32) > + return aarch64_vnv_type (gdbarch); > + > internal_error (__FILE__, __LINE__, > _("aarch64_pseudo_register_type: bad register number %d"), > regnum); > @@ -2229,6 +2284,8 @@ static int > aarch64_pseudo_register_reggroup_p (struct gdbarch *gdbarch, int regnum, > struct reggroup *group) > { > + struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); > + > regnum -= gdbarch_num_regs (gdbarch); > > if (regnum >= AARCH64_Q0_REGNUM && regnum < AARCH64_Q0_REGNUM + 32) > @@ -2243,6 +2300,9 @@ aarch64_pseudo_register_reggroup_p (struct gdbarch *gdbarch, int regnum, > return group == all_reggroup || group == vector_reggroup; > else if (regnum >= AARCH64_B0_REGNUM && regnum < AARCH64_B0_REGNUM + 32) > return group == all_reggroup || group == vector_reggroup; > + else if (tdep->has_sve () && regnum >= AARCH64_SVE_V0_REGNUM > + && regnum < AARCH64_SVE_V0_REGNUM + 32) > + return group == all_reggroup || group == vector_reggroup; > > return group == all_reggroup; > } > @@ -2250,17 +2310,30 @@ aarch64_pseudo_register_reggroup_p (struct gdbarch *gdbarch, int regnum, > /* Inner version of aarch64_pseudo_read_value. */ > > static struct value * > -aarch64_pseudo_read_value_2 (readable_regcache *regcache, int regnum_offset, > +aarch64_pseudo_read_value_2 (struct gdbarch *gdbarch, > + readable_regcache *regcache, int regnum_offset, > int regsize, struct value *result_value) > { > - gdb_byte reg_buf[V_REGISTER_SIZE]; > + struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); > + gdb_byte v_buf[V_REGISTER_SIZE], *reg_buf; > + gdb_assert (AARCH64_V0_REGNUM == AARCH64_SVE_Z0_REGNUM); > unsigned v_regnum = AARCH64_V0_REGNUM + regnum_offset; > > + /* Enough space to read a full vector register. */ > + if (tdep->has_sve ()) > + reg_buf = (gdb_byte *) xmalloc (register_size (gdbarch, AARCH64_V0_REGNUM)); > + else > + reg_buf = v_buf; If the size of a register (even with SVE) will always be reasonable to allocate on the stack, maybe you could just use gdb_byte reg_buf[register_size (gdbarch, AARCH64_V0_REGNUM)]; (If there is always a register with number AARCH64_V0_REGNUM, that is) Otherwise, it would be good to use an std::unique_ptr/gdb::unique_xmalloc_ptr to avoid the manual xfree. Same in aarch64_pseudo_write_2. Simon