Lines Matching +full:vrs +full:- +full:10
1 //===----------------------------------------------------------------------===//
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
8 // Implements ARM zero-cost C++ exceptions
10 //===----------------------------------------------------------------------===//
12 #include "Unwind-EHABI.h"
35 return byteData[(offset & ~(size_t)0x03) + (3 - (offset & (size_t)0x03))]; in getByte()
56 SU16 = 0, // Short descriptor, 16-bit entries
57 LU16 = 1, // Long descriptor, 16-bit entries
58 LU32 = 3, // Long descriptor, 32-bit entries
60 RESERVED4 = 8, RESERVED5 = 9, RESERVED6 = 10, RESERVED7 = 11,
110 // See # 9.2 table for decoding the kind of descriptor. It's a 2-bit value. in ProcessDescriptors()
117 uintptr_t scopeStart = ucbp->pr_cache.fnstart + offset; in ProcessDescriptors()
173 const uint32_t* unwindingData = ucbp->pr_cache.ehtp; in unwindOneFrame()
185 ucbp->pr_cache.additional); in unwindOneFrame()
203 return ((1U << (count_minus_one + 1)) - 1) << start; in RegisterMask()
271 sp -= (((uint32_t)byte & 0x3f) << 2) + 4; in _Unwind_VRS_Interpret()
376 RegisterRange(10, byte & 0x7), _UVRSD_DOUBLE); in _Unwind_VRS_Interpret()
466 // EHABI #7.3 discusses preserving the VRS in a "temporary VRS" during in unwind_phase1()
467 // phase 1 and then restoring it to the "primary VRS" for phase 2. The in unwind_phase1()
468 // effect is phase 2 doesn't see any of the VRS manipulations from phase 1. in unwind_phase1()
469 // In this implementation, the phases don't share the VRS backing store. in unwind_phase1()
470 // Instead, they are passed the original |uc| and they create a new VRS in unwind_phase1()
518 exception_object->pr_cache.fnstart = frameInfo.start_ip; in unwind_phase1()
519 exception_object->pr_cache.ehtp = in unwind_phase1()
521 exception_object->pr_cache.additional = frameInfo.flags; in unwind_phase1()
528 exception_object->pr_cache.fnstart, in unwind_phase1()
529 static_cast<void *>(exception_object->pr_cache.ehtp), in unwind_phase1()
530 exception_object->pr_cache.additional); in unwind_phase1()
568 // See comment at the start of unwind_phase1 regarding VRS integrity. in unwind_phase2()
586 // phase2. To continue unwindingly correctly, replace VRS[15] with the in unwind_phase2()
592 exception_object->unwinder_cache.reserved2); in unwind_phase2()
633 exception_object->pr_cache.fnstart = frameInfo.start_ip; in unwind_phase2()
634 exception_object->pr_cache.ehtp = in unwind_phase2()
636 exception_object->pr_cache.additional = frameInfo.flags; in unwind_phase2()
646 if (sp == exception_object->barrier_cache.sp) { in unwind_phase2()
662 _LIBUNWIND_TRACE_UNWINDING("unwind_phase2(ex_ojb=%p): re-entering " in unwind_phase2()
673 exception_object->unwinder_cache.reserved2 = (uint32_t)pc; in unwind_phase2()
703 // See comment at the start of unwind_phase1 regarding VRS integrity. in unwind_phase2_forced()
740 (*stop)(1, action, exception_object->exception_class, exception_object, in unwind_phase2_forced()
758 exception_object->pr_cache.fnstart = frameInfo.start_ip; in unwind_phase2_forced()
759 exception_object->pr_cache.ehtp = in unwind_phase2_forced()
761 exception_object->pr_cache.additional = frameInfo.flags; in unwind_phase2_forced()
807 (*stop)(1, lastAction, exception_object->exception_class, exception_object, in unwind_phase2_forced()
826 exception_object->unwinder_cache.reserved1 = 0; in _Unwind_RaiseException()
851 /// Note: re-throwing an exception (as opposed to continuing the unwind)
862 if (exception_object->unwinder_cache.reserved1) in _Unwind_Resume()
865 (_Unwind_Stop_Fn)exception_object->unwinder_cache.reserved1, in _Unwind_Resume()
866 (void *)exception_object->unwinder_cache.reserved3); in _Unwind_Resume()
888 // Only used in _LIBUNWIND_TRACE_API, which is a no-op when assertions are
931 // Can only touch d0-15 with FSTMFDX. in _Unwind_VRS_Set()
964 // There's only one pseudo-register, PAC, with regno == 0. in _Unwind_VRS_Set()
994 // Can only touch d0-15 with FSTMFDX. in _Unwind_VRS_Get_Internal()
1027 // There's only one pseudo-register, PAC, with regno == 0. in _Unwind_VRS_Get_Internal()
1113 // SP is only 32-bit aligned so don't copy 64-bit at a time. in _Unwind_VRS_Pop()
1135 // Return Address Authentication code (PAC) - discriminator 0 in _Unwind_VRS_Pop()
1163 exception_object->unwinder_cache.reserved1 = (uintptr_t)stop; in _Unwind_ForcedUnwind()
1164 exception_object->unwinder_cache.reserved3 = (uintptr_t)stop_parameter; in _Unwind_ForcedUnwind()
1191 if (exception_object->exception_cleanup != NULL) in _Unwind_DeleteException()
1192 (*exception_object->exception_cleanup)(_URC_FOREIGN_EXCEPTION_CAUGHT, in _Unwind_DeleteException()