9#ifdef DECLARE_REGISTER_INFOS_ARM64_STRUCT
21#error GPR_OFFSET must be defined before including this header file
24#ifndef GPR_OFFSET_NAME
25#error GPR_OFFSET_NAME must be defined before including this header file
29#error FPU_OFFSET must be defined before including this header file
32#ifndef FPU_OFFSET_NAME
33#error FPU_OFFSET_NAME must be defined before including this header file
36#ifndef EXC_OFFSET_NAME
37#error EXC_OFFSET_NAME must be defined before including this header file
40#ifndef DBG_OFFSET_NAME
41#error DBG_OFFSET_NAME must be defined before including this header file
45#error DEFINE_DBG must be defined before including this header file
49#define GPR_W_PSEUDO_REG_ENDIAN_OFFSET 0
50#define FPU_S_PSEUDO_REG_ENDIAN_OFFSET 0
51#define FPU_D_PSEUDO_REG_ENDIAN_OFFSET 0
461#define MISC_KIND(reg, type, generic_kind) \
463 arm64_ehframe::reg, arm64_dwarf::reg, generic_kind, LLDB_INVALID_REGNUM, \
468#define LLDB_KIND(lldb_kind) \
470 LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, \
471 LLDB_INVALID_REGNUM, lldb_kind \
474#define GENERIC_KIND(genenric_kind) \
476 LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, genenric_kind, \
477 LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM \
480#define KIND_ALL_INVALID \
482 LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, \
483 LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM \
487#define GPR64_KIND(reg, generic_kind) MISC_KIND(reg, gpr, generic_kind)
488#define VREG_KIND(reg) MISC_KIND(reg, fpu, LLDB_INVALID_REGNUM)
491#define DEFINE_GPR64(reg, generic_kind) \
493 #reg, nullptr, 8, GPR_OFFSET(gpr_##reg), lldb::eEncodingUint, \
494 lldb::eFormatHex, GPR64_KIND(reg, generic_kind), nullptr, nullptr, \
499#define DEFINE_GPR64_ALT(reg, alt, generic_kind) \
501 #reg, #alt, 8, GPR_OFFSET(gpr_##reg), lldb::eEncodingUint, \
502 lldb::eFormatHex, GPR64_KIND(reg, generic_kind), nullptr, nullptr, \
507#define DEFINE_GPR32(wreg, xreg) \
510 GPR_OFFSET(gpr_##xreg) + GPR_W_PSEUDO_REG_ENDIAN_OFFSET, \
511 lldb::eEncodingUint, lldb::eFormatHex, LLDB_KIND(gpr_##wreg), \
512 g_contained_##xreg, g_##wreg##_invalidates, nullptr, \
516#define DEFINE_VREG(reg) \
518 #reg, nullptr, 16, FPU_OFFSET(fpu_##reg - fpu_v0), lldb::eEncodingVector, \
519 lldb::eFormatVectorOfUInt8, VREG_KIND(reg), nullptr, nullptr, nullptr, \
523#define DEFINE_FPU_PSEUDO(reg, size, offset, vreg) \
525 #reg, nullptr, size, FPU_OFFSET(fpu_##vreg - fpu_v0) + offset, \
526 lldb::eEncodingIEEE754, lldb::eFormatFloat, LLDB_KIND(fpu_##reg), \
527 g_contained_##vreg, g_##reg##_invalidates, nullptr, \
531#define DEFINE_GPR_CPSR \
533 "cpsr", nullptr, 4, GPR_OFFSET_NAME(cpsr), lldb::eEncodingUint, \
535 { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_REGNUM_GENERIC_FLAGS, \
536 LLDB_INVALID_REGNUM, gpr_cpsr }, \
537 nullptr, nullptr, nullptr, \
541#define DEFINE_MISC_REGS(reg, size, TYPE, lldb_kind) \
543 #reg, nullptr, size, TYPE##_OFFSET_NAME(reg), lldb::eEncodingUint, \
544 lldb::eFormatHex, MISC_##TYPE##_KIND(lldb_kind), nullptr, nullptr, \
550#define DEFINE_MISC_LLDB_REGS(reg, size, TYPE, lldb_kind) \
552 #reg, nullptr, size, TYPE##_OFFSET_NAME(reg), lldb::eEncodingUint, \
553 lldb::eFormatHex, LLDB_KIND(lldb_kind), nullptr, nullptr, \
558#define DEFINE_EXTENSION_REG(reg) \
560 #reg, nullptr, 8, 0, lldb::eEncodingUint, lldb::eFormatHex, \
561 KIND_ALL_INVALID, nullptr, nullptr, nullptr, \
564#define DEFINE_EXTENSION_REG_GENERIC(reg, generic_kind) \
566 #reg, nullptr, 8, 0, lldb::eEncodingUint, lldb::eFormatHex, \
567 GENERIC_KIND(generic_kind), nullptr, nullptr, nullptr, \
610 DEFINE_GPR32(w0, x0),
611 DEFINE_GPR32(w1, x1),
612 DEFINE_GPR32(w2, x2),
613 DEFINE_GPR32(w3, x3),
614 DEFINE_GPR32(w4, x4),
615 DEFINE_GPR32(w5, x5),
616 DEFINE_GPR32(w6, x6),
617 DEFINE_GPR32(w7, x7),
618 DEFINE_GPR32(w8, x8),
619 DEFINE_GPR32(w9, x9),
620 DEFINE_GPR32(w10, x10),
621 DEFINE_GPR32(w11, x11),
622 DEFINE_GPR32(w12, x12),
623 DEFINE_GPR32(w13, x13),
624 DEFINE_GPR32(w14, x14),
625 DEFINE_GPR32(w15, x15),
626 DEFINE_GPR32(w16, x16),
627 DEFINE_GPR32(w17, x17),
628 DEFINE_GPR32(w18, x18),
629 DEFINE_GPR32(w19,
x19),
630 DEFINE_GPR32(w20,
x20),
631 DEFINE_GPR32(w21,
x21),
632 DEFINE_GPR32(w22,
x22),
633 DEFINE_GPR32(w23,
x23),
634 DEFINE_GPR32(w24,
x24),
635 DEFINE_GPR32(w25,
x25),
636 DEFINE_GPR32(w26,
x26),
637 DEFINE_GPR32(w27,
x27),
638 DEFINE_GPR32(w28,
x28),
675 DEFINE_FPU_PSEUDO(s0, 4, FPU_S_PSEUDO_REG_ENDIAN_OFFSET, v0),
676 DEFINE_FPU_PSEUDO(s1, 4, FPU_S_PSEUDO_REG_ENDIAN_OFFSET, v1),
677 DEFINE_FPU_PSEUDO(s2, 4, FPU_S_PSEUDO_REG_ENDIAN_OFFSET, v2),
678 DEFINE_FPU_PSEUDO(s3, 4, FPU_S_PSEUDO_REG_ENDIAN_OFFSET, v3),
679 DEFINE_FPU_PSEUDO(s4, 4, FPU_S_PSEUDO_REG_ENDIAN_OFFSET, v4),
680 DEFINE_FPU_PSEUDO(s5, 4, FPU_S_PSEUDO_REG_ENDIAN_OFFSET, v5),
681 DEFINE_FPU_PSEUDO(s6, 4, FPU_S_PSEUDO_REG_ENDIAN_OFFSET, v6),
682 DEFINE_FPU_PSEUDO(s7, 4, FPU_S_PSEUDO_REG_ENDIAN_OFFSET, v7),
683 DEFINE_FPU_PSEUDO(s8, 4, FPU_S_PSEUDO_REG_ENDIAN_OFFSET,
v8),
684 DEFINE_FPU_PSEUDO(s9, 4, FPU_S_PSEUDO_REG_ENDIAN_OFFSET,
v9),
685 DEFINE_FPU_PSEUDO(s10, 4, FPU_S_PSEUDO_REG_ENDIAN_OFFSET,
v10),
686 DEFINE_FPU_PSEUDO(s11, 4, FPU_S_PSEUDO_REG_ENDIAN_OFFSET,
v11),
687 DEFINE_FPU_PSEUDO(s12, 4, FPU_S_PSEUDO_REG_ENDIAN_OFFSET,
v12),
688 DEFINE_FPU_PSEUDO(s13, 4, FPU_S_PSEUDO_REG_ENDIAN_OFFSET,
v13),
689 DEFINE_FPU_PSEUDO(s14, 4, FPU_S_PSEUDO_REG_ENDIAN_OFFSET,
v14),
690 DEFINE_FPU_PSEUDO(s15, 4, FPU_S_PSEUDO_REG_ENDIAN_OFFSET,
v15),
691 DEFINE_FPU_PSEUDO(s16, 4, FPU_S_PSEUDO_REG_ENDIAN_OFFSET, v16),
692 DEFINE_FPU_PSEUDO(s17, 4, FPU_S_PSEUDO_REG_ENDIAN_OFFSET, v17),
693 DEFINE_FPU_PSEUDO(s18, 4, FPU_S_PSEUDO_REG_ENDIAN_OFFSET, v18),
694 DEFINE_FPU_PSEUDO(s19, 4, FPU_S_PSEUDO_REG_ENDIAN_OFFSET, v19),
695 DEFINE_FPU_PSEUDO(s20, 4, FPU_S_PSEUDO_REG_ENDIAN_OFFSET, v20),
696 DEFINE_FPU_PSEUDO(s21, 4, FPU_S_PSEUDO_REG_ENDIAN_OFFSET, v21),
697 DEFINE_FPU_PSEUDO(s22, 4, FPU_S_PSEUDO_REG_ENDIAN_OFFSET, v22),
698 DEFINE_FPU_PSEUDO(s23, 4, FPU_S_PSEUDO_REG_ENDIAN_OFFSET, v23),
699 DEFINE_FPU_PSEUDO(s24, 4, FPU_S_PSEUDO_REG_ENDIAN_OFFSET, v24),
700 DEFINE_FPU_PSEUDO(s25, 4, FPU_S_PSEUDO_REG_ENDIAN_OFFSET, v25),
701 DEFINE_FPU_PSEUDO(s26, 4, FPU_S_PSEUDO_REG_ENDIAN_OFFSET, v26),
702 DEFINE_FPU_PSEUDO(s27, 4, FPU_S_PSEUDO_REG_ENDIAN_OFFSET, v27),
703 DEFINE_FPU_PSEUDO(s28, 4, FPU_S_PSEUDO_REG_ENDIAN_OFFSET, v28),
704 DEFINE_FPU_PSEUDO(s29, 4, FPU_S_PSEUDO_REG_ENDIAN_OFFSET, v29),
705 DEFINE_FPU_PSEUDO(s30, 4, FPU_S_PSEUDO_REG_ENDIAN_OFFSET, v30),
706 DEFINE_FPU_PSEUDO(s31, 4, FPU_S_PSEUDO_REG_ENDIAN_OFFSET, v31),
708 DEFINE_FPU_PSEUDO(d0, 8, FPU_D_PSEUDO_REG_ENDIAN_OFFSET, v0),
709 DEFINE_FPU_PSEUDO(d1, 8, FPU_D_PSEUDO_REG_ENDIAN_OFFSET, v1),
710 DEFINE_FPU_PSEUDO(d2, 8, FPU_D_PSEUDO_REG_ENDIAN_OFFSET, v2),
711 DEFINE_FPU_PSEUDO(d3, 8, FPU_D_PSEUDO_REG_ENDIAN_OFFSET, v3),
712 DEFINE_FPU_PSEUDO(d4, 8, FPU_D_PSEUDO_REG_ENDIAN_OFFSET, v4),
713 DEFINE_FPU_PSEUDO(d5, 8, FPU_D_PSEUDO_REG_ENDIAN_OFFSET, v5),
714 DEFINE_FPU_PSEUDO(d6, 8, FPU_D_PSEUDO_REG_ENDIAN_OFFSET, v6),
715 DEFINE_FPU_PSEUDO(d7, 8, FPU_D_PSEUDO_REG_ENDIAN_OFFSET, v7),
716 DEFINE_FPU_PSEUDO(d8, 8, FPU_D_PSEUDO_REG_ENDIAN_OFFSET,
v8),
717 DEFINE_FPU_PSEUDO(d9, 8, FPU_D_PSEUDO_REG_ENDIAN_OFFSET,
v9),
718 DEFINE_FPU_PSEUDO(d10, 8, FPU_D_PSEUDO_REG_ENDIAN_OFFSET,
v10),
719 DEFINE_FPU_PSEUDO(d11, 8, FPU_D_PSEUDO_REG_ENDIAN_OFFSET,
v11),
720 DEFINE_FPU_PSEUDO(d12, 8, FPU_D_PSEUDO_REG_ENDIAN_OFFSET,
v12),
721 DEFINE_FPU_PSEUDO(d13, 8, FPU_D_PSEUDO_REG_ENDIAN_OFFSET,
v13),
722 DEFINE_FPU_PSEUDO(d14, 8, FPU_D_PSEUDO_REG_ENDIAN_OFFSET,
v14),
723 DEFINE_FPU_PSEUDO(d15, 8, FPU_D_PSEUDO_REG_ENDIAN_OFFSET,
v15),
724 DEFINE_FPU_PSEUDO(d16, 8, FPU_D_PSEUDO_REG_ENDIAN_OFFSET, v16),
725 DEFINE_FPU_PSEUDO(d17, 8, FPU_D_PSEUDO_REG_ENDIAN_OFFSET, v17),
726 DEFINE_FPU_PSEUDO(d18, 8, FPU_D_PSEUDO_REG_ENDIAN_OFFSET, v18),
727 DEFINE_FPU_PSEUDO(d19, 8, FPU_D_PSEUDO_REG_ENDIAN_OFFSET, v19),
728 DEFINE_FPU_PSEUDO(d20, 8, FPU_D_PSEUDO_REG_ENDIAN_OFFSET, v20),
729 DEFINE_FPU_PSEUDO(d21, 8, FPU_D_PSEUDO_REG_ENDIAN_OFFSET, v21),
730 DEFINE_FPU_PSEUDO(d22, 8, FPU_D_PSEUDO_REG_ENDIAN_OFFSET, v22),
731 DEFINE_FPU_PSEUDO(d23, 8, FPU_D_PSEUDO_REG_ENDIAN_OFFSET, v23),
732 DEFINE_FPU_PSEUDO(d24, 8, FPU_D_PSEUDO_REG_ENDIAN_OFFSET, v24),
733 DEFINE_FPU_PSEUDO(d25, 8, FPU_D_PSEUDO_REG_ENDIAN_OFFSET, v25),
734 DEFINE_FPU_PSEUDO(d26, 8, FPU_D_PSEUDO_REG_ENDIAN_OFFSET, v26),
735 DEFINE_FPU_PSEUDO(d27, 8, FPU_D_PSEUDO_REG_ENDIAN_OFFSET, v27),
736 DEFINE_FPU_PSEUDO(d28, 8, FPU_D_PSEUDO_REG_ENDIAN_OFFSET, v28),
737 DEFINE_FPU_PSEUDO(d29, 8, FPU_D_PSEUDO_REG_ENDIAN_OFFSET, v29),
738 DEFINE_FPU_PSEUDO(d30, 8, FPU_D_PSEUDO_REG_ENDIAN_OFFSET, v30),
739 DEFINE_FPU_PSEUDO(d31, 8, FPU_D_PSEUDO_REG_ENDIAN_OFFSET, v31),
742 DEFINE_MISC_LLDB_REGS(fpsr, 4, FPU, fpu_fpsr),
743 DEFINE_MISC_LLDB_REGS(fpcr, 4, FPU, fpu_fpcr),
744 DEFINE_MISC_LLDB_REGS(far, 8, EXC,
exc_far),
745 DEFINE_MISC_LLDB_REGS(esr, 4, EXC, exc_esr),
#define DEFINE_DBG(re, y)
#define LLDB_REGNUM_GENERIC_RA
#define LLDB_REGNUM_GENERIC_ARG8
#define LLDB_REGNUM_GENERIC_ARG6
#define LLDB_REGNUM_GENERIC_SP
#define LLDB_REGNUM_GENERIC_ARG4
#define LLDB_REGNUM_GENERIC_ARG3
#define LLDB_REGNUM_GENERIC_ARG1
#define LLDB_REGNUM_GENERIC_ARG7
#define LLDB_INVALID_REGNUM
#define LLDB_REGNUM_GENERIC_ARG2
#define LLDB_REGNUM_GENERIC_PC
#define LLDB_REGNUM_GENERIC_FP
#define LLDB_REGNUM_GENERIC_ARG5
Every register is described in detail including its name, alternate name (optional),...