Lines Matching full:reg

100     void checkSaveRegister(uint64_t reg, PrologInfo &initialState) {  in checkSaveRegister()
101 if (!savedRegisters[reg].initialStateSaved) { in checkSaveRegister()
102 initialState.savedRegisters[reg] = savedRegisters[reg]; in checkSaveRegister()
103 savedRegisters[reg].initialStateSaved = true; in checkSaveRegister()
106 void setRegister(uint64_t reg, RegisterSavedWhere newLocation, in setRegister()
108 checkSaveRegister(reg, initialState); in setRegister()
109 savedRegisters[reg].location = newLocation; in setRegister()
110 savedRegisters[reg].value = newValue; in setRegister()
112 void setRegisterLocation(uint64_t reg, RegisterSavedWhere newLocation, in setRegisterLocation()
114 checkSaveRegister(reg, initialState); in setRegisterLocation()
115 savedRegisters[reg].location = newLocation; in setRegisterLocation()
117 void setRegisterValue(uint64_t reg, int64_t newValue, in setRegisterValue()
119 checkSaveRegister(reg, initialState); in setRegisterValue()
120 savedRegisters[reg].value = newValue; in setRegisterValue()
122 void restoreRegisterToInitialState(uint64_t reg, PrologInfo &initialState) { in restoreRegisterToInitialState()
123 if (savedRegisters[reg].initialStateSaved) in restoreRegisterToInitialState()
124 savedRegisters[reg] = initialState.savedRegisters[reg]; in restoreRegisterToInitialState()
454 uint64_t reg; in parseFDEInstructions() local
490 reg = addressSpace.getULEB128(p, instructionsEnd); in parseFDEInstructions()
493 if (reg > kMaxRegisterNumber) { in parseFDEInstructions()
495 "malformed DW_CFA_offset_extended DWARF unwind, reg too big"); in parseFDEInstructions()
498 results->setRegister(reg, kRegisterInCFA, offset, initialState); in parseFDEInstructions()
499 _LIBUNWIND_TRACE_DWARF("DW_CFA_offset_extended(reg=%" PRIu64 ", " in parseFDEInstructions()
501 reg, offset); in parseFDEInstructions()
504 reg = addressSpace.getULEB128(p, instructionsEnd); in parseFDEInstructions()
505 if (reg > kMaxRegisterNumber) { in parseFDEInstructions()
507 "malformed DW_CFA_restore_extended DWARF unwind, reg too big"); in parseFDEInstructions()
510 results->restoreRegisterToInitialState(reg, initialState); in parseFDEInstructions()
511 _LIBUNWIND_TRACE_DWARF("DW_CFA_restore_extended(reg=%" PRIu64 ")\n", in parseFDEInstructions()
512 reg); in parseFDEInstructions()
515 reg = addressSpace.getULEB128(p, instructionsEnd); in parseFDEInstructions()
516 if (reg > kMaxRegisterNumber) { in parseFDEInstructions()
518 "malformed DW_CFA_undefined DWARF unwind, reg too big"); in parseFDEInstructions()
521 results->setRegisterLocation(reg, kRegisterUnused, initialState); in parseFDEInstructions()
522 _LIBUNWIND_TRACE_DWARF("DW_CFA_undefined(reg=%" PRIu64 ")\n", reg); in parseFDEInstructions()
525 reg = addressSpace.getULEB128(p, instructionsEnd); in parseFDEInstructions()
526 if (reg > kMaxRegisterNumber) { in parseFDEInstructions()
528 "malformed DW_CFA_same_value DWARF unwind, reg too big"); in parseFDEInstructions()
535 results->setRegisterLocation(reg, kRegisterUnused, initialState); in parseFDEInstructions()
536 _LIBUNWIND_TRACE_DWARF("DW_CFA_same_value(reg=%" PRIu64 ")\n", reg); in parseFDEInstructions()
539 reg = addressSpace.getULEB128(p, instructionsEnd); in parseFDEInstructions()
541 if (reg > kMaxRegisterNumber) { in parseFDEInstructions()
543 "malformed DW_CFA_register DWARF unwind, reg too big"); in parseFDEInstructions()
551 results->setRegister(reg, kRegisterInRegister, (int64_t)reg2, in parseFDEInstructions()
554 "DW_CFA_register(reg=%" PRIu64 ", reg2=%" PRIu64 ")\n", reg, reg2); in parseFDEInstructions()
584 reg = addressSpace.getULEB128(p, instructionsEnd); in parseFDEInstructions()
586 if (reg > kMaxRegisterNumber) { in parseFDEInstructions()
587 _LIBUNWIND_LOG0("malformed DW_CFA_def_cfa DWARF unwind, reg too big"); in parseFDEInstructions()
590 results->cfaRegister = (uint32_t)reg; in parseFDEInstructions()
592 _LIBUNWIND_TRACE_DWARF("DW_CFA_def_cfa(reg=%" PRIu64 ", offset=%" PRIu64 in parseFDEInstructions()
594 reg, offset); in parseFDEInstructions()
597 reg = addressSpace.getULEB128(p, instructionsEnd); in parseFDEInstructions()
598 if (reg > kMaxRegisterNumber) { in parseFDEInstructions()
600 "malformed DW_CFA_def_cfa_register DWARF unwind, reg too big"); in parseFDEInstructions()
603 results->cfaRegister = (uint32_t)reg; in parseFDEInstructions()
604 _LIBUNWIND_TRACE_DWARF("DW_CFA_def_cfa_register(%" PRIu64 ")\n", reg); in parseFDEInstructions()
623 reg = addressSpace.getULEB128(p, instructionsEnd); in parseFDEInstructions()
624 if (reg > kMaxRegisterNumber) { in parseFDEInstructions()
626 "malformed DW_CFA_expression DWARF unwind, reg too big"); in parseFDEInstructions()
629 results->setRegister(reg, kRegisterAtExpression, (int64_t)p, in parseFDEInstructions()
634 _LIBUNWIND_TRACE_DWARF("DW_CFA_expression(reg=%" PRIu64 ", " in parseFDEInstructions()
637 reg, results->savedRegisters[reg].value, length); in parseFDEInstructions()
640 reg = addressSpace.getULEB128(p, instructionsEnd); in parseFDEInstructions()
641 if (reg > kMaxRegisterNumber) { in parseFDEInstructions()
643 "malformed DW_CFA_offset_extended_sf DWARF unwind, reg too big"); in parseFDEInstructions()
648 results->setRegister(reg, kRegisterInCFA, offset, initialState); in parseFDEInstructions()
649 _LIBUNWIND_TRACE_DWARF("DW_CFA_offset_extended_sf(reg=%" PRIu64 ", " in parseFDEInstructions()
651 reg, offset); in parseFDEInstructions()
654 reg = addressSpace.getULEB128(p, instructionsEnd); in parseFDEInstructions()
657 if (reg > kMaxRegisterNumber) { in parseFDEInstructions()
659 "malformed DW_CFA_def_cfa_sf DWARF unwind, reg too big"); in parseFDEInstructions()
662 results->cfaRegister = (uint32_t)reg; in parseFDEInstructions()
664 _LIBUNWIND_TRACE_DWARF("DW_CFA_def_cfa_sf(reg=%" PRIu64 ", " in parseFDEInstructions()
666 reg, offset); in parseFDEInstructions()
676 reg = addressSpace.getULEB128(p, instructionsEnd); in parseFDEInstructions()
677 if (reg > kMaxRegisterNumber) { in parseFDEInstructions()
679 "malformed DW_CFA_val_offset DWARF unwind, reg (%" PRIu64 in parseFDEInstructions()
681 reg); in parseFDEInstructions()
686 results->setRegister(reg, kRegisterOffsetFromCFA, offset, initialState); in parseFDEInstructions()
687 _LIBUNWIND_TRACE_DWARF("DW_CFA_val_offset(reg=%" PRIu64 ", " in parseFDEInstructions()
689 reg, offset); in parseFDEInstructions()
692 reg = addressSpace.getULEB128(p, instructionsEnd); in parseFDEInstructions()
693 if (reg > kMaxRegisterNumber) { in parseFDEInstructions()
695 "malformed DW_CFA_val_offset_sf DWARF unwind, reg too big"); in parseFDEInstructions()
700 results->setRegister(reg, kRegisterOffsetFromCFA, offset, initialState); in parseFDEInstructions()
701 _LIBUNWIND_TRACE_DWARF("DW_CFA_val_offset_sf(reg=%" PRIu64 ", " in parseFDEInstructions()
703 reg, offset); in parseFDEInstructions()
706 reg = addressSpace.getULEB128(p, instructionsEnd); in parseFDEInstructions()
707 if (reg > kMaxRegisterNumber) { in parseFDEInstructions()
709 "malformed DW_CFA_val_expression DWARF unwind, reg too big"); in parseFDEInstructions()
712 results->setRegister(reg, kRegisterIsExpression, (int64_t)p, in parseFDEInstructions()
717 _LIBUNWIND_TRACE_DWARF("DW_CFA_val_expression(reg=%" PRIu64 ", " in parseFDEInstructions()
720 reg, results->savedRegisters[reg].value, length); in parseFDEInstructions()
728 reg = addressSpace.getULEB128(p, instructionsEnd); in parseFDEInstructions()
729 if (reg > kMaxRegisterNumber) { in parseFDEInstructions()
731 "unwind, reg too big"); in parseFDEInstructions()
736 results->setRegister(reg, kRegisterInCFA, -offset, initialState); in parseFDEInstructions()
763 for (reg = UNW_SPARC_O0; reg <= UNW_SPARC_O7; reg++) { in parseFDEInstructions()
764 results->setRegister(reg, kRegisterInRegister, in parseFDEInstructions()
765 ((int64_t)reg - UNW_SPARC_O0) + UNW_SPARC_I0, in parseFDEInstructions()
769 for (reg = UNW_SPARC_L0; reg <= UNW_SPARC_I7; reg++) { in parseFDEInstructions()
770 results->setRegister(reg, kRegisterInCFA, in parseFDEInstructions()
771 ((int64_t)reg - UNW_SPARC_L0) * 4, in parseFDEInstructions()
783 for (reg = UNW_SPARC_L0; reg <= UNW_SPARC_I7; reg++) { in parseFDEInstructions()
784 if (reg == UNW_SPARC_I7) in parseFDEInstructions()
786 reg, kRegisterInCFADecrypt, in parseFDEInstructions()
787 static_cast<int64_t>((reg - UNW_SPARC_L0) * sizeof(pint_t)), in parseFDEInstructions()
791 reg, kRegisterInCFA, in parseFDEInstructions()
792 static_cast<int64_t>((reg - UNW_SPARC_L0) * sizeof(pint_t)), in parseFDEInstructions()
809 reg = operand; in parseFDEInstructions()
810 if (reg > kMaxRegisterNumber) { in parseFDEInstructions()
811 _LIBUNWIND_LOG("malformed DW_CFA_offset DWARF unwind, reg (%" PRIu64 in parseFDEInstructions()
813 reg); in parseFDEInstructions()
818 results->setRegister(reg, kRegisterInCFA, offset, initialState); in parseFDEInstructions()
819 _LIBUNWIND_TRACE_DWARF("DW_CFA_offset(reg=%d, offset=%" PRId64 ")\n", in parseFDEInstructions()
828 reg = operand; in parseFDEInstructions()
829 if (reg > kMaxRegisterNumber) { in parseFDEInstructions()
831 "malformed DW_CFA_restore DWARF unwind, reg (%" PRIu64 in parseFDEInstructions()
833 reg); in parseFDEInstructions()
836 results->restoreRegisterToInitialState(reg, initialState); in parseFDEInstructions()
837 _LIBUNWIND_TRACE_DWARF("DW_CFA_restore(reg=%" PRIu64 ")\n", in parseFDEInstructions()