58a59,63
> memset(&regs, 0, sizeof(regs));
> memset(&oldregs, 0, sizeof(regs));
> memset(&fpregs, 0, sizeof(vfp_regs));
> memset(&oldfpregs, 0, sizeof(vfp_regs));
>
60,61d64
< memset(&regs, 0, sizeof(regs));
< memset(&oldregs, 0, sizeof(regs));
63a67,68
>
> assert(sizeof(regs.uregs)/sizeof(regs.uregs[0]) > CPSR);
70c75
< uint32_t message[numregs + 1];
---
> uint64_t message[numregs + 1];
75c80
< message[0] = message[0] | (1 << x);
---
> message[0] = message[0] | (1ULL << x);
100c105
< assert(num < numregs && num >= 0);
---
> assert(num <= CPSR && num >= 0);
103a109,119
> uint64_t
> ARMTraceChild::getFpRegs(vfp_regs &my_fp_regs, int num)
> {
> assert(num >= F0 && num < numregs);
> if (num == FPSCR)
> return my_fp_regs.fpscr;
>
> num -= F0;
> return my_fp_regs.fpregs[num];
> }
>
112a129,136
> const uint32_t get_vfp_regs = 32;
>
> oldfpregs = fpregs;
> if (ptrace((__ptrace_request)get_vfp_regs, pid, 0, &fpregs) != 0) {
> cerr << "update: " << strerror(errno) << endl;
> return false;
> }
>
114a139
>
121c146,149
< return getRegs(regs, num);
---
> if (num <= CPSR)
> return getRegs(regs, num);
> else
> return (int64_t)getFpRegs(fpregs, num);
127c155,158
< return getRegs(oldregs, num);
---
> if (num <= CPSR)
> return getRegs(oldregs, num);
> else
> return (int64_t)getFpRegs(oldfpregs, num);