static int reg_offset[] = { REG_OFFSET (eax), REG_OFFSET (ecx), REG_OFFSET (edx), REG_OFFSET (ebx), REG_OFFSET (uesp), REG_OFFSET (ebp), REG_OFFSET (esi), REG_OFFSET (edi), REG_OFFSET (eip), REG_OFFSET (efl), REG_OFFSET (cs), REG_OFFSET (ss), REG_OFFSET (ds), REG_OFFSET (es), REG_OFFSET (fs), REG_OFFSET (gs) }; /* Offset to the greg_t location where REG is stored. */ #define CREG_OFFSET(reg) (REG_##reg * 4) /* At CREG_OFFSET[N] is the offset to the greg_t location where the GDB register N is stored. */ static int creg_offset[] = { CREG_OFFSET (EAX), CREG_OFFSET (ECX), CREG_OFFSET (EDX), CREG_OFFSET (EBX), CREG_OFFSET (UESP), CREG_OFFSET (EBP), CREG_OFFSET (ESI), CREG_OFFSET (EDI), CREG_OFFSET (EIP), CREG_OFFSET (EFL), CREG_OFFSET (CS), CREG_OFFSET (SS), CREG_OFFSET (DS), CREG_OFFSET (ES), CREG_OFFSET (FS), CREG_OFFSET (GS) }; #define REG_ADDR(state, regnum) ((char *)(state) + reg_offset[regnum]) #define CREG_ADDR(state, regnum) ((const char *)(state) + creg_offset[regnum]) /* Get the whole floating-point state of THREAD and record the values of the corresponding (pseudo) registers. */ static void fetch_fpregs (struct regcache *regcache, struct proc *thread) {
REG_OFFSET (r24), REG_OFFSET (r25), REG_OFFSET (r26), REG_OFFSET (r27), /* gp sp s8(30) == fp(72) ra */ REG_OFFSET (r28), REG_OFFSET (r29), REG_OFFSET (r30), REG_OFFSET (r31), /* sr(32) PS_REGNUM */ EREG_OFFSET (coproc_state), /* lo(33) hi(34) */ REG_OFFSET (mdlo), REG_OFFSET (mdhi), /* bad(35) cause(36) pc(37) */ EREG_OFFSET (address), EREG_OFFSET (cause), REG_OFFSET (pc), /* f0(38) f1(39) f2(40) f3(41) */ CREG_OFFSET (r0), CREG_OFFSET (r1), CREG_OFFSET (r2), CREG_OFFSET (r3), CREG_OFFSET (r4), CREG_OFFSET (r5), CREG_OFFSET (r6), CREG_OFFSET (r7), CREG_OFFSET (r8), CREG_OFFSET (r9), CREG_OFFSET (r10), CREG_OFFSET (r11), CREG_OFFSET (r12), CREG_OFFSET (r13), CREG_OFFSET (r14), CREG_OFFSET (r15), CREG_OFFSET (r16), CREG_OFFSET (r17), CREG_OFFSET (r18), CREG_OFFSET (r19), CREG_OFFSET (r20), CREG_OFFSET (r21), CREG_OFFSET (r22), CREG_OFFSET (r23), CREG_OFFSET (r24), CREG_OFFSET (r25), CREG_OFFSET (r26), CREG_OFFSET (r27), CREG_OFFSET (r28), CREG_OFFSET (r29), CREG_OFFSET (r30), CREG_OFFSET (r31), /* fsr(70) fir(71) fp(72) == s8(30) */ CREG_OFFSET (csr), CREG_OFFSET (esr), REG_OFFSET (r30) }; #else /* If the compiler does not grok the above defines */ static int reg_offset[] = {