//===-- AArch64.h -----------------------------------------------*- C++ -*-===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef LLDB_SOURCE_PLUGINS_ABI_AARCH64_ABIAARCH64_H
#define LLDB_SOURCE_PLUGINS_ABI_AARCH64_ABIAARCH64_H

#include "lldb/Target/ABI.h"

class ABIAArch64: public lldb_private::MCBasedABI {
public:
  static void Initialize();
  static void Terminate();

  virtual lldb::addr_t FixCodeAddress(lldb::addr_t pc) override;
  virtual lldb::addr_t FixDataAddress(lldb::addr_t pc) override;

protected:
  virtual lldb::addr_t FixAddress(lldb::addr_t pc, lldb::addr_t mask) {
    return pc;
  }

  std::pair<uint32_t, uint32_t>
  GetEHAndDWARFNums(llvm::StringRef name) override;

  std::string GetMCName(std::string reg) override;

  uint32_t GetGenericNum(llvm::StringRef name) override;

  using lldb_private::MCBasedABI::MCBasedABI;
};
#endif
