1 //===----------------------------------------------------------------------===//
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
8 // Compatible with libunwind API documented at:
9 // http://www.nongnu.org/libunwind/man/libunwind(3).html
11 //===----------------------------------------------------------------------===//
16 #include <__libunwind_config.h>
23 #if __has_include(<Availability.h>)
24 #include <Availability.h>
26 #elif __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ >= 1050
27 #include <Availability.h>
31 #define LIBUNWIND_AVAIL __attribute__((unavailable))
32 #elif defined(__OSX_AVAILABLE_STARTING)
33 #define LIBUNWIND_AVAIL __OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_5_0)
35 #include <AvailabilityMacros.h>
36 #ifdef AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER
37 #define LIBUNWIND_AVAIL AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER
39 #define LIBUNWIND_AVAIL __attribute__((unavailable))
43 #define LIBUNWIND_AVAIL
46 #if defined(_WIN32) && defined(__SEH__)
47 #define LIBUNWIND_CURSOR_ALIGNMENT_ATTR __attribute__((__aligned__(16)))
49 #define LIBUNWIND_CURSOR_ALIGNMENT_ATTR
54 UNW_ESUCCESS
= 0, /* no error */
55 UNW_EUNSPEC
= -6540, /* unspecified (general) error */
56 UNW_ENOMEM
= -6541, /* out of memory */
57 UNW_EBADREG
= -6542, /* bad register number */
58 UNW_EREADONLYREG
= -6543, /* attempt to write read-only register */
59 UNW_ESTOPUNWIND
= -6544, /* stop unwinding */
60 UNW_EINVALIDIP
= -6545, /* invalid IP */
61 UNW_EBADFRAME
= -6546, /* bad frame */
62 UNW_EINVAL
= -6547, /* unsupported operation or bad value */
63 UNW_EBADVERSION
= -6548, /* unwind info has unsupported version */
64 UNW_ENOINFO
= -6549 /* no unwind info found */
65 #if defined(_LIBUNWIND_TARGET_AARCH64) && !defined(_LIBUNWIND_IS_NATIVE_ONLY)
66 , UNW_ECROSSRASIGNING
= -6550 /* cross unwind with return address signing */
70 struct unw_context_t
{
71 uint64_t data
[_LIBUNWIND_CONTEXT_SIZE
];
73 typedef struct unw_context_t unw_context_t
;
76 uint64_t data
[_LIBUNWIND_CURSOR_SIZE
];
77 } LIBUNWIND_CURSOR_ALIGNMENT_ATTR
;
78 typedef struct unw_cursor_t unw_cursor_t
;
80 typedef struct unw_addr_space
*unw_addr_space_t
;
82 typedef int unw_regnum_t
;
83 typedef uintptr_t unw_word_t
;
84 #if defined(__arm__) && !defined(__ARM_DWARF_EH__)
85 typedef uint64_t unw_fpreg_t
;
87 typedef double unw_fpreg_t
;
90 struct unw_proc_info_t
{
91 unw_word_t start_ip
; /* start address of function */
92 unw_word_t end_ip
; /* address after end of function */
93 unw_word_t lsda
; /* address of language specific data area, */
94 /* or zero if not used */
95 unw_word_t handler
; /* personality routine, or zero if not used */
96 unw_word_t gp
; /* not used */
97 unw_word_t flags
; /* not used */
98 uint32_t format
; /* compact unwind encoding, or zero if none */
99 uint32_t unwind_info_size
; /* size of DWARF unwind info, or zero if none */
100 unw_word_t unwind_info
; /* address of DWARF unwind info, or zero */
101 unw_word_t extra
; /* mach_header of mach-o image containing func */
103 typedef struct unw_proc_info_t unw_proc_info_t
;
109 extern int unw_getcontext(unw_context_t
*) LIBUNWIND_AVAIL
;
110 extern int unw_init_local(unw_cursor_t
*, unw_context_t
*) LIBUNWIND_AVAIL
;
111 extern int unw_step(unw_cursor_t
*) LIBUNWIND_AVAIL
;
112 extern int unw_get_reg(unw_cursor_t
*, unw_regnum_t
, unw_word_t
*) LIBUNWIND_AVAIL
;
113 extern int unw_get_fpreg(unw_cursor_t
*, unw_regnum_t
, unw_fpreg_t
*) LIBUNWIND_AVAIL
;
114 extern int unw_set_reg(unw_cursor_t
*, unw_regnum_t
, unw_word_t
) LIBUNWIND_AVAIL
;
115 extern int unw_set_fpreg(unw_cursor_t
*, unw_regnum_t
, unw_fpreg_t
) LIBUNWIND_AVAIL
;
116 extern int unw_resume(unw_cursor_t
*) LIBUNWIND_AVAIL
;
119 /* Save VFP registers in FSTMX format (instead of FSTMD). */
120 extern void unw_save_vfp_as_X(unw_cursor_t
*) LIBUNWIND_AVAIL
;
124 extern const char *unw_regname(unw_cursor_t
*, unw_regnum_t
) LIBUNWIND_AVAIL
;
125 extern int unw_get_proc_info(unw_cursor_t
*, unw_proc_info_t
*) LIBUNWIND_AVAIL
;
126 extern int unw_is_fpreg(unw_cursor_t
*, unw_regnum_t
) LIBUNWIND_AVAIL
;
127 extern int unw_is_signal_frame(unw_cursor_t
*) LIBUNWIND_AVAIL
;
128 extern int unw_get_proc_name(unw_cursor_t
*, char *, size_t, unw_word_t
*) LIBUNWIND_AVAIL
;
129 //extern int unw_get_save_loc(unw_cursor_t*, int, unw_save_loc_t*);
131 extern unw_addr_space_t unw_local_addr_space
;
137 // architecture independent register numbers
139 UNW_REG_IP
= -1, // instruction pointer
140 UNW_REG_SP
= -2, // stack pointer
143 // 32-bit x86 registers
155 // 64-bit x86_64 registers
174 UNW_X86_64_XMM0
= 17,
175 UNW_X86_64_XMM1
= 18,
176 UNW_X86_64_XMM2
= 19,
177 UNW_X86_64_XMM3
= 20,
178 UNW_X86_64_XMM4
= 21,
179 UNW_X86_64_XMM5
= 22,
180 UNW_X86_64_XMM6
= 23,
181 UNW_X86_64_XMM7
= 24,
182 UNW_X86_64_XMM8
= 25,
183 UNW_X86_64_XMM9
= 26,
184 UNW_X86_64_XMM10
= 27,
185 UNW_X86_64_XMM11
= 28,
186 UNW_X86_64_XMM12
= 29,
187 UNW_X86_64_XMM13
= 30,
188 UNW_X86_64_XMM14
= 31,
189 UNW_X86_64_XMM15
= 32,
193 // 32-bit ppc register numbers
304 UNW_PPC_VRSAVE
= 109,
306 UNW_PPC_SPE_ACC
= 111,
307 UNW_PPC_SPEFSCR
= 112
310 // 64-bit ppc register numbers
421 // 109, 111-113: OpenPOWER ELF V2 ABI: reserved
422 // Borrowing VRSAVE number from PPC32.
423 UNW_PPC64_VRSAVE
= 109,
424 UNW_PPC64_VSCR
= 110,
425 UNW_PPC64_TFHAR
= 114,
426 UNW_PPC64_TFIAR
= 115,
427 UNW_PPC64_TEXASR
= 116,
428 UNW_PPC64_VS0
= UNW_PPC64_F0
,
429 UNW_PPC64_VS1
= UNW_PPC64_F1
,
430 UNW_PPC64_VS2
= UNW_PPC64_F2
,
431 UNW_PPC64_VS3
= UNW_PPC64_F3
,
432 UNW_PPC64_VS4
= UNW_PPC64_F4
,
433 UNW_PPC64_VS5
= UNW_PPC64_F5
,
434 UNW_PPC64_VS6
= UNW_PPC64_F6
,
435 UNW_PPC64_VS7
= UNW_PPC64_F7
,
436 UNW_PPC64_VS8
= UNW_PPC64_F8
,
437 UNW_PPC64_VS9
= UNW_PPC64_F9
,
438 UNW_PPC64_VS10
= UNW_PPC64_F10
,
439 UNW_PPC64_VS11
= UNW_PPC64_F11
,
440 UNW_PPC64_VS12
= UNW_PPC64_F12
,
441 UNW_PPC64_VS13
= UNW_PPC64_F13
,
442 UNW_PPC64_VS14
= UNW_PPC64_F14
,
443 UNW_PPC64_VS15
= UNW_PPC64_F15
,
444 UNW_PPC64_VS16
= UNW_PPC64_F16
,
445 UNW_PPC64_VS17
= UNW_PPC64_F17
,
446 UNW_PPC64_VS18
= UNW_PPC64_F18
,
447 UNW_PPC64_VS19
= UNW_PPC64_F19
,
448 UNW_PPC64_VS20
= UNW_PPC64_F20
,
449 UNW_PPC64_VS21
= UNW_PPC64_F21
,
450 UNW_PPC64_VS22
= UNW_PPC64_F22
,
451 UNW_PPC64_VS23
= UNW_PPC64_F23
,
452 UNW_PPC64_VS24
= UNW_PPC64_F24
,
453 UNW_PPC64_VS25
= UNW_PPC64_F25
,
454 UNW_PPC64_VS26
= UNW_PPC64_F26
,
455 UNW_PPC64_VS27
= UNW_PPC64_F27
,
456 UNW_PPC64_VS28
= UNW_PPC64_F28
,
457 UNW_PPC64_VS29
= UNW_PPC64_F29
,
458 UNW_PPC64_VS30
= UNW_PPC64_F30
,
459 UNW_PPC64_VS31
= UNW_PPC64_F31
,
460 UNW_PPC64_VS32
= UNW_PPC64_V0
,
461 UNW_PPC64_VS33
= UNW_PPC64_V1
,
462 UNW_PPC64_VS34
= UNW_PPC64_V2
,
463 UNW_PPC64_VS35
= UNW_PPC64_V3
,
464 UNW_PPC64_VS36
= UNW_PPC64_V4
,
465 UNW_PPC64_VS37
= UNW_PPC64_V5
,
466 UNW_PPC64_VS38
= UNW_PPC64_V6
,
467 UNW_PPC64_VS39
= UNW_PPC64_V7
,
468 UNW_PPC64_VS40
= UNW_PPC64_V8
,
469 UNW_PPC64_VS41
= UNW_PPC64_V9
,
470 UNW_PPC64_VS42
= UNW_PPC64_V10
,
471 UNW_PPC64_VS43
= UNW_PPC64_V11
,
472 UNW_PPC64_VS44
= UNW_PPC64_V12
,
473 UNW_PPC64_VS45
= UNW_PPC64_V13
,
474 UNW_PPC64_VS46
= UNW_PPC64_V14
,
475 UNW_PPC64_VS47
= UNW_PPC64_V15
,
476 UNW_PPC64_VS48
= UNW_PPC64_V16
,
477 UNW_PPC64_VS49
= UNW_PPC64_V17
,
478 UNW_PPC64_VS50
= UNW_PPC64_V18
,
479 UNW_PPC64_VS51
= UNW_PPC64_V19
,
480 UNW_PPC64_VS52
= UNW_PPC64_V20
,
481 UNW_PPC64_VS53
= UNW_PPC64_V21
,
482 UNW_PPC64_VS54
= UNW_PPC64_V22
,
483 UNW_PPC64_VS55
= UNW_PPC64_V23
,
484 UNW_PPC64_VS56
= UNW_PPC64_V24
,
485 UNW_PPC64_VS57
= UNW_PPC64_V25
,
486 UNW_PPC64_VS58
= UNW_PPC64_V26
,
487 UNW_PPC64_VS59
= UNW_PPC64_V27
,
488 UNW_PPC64_VS60
= UNW_PPC64_V28
,
489 UNW_PPC64_VS61
= UNW_PPC64_V29
,
490 UNW_PPC64_VS62
= UNW_PPC64_V30
,
491 UNW_PPC64_VS63
= UNW_PPC64_V31
494 // 64-bit ARM64 registers
506 UNW_AARCH64_X10
= 10,
507 UNW_AARCH64_X11
= 11,
508 UNW_AARCH64_X12
= 12,
509 UNW_AARCH64_X13
= 13,
510 UNW_AARCH64_X14
= 14,
511 UNW_AARCH64_X15
= 15,
512 UNW_AARCH64_X16
= 16,
513 UNW_AARCH64_X17
= 17,
514 UNW_AARCH64_X18
= 18,
515 UNW_AARCH64_X19
= 19,
516 UNW_AARCH64_X20
= 20,
517 UNW_AARCH64_X21
= 21,
518 UNW_AARCH64_X22
= 22,
519 UNW_AARCH64_X23
= 23,
520 UNW_AARCH64_X24
= 24,
521 UNW_AARCH64_X25
= 25,
522 UNW_AARCH64_X26
= 26,
523 UNW_AARCH64_X27
= 27,
524 UNW_AARCH64_X28
= 28,
525 UNW_AARCH64_X29
= 29,
527 UNW_AARCH64_X30
= 30,
529 UNW_AARCH64_X31
= 31,
534 UNW_AARCH64_RA_SIGN_STATE
= 34,
536 // FP/vector registers
547 UNW_AARCH64_V10
= 74,
548 UNW_AARCH64_V11
= 75,
549 UNW_AARCH64_V12
= 76,
550 UNW_AARCH64_V13
= 77,
551 UNW_AARCH64_V14
= 78,
552 UNW_AARCH64_V15
= 79,
553 UNW_AARCH64_V16
= 80,
554 UNW_AARCH64_V17
= 81,
555 UNW_AARCH64_V18
= 82,
556 UNW_AARCH64_V19
= 83,
557 UNW_AARCH64_V20
= 84,
558 UNW_AARCH64_V21
= 85,
559 UNW_AARCH64_V22
= 86,
560 UNW_AARCH64_V23
= 87,
561 UNW_AARCH64_V24
= 88,
562 UNW_AARCH64_V25
= 89,
563 UNW_AARCH64_V26
= 90,
564 UNW_AARCH64_V27
= 91,
565 UNW_AARCH64_V28
= 92,
566 UNW_AARCH64_V29
= 93,
567 UNW_AARCH64_V30
= 94,
568 UNW_AARCH64_V31
= 95,
570 // Compatibility aliases
571 UNW_ARM64_X0
= UNW_AARCH64_X0
,
572 UNW_ARM64_X1
= UNW_AARCH64_X1
,
573 UNW_ARM64_X2
= UNW_AARCH64_X2
,
574 UNW_ARM64_X3
= UNW_AARCH64_X3
,
575 UNW_ARM64_X4
= UNW_AARCH64_X4
,
576 UNW_ARM64_X5
= UNW_AARCH64_X5
,
577 UNW_ARM64_X6
= UNW_AARCH64_X6
,
578 UNW_ARM64_X7
= UNW_AARCH64_X7
,
579 UNW_ARM64_X8
= UNW_AARCH64_X8
,
580 UNW_ARM64_X9
= UNW_AARCH64_X9
,
581 UNW_ARM64_X10
= UNW_AARCH64_X10
,
582 UNW_ARM64_X11
= UNW_AARCH64_X11
,
583 UNW_ARM64_X12
= UNW_AARCH64_X12
,
584 UNW_ARM64_X13
= UNW_AARCH64_X13
,
585 UNW_ARM64_X14
= UNW_AARCH64_X14
,
586 UNW_ARM64_X15
= UNW_AARCH64_X15
,
587 UNW_ARM64_X16
= UNW_AARCH64_X16
,
588 UNW_ARM64_X17
= UNW_AARCH64_X17
,
589 UNW_ARM64_X18
= UNW_AARCH64_X18
,
590 UNW_ARM64_X19
= UNW_AARCH64_X19
,
591 UNW_ARM64_X20
= UNW_AARCH64_X20
,
592 UNW_ARM64_X21
= UNW_AARCH64_X21
,
593 UNW_ARM64_X22
= UNW_AARCH64_X22
,
594 UNW_ARM64_X23
= UNW_AARCH64_X23
,
595 UNW_ARM64_X24
= UNW_AARCH64_X24
,
596 UNW_ARM64_X25
= UNW_AARCH64_X25
,
597 UNW_ARM64_X26
= UNW_AARCH64_X26
,
598 UNW_ARM64_X27
= UNW_AARCH64_X27
,
599 UNW_ARM64_X28
= UNW_AARCH64_X28
,
600 UNW_ARM64_X29
= UNW_AARCH64_X29
,
601 UNW_ARM64_FP
= UNW_AARCH64_FP
,
602 UNW_ARM64_X30
= UNW_AARCH64_X30
,
603 UNW_ARM64_LR
= UNW_AARCH64_LR
,
604 UNW_ARM64_X31
= UNW_AARCH64_X31
,
605 UNW_ARM64_SP
= UNW_AARCH64_SP
,
606 UNW_ARM64_PC
= UNW_AARCH64_PC
,
607 UNW_ARM64_RA_SIGN_STATE
= UNW_AARCH64_RA_SIGN_STATE
,
608 UNW_ARM64_D0
= UNW_AARCH64_V0
,
609 UNW_ARM64_D1
= UNW_AARCH64_V1
,
610 UNW_ARM64_D2
= UNW_AARCH64_V2
,
611 UNW_ARM64_D3
= UNW_AARCH64_V3
,
612 UNW_ARM64_D4
= UNW_AARCH64_V4
,
613 UNW_ARM64_D5
= UNW_AARCH64_V5
,
614 UNW_ARM64_D6
= UNW_AARCH64_V6
,
615 UNW_ARM64_D7
= UNW_AARCH64_V7
,
616 UNW_ARM64_D8
= UNW_AARCH64_V8
,
617 UNW_ARM64_D9
= UNW_AARCH64_V9
,
618 UNW_ARM64_D10
= UNW_AARCH64_V10
,
619 UNW_ARM64_D11
= UNW_AARCH64_V11
,
620 UNW_ARM64_D12
= UNW_AARCH64_V12
,
621 UNW_ARM64_D13
= UNW_AARCH64_V13
,
622 UNW_ARM64_D14
= UNW_AARCH64_V14
,
623 UNW_ARM64_D15
= UNW_AARCH64_V15
,
624 UNW_ARM64_D16
= UNW_AARCH64_V16
,
625 UNW_ARM64_D17
= UNW_AARCH64_V17
,
626 UNW_ARM64_D18
= UNW_AARCH64_V18
,
627 UNW_ARM64_D19
= UNW_AARCH64_V19
,
628 UNW_ARM64_D20
= UNW_AARCH64_V20
,
629 UNW_ARM64_D21
= UNW_AARCH64_V21
,
630 UNW_ARM64_D22
= UNW_AARCH64_V22
,
631 UNW_ARM64_D23
= UNW_AARCH64_V23
,
632 UNW_ARM64_D24
= UNW_AARCH64_V24
,
633 UNW_ARM64_D25
= UNW_AARCH64_V25
,
634 UNW_ARM64_D26
= UNW_AARCH64_V26
,
635 UNW_ARM64_D27
= UNW_AARCH64_V27
,
636 UNW_ARM64_D28
= UNW_AARCH64_V28
,
637 UNW_ARM64_D29
= UNW_AARCH64_V29
,
638 UNW_ARM64_D30
= UNW_AARCH64_V30
,
639 UNW_ARM64_D31
= UNW_AARCH64_V31
,
642 // 32-bit ARM registers. Numbers match DWARF for ARM spec #3.1 Table 1.
643 // Naming scheme uses recommendations given in Note 4 for VFP-v2 and VFP-v3.
644 // In this scheme, even though the 64-bit floating point registers D0-D31
645 // overlap physically with the 32-bit floating pointer registers S0-S31,
646 // they are given a non-overlapping range of register numbers.
648 // Commented out ranges are not preserved during unwinding.
663 UNW_ARM_SP
= 13, // Logical alias for UNW_REG_SP
667 UNW_ARM_IP
= 15, // Logical alias for UNW_REG_IP
669 // 16-63 -- OBSOLETE. Used in VFP1 to represent both S0-S31 and D0-D31.
702 // 96-103 -- OBSOLETE. F0-F7. Used by the FPA system. Superseded by VFP.
703 // 104-111 -- wCGR0-wCGR7, ACC0-ACC7 (Intel wireless MMX)
720 // 128-133 -- SPSR, SPSR_{FIQ|IRQ|ABT|UND|SVC}
721 // 134-142 -- Reserved
722 UNW_ARM_RA_AUTH_CODE
= 143,
723 // 144-150 -- R8_USR-R14_USR
724 // 151-157 -- R8_FIQ-R14_FIQ
725 // 158-159 -- R13_IRQ-R14_IRQ
726 // 160-161 -- R13_ABT-R14_ABT
727 // 162-163 -- R13_UND-R14_UND
728 // 164-165 -- R13_SVC-R14_SVC
729 // 166-191 -- Reserved
734 // 196-199 -- wC4-wC7 (Intel wireless MMX control)
735 // 200-255 -- Reserved
768 // 288-319 -- Reserved for VFP/Neon
769 // 320-8191 -- Reserved
770 // 8192-16383 -- Unspecified vendor co-processor register.
773 // OpenRISC1000 register numbers
916 // Hexagon register numbers
954 // RISC-V registers. These match the DWARF register numbers defined by section
955 // 4 of the RISC-V ELF psABI specification, which can be found at:
957 // https://github.com/riscv/riscv-elf-psabi-doc/blob/master/riscv-elf.md
1025 // VE register numbers
1101 UNW_VE_V10
= 64 + 10,
1102 UNW_VE_V11
= 64 + 11,
1103 UNW_VE_V12
= 64 + 12,
1104 UNW_VE_V13
= 64 + 13,
1105 UNW_VE_V14
= 64 + 14,
1106 UNW_VE_V15
= 64 + 15,
1107 UNW_VE_V16
= 64 + 16,
1108 UNW_VE_V17
= 64 + 17,
1109 UNW_VE_V18
= 64 + 18,
1110 UNW_VE_V19
= 64 + 19,
1111 UNW_VE_V20
= 64 + 20,
1112 UNW_VE_V21
= 64 + 21,
1113 UNW_VE_V22
= 64 + 22,
1114 UNW_VE_V23
= 64 + 23,
1115 UNW_VE_V24
= 64 + 24,
1116 UNW_VE_V25
= 64 + 25,
1117 UNW_VE_V26
= 64 + 26,
1118 UNW_VE_V27
= 64 + 27,
1119 UNW_VE_V28
= 64 + 28,
1120 UNW_VE_V29
= 64 + 29,
1121 UNW_VE_V30
= 64 + 30,
1122 UNW_VE_V31
= 64 + 31,
1123 UNW_VE_V32
= 64 + 32,
1124 UNW_VE_V33
= 64 + 33,
1125 UNW_VE_V34
= 64 + 34,
1126 UNW_VE_V35
= 64 + 35,
1127 UNW_VE_V36
= 64 + 36,
1128 UNW_VE_V37
= 64 + 37,
1129 UNW_VE_V38
= 64 + 38,
1130 UNW_VE_V39
= 64 + 39,
1131 UNW_VE_V40
= 64 + 40,
1132 UNW_VE_V41
= 64 + 41,
1133 UNW_VE_V42
= 64 + 42,
1134 UNW_VE_V43
= 64 + 43,
1135 UNW_VE_V44
= 64 + 44,
1136 UNW_VE_V45
= 64 + 45,
1137 UNW_VE_V46
= 64 + 46,
1138 UNW_VE_V47
= 64 + 47,
1139 UNW_VE_V48
= 64 + 48,
1140 UNW_VE_V49
= 64 + 49,
1141 UNW_VE_V50
= 64 + 50,
1142 UNW_VE_V51
= 64 + 51,
1143 UNW_VE_V52
= 64 + 52,
1144 UNW_VE_V53
= 64 + 53,
1145 UNW_VE_V54
= 64 + 54,
1146 UNW_VE_V55
= 64 + 55,
1147 UNW_VE_V56
= 64 + 56,
1148 UNW_VE_V57
= 64 + 57,
1149 UNW_VE_V58
= 64 + 58,
1150 UNW_VE_V59
= 64 + 59,
1151 UNW_VE_V60
= 64 + 60,
1152 UNW_VE_V61
= 64 + 61,
1153 UNW_VE_V62
= 64 + 62,
1154 UNW_VE_V63
= 64 + 63,
1155 UNW_VE_VM0
= 128 + 0,
1156 UNW_VE_VM1
= 128 + 1,
1157 UNW_VE_VM2
= 128 + 2,
1158 UNW_VE_VM3
= 128 + 3,
1159 UNW_VE_VM4
= 128 + 4,
1160 UNW_VE_VM5
= 128 + 5,
1161 UNW_VE_VM6
= 128 + 6,
1162 UNW_VE_VM7
= 128 + 7,
1163 UNW_VE_VM8
= 128 + 8,
1164 UNW_VE_VM9
= 128 + 9,
1165 UNW_VE_VM10
= 128 + 10,
1166 UNW_VE_VM11
= 128 + 11,
1167 UNW_VE_VM12
= 128 + 12,
1168 UNW_VE_VM13
= 128 + 13,
1169 UNW_VE_VM14
= 128 + 14,
1170 UNW_VE_VM15
= 128 + 15, // = 143
1172 // Following registers don't have DWARF register numbers.