• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /macosx-10.9.5/libunwind-35.3/src/

Lines Matching defs:registers

105 	static int stepWithDwarf(A& addressSpace, pint_t pc, pint_t fdeStart, R& registers);
117 static pint_t evaluateExpression(pint_t expression, A& addressSpace, const R& registers, pint_t initialStackValue);
118 static pint_t getSavedRegister(A& addressSpace, const R& registers, pint_t cfa,
120 static double getSavedFloatRegister(A& addressSpace, const R& registers, pint_t cfa,
122 static v128 getSavedVectorRegister(A& addressSpace, const R& registers, pint_t cfa,
312 typename A::pint_t DwarfInstructions<A,R>::getSavedRegister(A& addressSpace, const R& registers, pint_t cfa,
320 return addressSpace.getP(evaluateExpression(savedReg.value, addressSpace, registers, cfa));
323 return evaluateExpression(savedReg.value, addressSpace, registers, cfa);
326 return registers.getRegister(savedReg.value);
337 double DwarfInstructions<A,R>::getSavedFloatRegister(A& addressSpace, const R& registers, pint_t cfa,
345 return addressSpace.getDouble(evaluateExpression(savedReg.value, addressSpace, registers, cfa));
358 v128 DwarfInstructions<A,R>::getSavedVectorRegister(A& addressSpace, const R& registers, pint_t cfa,
366 return addressSpace.getVector(evaluateExpression(savedReg.value, addressSpace, registers, cfa));
380 int DwarfInstructions<A,R>::stepWithDwarf(A& addressSpace, pint_t pc, pint_t fdeStart, R& registers)
388 R newRegisters = registers;
391 pint_t cfa = getCFA(addressSpace, prolog, registers);
393 // restore registers that dwarf says were saved
397 if ( registers.validFloatRegister(i) )
398 newRegisters.setFloatRegister(i, getSavedFloatRegister(addressSpace, registers, cfa, prolog.savedRegisters[i]));
399 else if ( registers.validVectorRegister(i) )
400 newRegisters.setVectorRegister(i, getSavedVectorRegister(addressSpace, registers, cfa, prolog.savedRegisters[i]));
401 else if ( isReturnAddressRegister(i, registers) )
402 returnAddress = getSavedRegister(addressSpace, registers, cfa, prolog.savedRegisters[i]);
403 else if ( registers.validRegister(i) )
404 newRegisters.setRegister(i, getSavedRegister(addressSpace, registers, cfa, prolog.savedRegisters[i]));
417 registers = newRegisters;
429 const R& registers, pint_t initialStackValue)
810 *(++sp) = registers.getRegister(reg);
816 *(++sp) = registers.getRegister(reg);
854 *(++sp) = registers.getRegister(reg) + svalue;
861 *(++sp) = registers.getRegister(reg) + svalue;
932 const Registers_x86_64& registers)
935 return registers.getRegister(prolog.cfaRegister) + prolog.cfaRegisterOffset;
937 return evaluateExpression(prolog.cfaExpression, addressSpace, registers, 0);
1029 // scan which registers are saved
1121 // no registers saved, nothing more to encode
1129 strcpy(warningBuffer, "offset of saved registers too far to encode");
1148 strcpy(warningBuffer, "saved registers not contiguous");
1210 // validate that saved registers are all within 6 slots abutting return address
1211 int registers[6];
1213 registers[i] = 0;
1219 registers[(cfaOffsetR15+56)/8] = UNWIND_X86_64_REG_R15;
1226 registers[(cfaOffsetR14+56)/8] = UNWIND_X86_64_REG_R14;
1233 registers[(cfaOffsetR13+56)/8] = UNWIND_X86_64_REG_R13;
1240 registers[(cfaOffsetR12+56)/8] = UNWIND_X86_64_REG_R12;
1247 registers[(cfaOffsetRBX+56)/8] = UNWIND_X86_64_REG_RBX;
1254 registers[(cfaOffsetRBP+56)/8] = UNWIND_X86_64_REG_RBP;
1257 // validate that saved registers are contiguous and abut return address on stack
1259 if ( registers[5-i] == 0 ) {
1260 strcpy(warningBuffer, "registers not save contiguously in stack");
1266 // the 10-bits are encoded differently depending on the number of registers saved
1271 if ( registers[j] < registers[i] )
1274 renumregs[i] = registers[i] - countless -1;
1327 const Registers_x86& registers)
1330 return registers.getRegister(prolog.cfaRegister) + prolog.cfaRegisterOffset;
1332 return evaluateExpression(prolog.cfaExpression, addressSpace, registers, 0);
1406 // scan which registers are saved
1498 // no registers saved, nothing more to encode
1506 strcpy(warningBuffer, "offset of saved registers too far to encode");
1525 strcpy(warningBuffer, "saved registers not contiguous");
1583 // validate that saved registers are all within 6 slots abutting return address
1584 int registers[6];
1586 registers[i] = 0;
1592 registers[(cfaOffsetEBX+28)/4] = UNWIND_X86_REG_EBX;
1599 registers[(cfaOffsetECX+28)/4] = UNWIND_X86_REG_ECX;
1606 registers[(cfaOffsetEDX+28)/4] = UNWIND_X86_REG_EDX;
1613 registers[(cfaOffsetEDI+28)/4] = UNWIND_X86_REG_EDI;
1620 registers[(cfaOffsetESI+28)/4] = UNWIND_X86_REG_ESI;
1627 registers[(cfaOffsetEBP+28)/4] = UNWIND_X86_REG_EBP;
1630 // validate that saved registers are contiguous and abut return address on stack
1632 if ( registers[5-i] == 0 ) {
1633 strcpy(warningBuffer, "registers not save contiguously in stack");
1639 // the 10-bits are encoded differently depending on the number of registers saved
1644 if ( registers[j] < registers[i] )
1647 renumregs[i] = registers[i] - countless -1;
1703 const Registers_ppc& registers)
1706 return registers.getRegister(prolog.cfaRegister) + prolog.cfaRegisterOffset;
1708 return evaluateExpression(prolog.cfaExpression, addressSpace, registers, 0);