#define GDB_CND 66 #define GDB_LR 67 #define GDB_CNT 68 #define GDB_XER 69 #define GDB_MQ 70 /* Not supported */ #define GP(n) GRLL(gp##n, \ regs.gpr, \ GDB_GPR##n, \ sizeof(unsigned int) * n, \ sizeof(unsigned int), \ sizeof(unsigned int)) /* General */ struct reg_location_list grll[] = { GRLL(gp0, fixreg[0], GDB_GPR0, 0, 0, 0), GRLL(gp1, fixreg[1], GDB_GPR1, 0, 0, 0), GRLL(gp2, fixreg[2], GDB_GPR2, 0, 0, 0), GRLL(gp3, fixreg[3], GDB_GPR3, 0, 0, 0), GRLL(gp4, fixreg[4], GDB_GPR4, 0, 0, 0), GRLL(gp5, fixreg[5], GDB_GPR5, 0, 0, 0), GRLL(gp6, fixreg[6], GDB_GPR6, 0, 0, 0), GRLL(gp7, fixreg[7], GDB_GPR7, 0, 0, 0), GRLL(gp8, fixreg[8], GDB_GPR8, 0, 0, 0), GRLL(gp9, fixreg[9], GDB_GPR9, 0, 0, 0), GRLL(gp10, fixreg[10], GDB_GPR10, 0, 0, 0), GRLL(gp11, fixreg[11], GDB_GPR11, 0, 0, 0), GRLL(gp12, fixreg[12], GDB_GPR12, 0, 0, 0), GRLL(gp13, fixreg[13], GDB_GPR13, 0, 0, 0), GRLL(gp14, fixreg[14], GDB_GPR14, 0, 0, 0), GRLL(gp15, fixreg[15], GDB_GPR15, 0, 0, 0),
#define GDB_R12 12 #define GDB_R13 13 #define GDB_R14 14 #define GDB_R15 15 #define GDB_RIP 16 #define GDB_RFLAGS 17 #define GDB_CS 18 #define GDB_SS 19 #define GDB_DS 20 #define GDB_ES 21 #define GDB_FS 22 #define GDB_GS 23 struct reg_location_list grll[] = { /* general */ GRLL(r15, r_r15, GDB_R15, 0, 0, 0), GRLL(r14, r_r14, GDB_R14, 0, 0, 0), GRLL(r13, r_r13, GDB_R13, 0, 0, 0), GRLL(r12, r_r12, GDB_R12, 0, 0, 0), GRLL(r11, r_r11, GDB_R11, 0, 0, 0), GRLL(r10, r_r10, GDB_R10, 0, 0, 0), GRLL(r9, r_r9, GDB_R9, 0, 0, 0), GRLL(r8, r_r8, GDB_R8, 0, 0, 0), GRLL(rdi, r_rdi, GDB_RDI, 0, 0, 0), GRLL(rsi, r_rsi, GDB_RSI, 0, 0, 0), GRLL(rbp, r_rbp, GDB_RBP, 0, 0, 0), GRLL(rbx, r_rbx, GDB_RBX, 0, 0, 0), GRLL(rdx, r_rdx, GDB_RDX, 0, 0, 0), GRLL(rcx, r_rcx, GDB_RCX, 0, 0, 0), GRLL(rax, r_rax, GDB_RAX, 0, 0, 0), /* trapno */
#define GDB_ESP 4 #define GDB_EBP 5 #define GDB_ESI 6 #define GDB_EDI 7 #define GDB_EIP 8 #define GDB_EFLAGS 9 #define GDB_CS 10 #define GDB_SS 11 #define GDB_DS 12 #define GDB_ES 13 #define GDB_FS 14 #define GDB_GS 15 #define GDB_ORIG_EAX 41 struct reg_location_list grll[] = { GRLL(ebx, regs.ebx, GDB_EBX, 0, 0, 0), GRLL(ecx, regs.ecx, GDB_ECX, 0, 0, 0), GRLL(edx, regs.edx, GDB_EDX, 0, 0, 0), GRLL(esi, regs.esi, GDB_ESI, 0, 0, 0), GRLL(edi, regs.edi, GDB_EDI, 0, 0, 0), GRLL(ebp, regs.ebp, GDB_EBP, 0, 0, 0), GRLL(eax, regs.eax, GDB_EAX, 0, 0, 0), GRLL(ds, regs.xds, GDB_DS, 0, 2, 4), GRLL(es, regs.xes, GDB_ES, 0, 2, 4), GRLL(fs, regs.xfs, GDB_FS, 0, 2, 4), GRLL(gs, regs.xgs, GDB_GS, 0, 2, 4), GRLL(orig_eax, regs.orig_eax, GDB_ORIG_EAX, 0, 0, 0), GRLL(eip, regs.eip, GDB_EIP, 0, 0, 0), GRLL(cs, regs.xcs, GDB_CS, 0, 2, 4), GRLL(eflags, regs.eflags, GDB_EFLAGS, 0, 0, 0), GRLL(esp, regs.esp, GDB_ESP, 0, 0, 0),
#define GDB_STATUS 32 /* ? */ #define GDB_LO 33 #define GDB_HI 34 #define GDB_BADVADDR 35 #define GDB_CAUSE 36 #define GDB_PC 37 #ifdef DEEBE_MIPS_64BIT_COMPAT #define GDB_GREG_SIZE 8 #else #define GDB_GREG_SIZE 0 #endif /* General */ struct reg_location_list grll[] = { GRLL(zero, r_regs[0], GDB_ZERO, 0, 0, GDB_GREG_SIZE), GRLL(at, r_regs[1], GDB_AT, 0, 0, GDB_GREG_SIZE), GRLL(v0, r_regs[2], GDB_V0, 0, 0, GDB_GREG_SIZE), GRLL(v1, r_regs[3], GDB_V1, 0, 0, GDB_GREG_SIZE), GRLL(a0, r_regs[4], GDB_A0, 0, 0, GDB_GREG_SIZE), GRLL(a1, r_regs[5], GDB_A1, 0, 0, GDB_GREG_SIZE), GRLL(a2, r_regs[6], GDB_A2, 0, 0, GDB_GREG_SIZE), GRLL(a3, r_regs[7], GDB_A3, 0, 0, GDB_GREG_SIZE), GRLL(t0, r_regs[8], GDB_T0, 0, 0, GDB_GREG_SIZE), GRLL(t1, r_regs[9], GDB_T1, 0, 0, GDB_GREG_SIZE), GRLL(t2, r_regs[10], GDB_T2, 0, 0, GDB_GREG_SIZE), GRLL(t3, r_regs[11], GDB_T3, 0, 0, GDB_GREG_SIZE), GRLL(t4, r_regs[12], GDB_T4, 0, 0, GDB_GREG_SIZE), GRLL(t5, r_regs[13], GDB_T5, 0, 0, GDB_GREG_SIZE), GRLL(t6, r_regs[14], GDB_T6, 0, 0, GDB_GREG_SIZE), GRLL(t7, r_regs[15], GDB_T7, 0, 0, GDB_GREG_SIZE),
# define ENDIAN_OFFSET 4 #endif /* General */ #undef GRLL #define GRLL(N, E, GDB, O, S, GDB_S) \ { \ .off = (O) + (8 * (E)), \ .size = (S), \ .gdb = (GDB), \ .name = #N, \ .gdb_size = (GDB_S), \ } struct reg_location_list grll[] = { GRLL(zero, 0, GDB_ZERO, ENDIAN_OFFSET, 4, 4), GRLL(at, 1, GDB_AT, ENDIAN_OFFSET, 4, 4), GRLL(v0, 2, GDB_V0, ENDIAN_OFFSET, 4, 4), GRLL(v1, 3, GDB_V1, ENDIAN_OFFSET, 4, 4), GRLL(a0, 4, GDB_A0, ENDIAN_OFFSET, 4, 4), GRLL(a1, 5, GDB_A1, ENDIAN_OFFSET, 4, 4), GRLL(a2, 6, GDB_A2, ENDIAN_OFFSET, 4, 4), GRLL(a3, 7, GDB_A3, ENDIAN_OFFSET, 4, 4), GRLL(t0, 8, GDB_T0, ENDIAN_OFFSET, 4, 4), GRLL(t1, 9, GDB_T1, ENDIAN_OFFSET, 4, 4), GRLL(t2, 10, GDB_T2, ENDIAN_OFFSET, 4, 4), GRLL(t3, 11, GDB_T3, ENDIAN_OFFSET, 4, 4), GRLL(t4, 12, GDB_T4, ENDIAN_OFFSET, 4, 4), GRLL(t5, 13, GDB_T5, ENDIAN_OFFSET, 4, 4), GRLL(t6, 14, GDB_T6, ENDIAN_OFFSET, 4, 4), GRLL(t7, 15, GDB_T7, ENDIAN_OFFSET, 4, 4),