Lines Matching refs: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()
450 uint64_t reg; in parseFDEInstructions() local
486 reg = addressSpace.getULEB128(p, instructionsEnd); in parseFDEInstructions()
489 if (reg > kMaxRegisterNumber) { in parseFDEInstructions()
494 results->setRegister(reg, kRegisterInCFA, offset, initialState); in parseFDEInstructions()
497 reg, offset); in parseFDEInstructions()
500 reg = addressSpace.getULEB128(p, instructionsEnd); in parseFDEInstructions()
501 if (reg > kMaxRegisterNumber) { in parseFDEInstructions()
506 results->restoreRegisterToInitialState(reg, initialState); in parseFDEInstructions()
508 reg); in parseFDEInstructions()
511 reg = addressSpace.getULEB128(p, instructionsEnd); in parseFDEInstructions()
512 if (reg > kMaxRegisterNumber) { in parseFDEInstructions()
517 results->setRegisterLocation(reg, kRegisterUndefined, initialState); in parseFDEInstructions()
518 _LIBUNWIND_TRACE_DWARF("DW_CFA_undefined(reg=%" PRIu64 ")\n", reg); in parseFDEInstructions()
521 reg = addressSpace.getULEB128(p, instructionsEnd); in parseFDEInstructions()
522 if (reg > kMaxRegisterNumber) { in parseFDEInstructions()
531 results->setRegisterLocation(reg, kRegisterUnused, initialState); in parseFDEInstructions()
532 _LIBUNWIND_TRACE_DWARF("DW_CFA_same_value(reg=%" PRIu64 ")\n", reg); in parseFDEInstructions()
535 reg = addressSpace.getULEB128(p, instructionsEnd); in parseFDEInstructions()
537 if (reg > kMaxRegisterNumber) { in parseFDEInstructions()
547 results->setRegister(reg, kRegisterInRegister, (int64_t)reg2, in parseFDEInstructions()
550 "DW_CFA_register(reg=%" PRIu64 ", reg2=%" PRIu64 ")\n", reg, reg2); in parseFDEInstructions()
580 reg = addressSpace.getULEB128(p, instructionsEnd); in parseFDEInstructions()
582 if (reg > kMaxRegisterNumber) { in parseFDEInstructions()
586 results->cfaRegister = (uint32_t)reg; in parseFDEInstructions()
590 reg, offset); in parseFDEInstructions()
593 reg = addressSpace.getULEB128(p, instructionsEnd); in parseFDEInstructions()
594 if (reg > kMaxRegisterNumber) { in parseFDEInstructions()
599 results->cfaRegister = (uint32_t)reg; in parseFDEInstructions()
600 _LIBUNWIND_TRACE_DWARF("DW_CFA_def_cfa_register(%" PRIu64 ")\n", reg); in parseFDEInstructions()
619 reg = addressSpace.getULEB128(p, instructionsEnd); in parseFDEInstructions()
620 if (reg > kMaxRegisterNumber) { in parseFDEInstructions()
625 results->setRegister(reg, kRegisterAtExpression, (int64_t)p, in parseFDEInstructions()
633 reg, results->savedRegisters[reg].value, length); in parseFDEInstructions()
636 reg = addressSpace.getULEB128(p, instructionsEnd); in parseFDEInstructions()
637 if (reg > kMaxRegisterNumber) { in parseFDEInstructions()
644 results->setRegister(reg, kRegisterInCFA, offset, initialState); in parseFDEInstructions()
647 reg, offset); in parseFDEInstructions()
650 reg = addressSpace.getULEB128(p, instructionsEnd); in parseFDEInstructions()
653 if (reg > kMaxRegisterNumber) { in parseFDEInstructions()
658 results->cfaRegister = (uint32_t)reg; in parseFDEInstructions()
662 reg, offset); in parseFDEInstructions()
672 reg = addressSpace.getULEB128(p, instructionsEnd); in parseFDEInstructions()
673 if (reg > kMaxRegisterNumber) { in parseFDEInstructions()
677 reg); in parseFDEInstructions()
682 results->setRegister(reg, kRegisterOffsetFromCFA, offset, initialState); in parseFDEInstructions()
685 reg, offset); in parseFDEInstructions()
688 reg = addressSpace.getULEB128(p, instructionsEnd); in parseFDEInstructions()
689 if (reg > kMaxRegisterNumber) { in parseFDEInstructions()
696 results->setRegister(reg, kRegisterOffsetFromCFA, offset, initialState); in parseFDEInstructions()
699 reg, offset); in parseFDEInstructions()
702 reg = addressSpace.getULEB128(p, instructionsEnd); in parseFDEInstructions()
703 if (reg > kMaxRegisterNumber) { in parseFDEInstructions()
708 results->setRegister(reg, kRegisterIsExpression, (int64_t)p, in parseFDEInstructions()
716 reg, results->savedRegisters[reg].value, length); in parseFDEInstructions()
724 reg = addressSpace.getULEB128(p, instructionsEnd); in parseFDEInstructions()
725 if (reg > kMaxRegisterNumber) { in parseFDEInstructions()
732 results->setRegister(reg, kRegisterInCFA, -offset, initialState); in parseFDEInstructions()
759 for (reg = UNW_SPARC_O0; reg <= UNW_SPARC_O7; reg++) { in parseFDEInstructions()
760 results->setRegister(reg, kRegisterInRegister, in parseFDEInstructions()
761 ((int64_t)reg - UNW_SPARC_O0) + UNW_SPARC_I0, in parseFDEInstructions()
765 for (reg = UNW_SPARC_L0; reg <= UNW_SPARC_I7; reg++) { in parseFDEInstructions()
766 results->setRegister(reg, kRegisterInCFA, in parseFDEInstructions()
767 ((int64_t)reg - UNW_SPARC_L0) * 4, in parseFDEInstructions()
779 for (reg = UNW_SPARC_L0; reg <= UNW_SPARC_I7; reg++) { in parseFDEInstructions()
780 if (reg == UNW_SPARC_I7) in parseFDEInstructions()
782 reg, kRegisterInCFADecrypt, in parseFDEInstructions()
783 static_cast<int64_t>((reg - UNW_SPARC_L0) * sizeof(pint_t)), in parseFDEInstructions()
787 reg, kRegisterInCFA, in parseFDEInstructions()
788 static_cast<int64_t>((reg - UNW_SPARC_L0) * sizeof(pint_t)), in parseFDEInstructions()
805 reg = operand; in parseFDEInstructions()
806 if (reg > kMaxRegisterNumber) { in parseFDEInstructions()
809 reg); in parseFDEInstructions()
814 results->setRegister(reg, kRegisterInCFA, offset, initialState); in parseFDEInstructions()
824 reg = operand; in parseFDEInstructions()
825 if (reg > kMaxRegisterNumber) { in parseFDEInstructions()
829 reg); in parseFDEInstructions()
832 results->restoreRegisterToInitialState(reg, initialState); in parseFDEInstructions()