Home | History | Annotate | Download | only in Unwind

Lines Matching refs:registers

23 #include "Registers.hpp"
38 Registers_x86 &registers);
43 static void frameUnwind(A &addressSpace, Registers_x86 &registers);
46 Registers_x86 &registers);
50 Registers_x86 &registers);
53 A &addressSpace, Registers_x86 &registers, bool indirectStackSize);
59 A &addressSpace, Registers_x86 &registers) {
63 addressSpace, registers);
66 addressSpace, registers, false);
69 addressSpace, registers, true);
77 A &addressSpace, Registers_x86 &registers) {
83 uint32_t savedRegisters = registers.getEBP() - 4 * savedRegistersOffset;
90 registers.setEBX(addressSpace.get32(savedRegisters));
93 registers.setECX(addressSpace.get32(savedRegisters));
96 registers.setEDX(addressSpace.get32(savedRegisters));
99 registers.setEDI(addressSpace.get32(savedRegisters));
102 registers.setESI(addressSpace.get32(savedRegisters));
114 frameUnwind(addressSpace, registers);
121 A &addressSpace, Registers_x86 &registers, bool indirectStackSize) {
187 // re-number registers back to standard numbers
203 uint32_t savedRegisters = registers.getSP() + stackSize - 4 - 4 * regCount;
207 registers.setEBX(addressSpace.get32(savedRegisters));
210 registers.setECX(addressSpace.get32(savedRegisters));
213 registers.setEDX(addressSpace.get32(savedRegisters));
216 registers.setEDI(addressSpace.get32(savedRegisters));
219 registers.setESI(addressSpace.get32(savedRegisters));
222 registers.setEBP(addressSpace.get32(savedRegisters));
232 framelessUnwind(addressSpace, savedRegisters, registers);
239 Registers_x86 &registers) {
240 typename A::pint_t bp = registers.getEBP();
242 registers.setEBP(addressSpace.get32(bp));
244 registers.setSP((uint32_t)bp + 8);
246 registers.setIP(addressSpace.get32(bp + 4));
252 Registers_x86 &registers) {
254 registers.setIP(addressSpace.get32(returnAddressLocation));
256 registers.setSP((uint32_t)returnAddressLocation + 4);
268 Registers_x86_64 &registers);
273 static void frameUnwind(A &addressSpace, Registers_x86_64 &registers);
275 Registers_x86_64 &registers);
279 Registers_x86_64 &registers);
282 A &addressSpace, Registers_x86_64 &registers, bool indirectStackSize);
288 A &addressSpace, Registers_x86_64 &registers) {
292 addressSpace, registers);
295 addressSpace, registers, false);
298 addressSpace, registers, true);
306 A &addressSpace, Registers_x86_64 &registers) {
312 uint64_t savedRegisters = registers.getRBP() - 8 * savedRegistersOffset;
319 registers.setRBX(addressSpace.get64(savedRegisters));
322 registers.setR12(addressSpace.get64(savedRegisters));
325 registers.setR13(addressSpace.get64(savedRegisters));
328 registers.setR14(addressSpace.get64(savedRegisters));
331 registers.setR15(addressSpace.get64(savedRegisters));
343 frameUnwind(addressSpace, registers);
350 Registers_x86_64 &registers, bool indirectStackSize) {
416 // re-number registers back to standard numbers
432 uint64_t savedRegisters = registers.getSP() + stackSize - 8 - 8 * regCount;
436 registers.setRBX(addressSpace.get64(savedRegisters));
439 registers.setR12(addressSpace.get64(savedRegisters));
442 registers.setR13(addressSpace.get64(savedRegisters));
445 registers.setR14(addressSpace.get64(savedRegisters));
448 registers.setR15(addressSpace.get64(savedRegisters));
451 registers.setRBP(addressSpace.get64(savedRegisters));
461 framelessUnwind(addressSpace, savedRegisters, registers);
468 Registers_x86_64 &registers) {
469 uint64_t rbp = registers.getRBP();
471 registers.setRBP(addressSpace.get64(rbp));
473 registers.setSP(rbp + 16);
475 registers.setIP(addressSpace.get64(rbp + 8));
481 Registers_x86_64 &registers) {
483 registers.setIP(addressSpace.get64(returnAddressLocation));
485 registers.setSP(returnAddressLocation + 8);
498 Registers_arm64 &registers);
506 Registers_arm64 &registers);
509 A &addressSpace, Registers_arm64 &registers);
515 A &addressSpace, Registers_arm64 &registers) {
519 addressSpace, registers);
522 addressSpace, registers);
530 Registers_arm64 &registers) {
534 uint64_t savedRegisterLoc = registers.getSP() + stackSize;
537 registers.setRegister(UNW_ARM64_X19, addressSpace.get64(savedRegisterLoc));
539 registers.setRegister(UNW_ARM64_X20, addressSpace.get64(savedRegisterLoc));
543 registers.setRegister(UNW_ARM64_X21, addressSpace.get64(savedRegisterLoc));
545 registers.setRegister(UNW_ARM64_X22, addressSpace.get64(savedRegisterLoc));
549 registers.setRegister(UNW_ARM64_X23, addressSpace.get64(savedRegisterLoc));
551 registers.setRegister(UNW_ARM64_X24, addressSpace.get64(savedRegisterLoc));
555 registers.setRegister(UNW_ARM64_X25, addressSpace.get64(savedRegisterLoc));
557 registers.setRegister(UNW_ARM64_X26, addressSpace.get64(savedRegisterLoc));
561 registers.setRegister(UNW_ARM64_X27, addressSpace.get64(savedRegisterLoc));
563 registers.setRegister(UNW_ARM64_X28, addressSpace.get64(savedRegisterLoc));
568 registers.setFloatRegister(UNW_ARM64_D8,
571 registers.setFloatRegister(UNW_ARM64_D9,
576 registers.setFloatRegister(UNW_ARM64_D10,
579 registers.setFloatRegister(UNW_ARM64_D11,
584 registers.setFloatRegister(UNW_ARM64_D12,
587 registers.setFloatRegister(UNW_ARM64_D13,
592 registers.setFloatRegister(UNW_ARM64_D14,
595 registers.setFloatRegister(UNW_ARM64_D15,
601 registers.setSP(savedRegisterLoc);
604 registers.setIP(registers.getRegister(UNW_ARM64_LR));
612 Registers_arm64 &registers) {
613 uint64_t savedRegisterLoc = registers.getFP() - 8;
616 registers.setRegister(UNW_ARM64_X19, addressSpace.get64(savedRegisterLoc));
618 registers.setRegister(UNW_ARM64_X20, addressSpace.get64(savedRegisterLoc));
622 registers.setRegister(UNW_ARM64_X21, addressSpace.get64(savedRegisterLoc));
624 registers.setRegister(UNW_ARM64_X22, addressSpace.get64(savedRegisterLoc));
628 registers.setRegister(UNW_ARM64_X23, addressSpace.get64(savedRegisterLoc));
630 registers.setRegister(UNW_ARM64_X24, addressSpace.get64(savedRegisterLoc));
634 registers.setRegister(UNW_ARM64_X25, addressSpace.get64(savedRegisterLoc));
636 registers.setRegister(UNW_ARM64_X26, addressSpace.get64(savedRegisterLoc));
640 registers.setRegister(UNW_ARM64_X27, addressSpace.get64(savedRegisterLoc));
642 registers.setRegister(UNW_ARM64_X28, addressSpace.get64(savedRegisterLoc));
647 registers.setFloatRegister(UNW_ARM64_D8,
650 registers.setFloatRegister(UNW_ARM64_D9,
655 registers.setFloatRegister(UNW_ARM64_D10,
658 registers.setFloatRegister(UNW_ARM64_D11,
663 registers.setFloatRegister(UNW_ARM64_D12,
666 registers.setFloatRegister(UNW_ARM64_D13,
671 registers.setFloatRegister(UNW_ARM64_D14,
674 registers.setFloatRegister(UNW_ARM64_D15,
679 uint64_t fp = registers.getFP();
681 registers.setFP(addressSpace.get64(fp));
683 registers.setSP(fp + 16);
685 registers.setIP(addressSpace.get64(fp + 8));