//===-- lldb-arm-register-enums.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_PROCESS_UTILITY_LLDB_ARM_REGISTER_ENUMS_H
#define LLDB_SOURCE_PLUGINS_PROCESS_UTILITY_LLDB_ARM_REGISTER_ENUMS_H

namespace lldb_private {
// LLDB register codes (e.g. RegisterKind == eRegisterKindLLDB)

// Internal codes for all ARM registers.
enum {
  k_first_gpr_arm = 0,
  gpr_r0_arm = k_first_gpr_arm,
  gpr_r1_arm,
  gpr_r2_arm,
  gpr_r3_arm,
  gpr_r4_arm,
  gpr_r5_arm,
  gpr_r6_arm,
  gpr_r7_arm,
  gpr_r8_arm,
  gpr_r9_arm,
  gpr_r10_arm,
  gpr_r11_arm,
  gpr_r12_arm,
  gpr_r13_arm,
  gpr_sp_arm = gpr_r13_arm,
  gpr_r14_arm,
  gpr_lr_arm = gpr_r14_arm,
  gpr_r15_arm,
  gpr_pc_arm = gpr_r15_arm,
  gpr_cpsr_arm,

  k_last_gpr_arm = gpr_cpsr_arm,

  k_first_fpr_arm,
  fpu_s0_arm = k_first_fpr_arm,
  fpu_s1_arm,
  fpu_s2_arm,
  fpu_s3_arm,
  fpu_s4_arm,
  fpu_s5_arm,
  fpu_s6_arm,
  fpu_s7_arm,
  fpu_s8_arm,
  fpu_s9_arm,
  fpu_s10_arm,
  fpu_s11_arm,
  fpu_s12_arm,
  fpu_s13_arm,
  fpu_s14_arm,
  fpu_s15_arm,
  fpu_s16_arm,
  fpu_s17_arm,
  fpu_s18_arm,
  fpu_s19_arm,
  fpu_s20_arm,
  fpu_s21_arm,
  fpu_s22_arm,
  fpu_s23_arm,
  fpu_s24_arm,
  fpu_s25_arm,
  fpu_s26_arm,
  fpu_s27_arm,
  fpu_s28_arm,
  fpu_s29_arm,
  fpu_s30_arm,
  fpu_s31_arm,
  fpu_fpscr_arm,
  fpu_d0_arm,
  fpu_d1_arm,
  fpu_d2_arm,
  fpu_d3_arm,
  fpu_d4_arm,
  fpu_d5_arm,
  fpu_d6_arm,
  fpu_d7_arm,
  fpu_d8_arm,
  fpu_d9_arm,
  fpu_d10_arm,
  fpu_d11_arm,
  fpu_d12_arm,
  fpu_d13_arm,
  fpu_d14_arm,
  fpu_d15_arm,
  fpu_d16_arm,
  fpu_d17_arm,
  fpu_d18_arm,
  fpu_d19_arm,
  fpu_d20_arm,
  fpu_d21_arm,
  fpu_d22_arm,
  fpu_d23_arm,
  fpu_d24_arm,
  fpu_d25_arm,
  fpu_d26_arm,
  fpu_d27_arm,
  fpu_d28_arm,
  fpu_d29_arm,
  fpu_d30_arm,
  fpu_d31_arm,
  fpu_q0_arm,
  fpu_q1_arm,
  fpu_q2_arm,
  fpu_q3_arm,
  fpu_q4_arm,
  fpu_q5_arm,
  fpu_q6_arm,
  fpu_q7_arm,
  fpu_q8_arm,
  fpu_q9_arm,
  fpu_q10_arm,
  fpu_q11_arm,
  fpu_q12_arm,
  fpu_q13_arm,
  fpu_q14_arm,
  fpu_q15_arm,
  k_last_fpr_arm = fpu_q15_arm,
  exc_exception_arm,
  exc_fsr_arm,
  exc_far_arm,

  dbg_bvr0_arm,
  dbg_bvr1_arm,
  dbg_bvr2_arm,
  dbg_bvr3_arm,
  dbg_bvr4_arm,
  dbg_bvr5_arm,
  dbg_bvr6_arm,
  dbg_bvr7_arm,
  dbg_bvr8_arm,
  dbg_bvr9_arm,
  dbg_bvr10_arm,
  dbg_bvr11_arm,
  dbg_bvr12_arm,
  dbg_bvr13_arm,
  dbg_bvr14_arm,
  dbg_bvr15_arm,
  dbg_bcr0_arm,
  dbg_bcr1_arm,
  dbg_bcr2_arm,
  dbg_bcr3_arm,
  dbg_bcr4_arm,
  dbg_bcr5_arm,
  dbg_bcr6_arm,
  dbg_bcr7_arm,
  dbg_bcr8_arm,
  dbg_bcr9_arm,
  dbg_bcr10_arm,
  dbg_bcr11_arm,
  dbg_bcr12_arm,
  dbg_bcr13_arm,
  dbg_bcr14_arm,
  dbg_bcr15_arm,
  dbg_wvr0_arm,
  dbg_wvr1_arm,
  dbg_wvr2_arm,
  dbg_wvr3_arm,
  dbg_wvr4_arm,
  dbg_wvr5_arm,
  dbg_wvr6_arm,
  dbg_wvr7_arm,
  dbg_wvr8_arm,
  dbg_wvr9_arm,
  dbg_wvr10_arm,
  dbg_wvr11_arm,
  dbg_wvr12_arm,
  dbg_wvr13_arm,
  dbg_wvr14_arm,
  dbg_wvr15_arm,
  dbg_wcr0_arm,
  dbg_wcr1_arm,
  dbg_wcr2_arm,
  dbg_wcr3_arm,
  dbg_wcr4_arm,
  dbg_wcr5_arm,
  dbg_wcr6_arm,
  dbg_wcr7_arm,
  dbg_wcr8_arm,
  dbg_wcr9_arm,
  dbg_wcr10_arm,
  dbg_wcr11_arm,
  dbg_wcr12_arm,
  dbg_wcr13_arm,
  dbg_wcr14_arm,
  dbg_wcr15_arm,

  k_num_registers_arm,
  k_num_gpr_registers_arm = k_last_gpr_arm - k_first_gpr_arm + 1,
  k_num_fpr_registers_arm = k_last_fpr_arm - k_first_fpr_arm + 1
};
}

#endif // LLDB_SOURCE_PLUGINS_PROCESS_UTILITY_LLDB_ARM_REGISTER_ENUMS_H
