xref: /freebsd-src/contrib/llvm-project/lldb/source/Plugins/ABI/AArch64/ABIAArch64.h (revision 81ad626541db97eb356e2c1d4a20eb2a26a766ab)
15ffd83dbSDimitry Andric //===-- AArch64.h -----------------------------------------------*- C++ -*-===//
25ffd83dbSDimitry Andric //
35ffd83dbSDimitry Andric // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
45ffd83dbSDimitry Andric // See https://llvm.org/LICENSE.txt for license information.
55ffd83dbSDimitry Andric // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
65ffd83dbSDimitry Andric //
75ffd83dbSDimitry Andric //===----------------------------------------------------------------------===//
85ffd83dbSDimitry Andric 
95ffd83dbSDimitry Andric #ifndef LLDB_SOURCE_PLUGINS_ABI_AARCH64_ABIAARCH64_H
105ffd83dbSDimitry Andric #define LLDB_SOURCE_PLUGINS_ABI_AARCH64_ABIAARCH64_H
115ffd83dbSDimitry Andric 
125ffd83dbSDimitry Andric #include "lldb/Target/ABI.h"
135ffd83dbSDimitry Andric 
145ffd83dbSDimitry Andric class ABIAArch64 : public lldb_private::MCBasedABI {
155ffd83dbSDimitry Andric public:
165ffd83dbSDimitry Andric   static void Initialize();
175ffd83dbSDimitry Andric   static void Terminate();
185ffd83dbSDimitry Andric 
19*81ad6265SDimitry Andric   lldb::addr_t FixCodeAddress(lldb::addr_t pc) override;
20*81ad6265SDimitry Andric   lldb::addr_t FixDataAddress(lldb::addr_t pc) override;
21fe6060f1SDimitry Andric 
225ffd83dbSDimitry Andric protected:
FixAddress(lldb::addr_t pc,lldb::addr_t mask)23fe6060f1SDimitry Andric   virtual lldb::addr_t FixAddress(lldb::addr_t pc, lldb::addr_t mask) {
24fe6060f1SDimitry Andric     return pc;
25fe6060f1SDimitry Andric   }
26fe6060f1SDimitry Andric 
275ffd83dbSDimitry Andric   std::pair<uint32_t, uint32_t>
285ffd83dbSDimitry Andric   GetEHAndDWARFNums(llvm::StringRef name) override;
295ffd83dbSDimitry Andric 
30e8d8bef9SDimitry Andric   std::string GetMCName(std::string reg) override;
315ffd83dbSDimitry Andric 
325ffd83dbSDimitry Andric   uint32_t GetGenericNum(llvm::StringRef name) override;
33349cc55cSDimitry Andric 
34349cc55cSDimitry Andric   void AugmentRegisterInfo(
35349cc55cSDimitry Andric       std::vector<lldb_private::DynamicRegisterInfo::Register> &regs) override;
365ffd83dbSDimitry Andric 
375ffd83dbSDimitry Andric   using lldb_private::MCBasedABI::MCBasedABI;
385ffd83dbSDimitry Andric };
395ffd83dbSDimitry Andric #endif
40