This is an automated email from Gerrit.

Peter Mamonov ([email protected]) just uploaded a new patch set to Gerrit, 
which you can find at http://openocd.zylin.com/4025

-- gerrit

commit d8b497ecc090acbec565b32a2524a6e73e3546d4
Author: Peter Mamonov <[email protected]>
Date:   Mon Aug 10 18:54:35 2015 +0400

    mips64: add CP0 and CP1 (aka FPU) registers
    
    Change-Id: I1a5c19c185d46d29d03233f3b5d1fe3f482d1178
    Signed-off-by: Peter Mamonov <[email protected]>

diff --git a/src/target/mips64.c b/src/target/mips64.c
index 3b7e1f2..4474fd7 100644
--- a/src/target/mips64.c
+++ b/src/target/mips64.c
@@ -43,117 +43,166 @@ static const struct {
        const char *feature;
        int flag;
 } mips64_regs[] = {
-       {  0,  "r0", REG_TYPE_INT, NULL, "org.gnu.gdb.mips.cpu", 0 },
-       {  1,  "r1", REG_TYPE_INT, NULL, "org.gnu.gdb.mips.cpu", 0 },
-       {  2,  "r2", REG_TYPE_INT, NULL, "org.gnu.gdb.mips.cpu", 0 },
-       {  3,  "r3", REG_TYPE_INT, NULL, "org.gnu.gdb.mips.cpu", 0 },
-       {  4,  "r4", REG_TYPE_INT, NULL, "org.gnu.gdb.mips.cpu", 0 },
-       {  5,  "r5", REG_TYPE_INT, NULL, "org.gnu.gdb.mips.cpu", 0 },
-       {  6,  "r6", REG_TYPE_INT, NULL, "org.gnu.gdb.mips.cpu", 0 },
-       {  7,  "r7", REG_TYPE_INT, NULL, "org.gnu.gdb.mips.cpu", 0 },
-       {  8,  "r8", REG_TYPE_INT, NULL, "org.gnu.gdb.mips.cpu", 0 },
-       {  9,  "r9", REG_TYPE_INT, NULL, "org.gnu.gdb.mips.cpu", 0 },
-       { 10, "r10", REG_TYPE_INT, NULL, "org.gnu.gdb.mips.cpu", 0 },
-       { 11, "r11", REG_TYPE_INT, NULL, "org.gnu.gdb.mips.cpu", 0 },
-       { 12, "r12", REG_TYPE_INT, NULL, "org.gnu.gdb.mips.cpu", 0 },
-       { 13, "r13", REG_TYPE_INT, NULL, "org.gnu.gdb.mips.cpu", 0 },
-       { 14, "r14", REG_TYPE_INT, NULL, "org.gnu.gdb.mips.cpu", 0 },
-       { 15, "r15", REG_TYPE_INT, NULL, "org.gnu.gdb.mips.cpu", 0 },
-       { 16, "r16", REG_TYPE_INT, NULL, "org.gnu.gdb.mips.cpu", 0 },
-       { 17, "r17", REG_TYPE_INT, NULL, "org.gnu.gdb.mips.cpu", 0 },
-       { 18, "r18", REG_TYPE_INT, NULL, "org.gnu.gdb.mips.cpu", 0 },
-       { 19, "r19", REG_TYPE_INT, NULL, "org.gnu.gdb.mips.cpu", 0 },
-       { 20, "r20", REG_TYPE_INT, NULL, "org.gnu.gdb.mips.cpu", 0 },
-       { 21, "r21", REG_TYPE_INT, NULL, "org.gnu.gdb.mips.cpu", 0 },
-       { 22, "r22", REG_TYPE_INT, NULL, "org.gnu.gdb.mips.cpu", 0 },
-       { 23, "r23", REG_TYPE_INT, NULL, "org.gnu.gdb.mips.cpu", 0 },
-       { 24, "r24", REG_TYPE_INT, NULL, "org.gnu.gdb.mips.cpu", 0 },
-       { 25, "r25", REG_TYPE_INT, NULL, "org.gnu.gdb.mips.cpu", 0 },
-       { 26, "r26", REG_TYPE_INT, NULL, "org.gnu.gdb.mips.cpu", 0 },
-       { 27, "r27", REG_TYPE_INT, NULL, "org.gnu.gdb.mips.cpu", 0 },
-       { 28, "r28", REG_TYPE_INT, NULL, "org.gnu.gdb.mips.cpu", 0 },
-       { 29, "r29", REG_TYPE_INT, NULL, "org.gnu.gdb.mips.cpu", 0 },
-       { 30, "r30", REG_TYPE_INT, NULL, "org.gnu.gdb.mips.cpu", 0 },
-       { 31, "r31", REG_TYPE_INT, NULL, "org.gnu.gdb.mips.cpu", 0 },
-       { 32, "status", REG_TYPE_INT, NULL, "org.gnu.gdb.mips.cp0", 0 },
-       { 33, "lo", REG_TYPE_INT, NULL, "org.gnu.gdb.mips.cpu", 0 },
-       { 34, "hi", REG_TYPE_INT, NULL, "org.gnu.gdb.mips.cpu", 0 },
-       { 35, "badvaddr", REG_TYPE_INT, NULL, "org.gnu.gdb.mips.cp0", 0 },
-       { 36, "cause", REG_TYPE_INT, NULL, "org.gnu.gdb.mips.cp0", 0 },
-       { 37, "debug", REG_TYPE_INT, NULL, "org.gnu.gdb.mips.cp0", 0 },
-       { 38, "processorID", REG_TYPE_INT, NULL, "org.gnu.gdb.mips.cp0", 0 },
-       { 39, "pc", REG_TYPE_INT, NULL, "org.gnu.gdb.mips.cpu", 0 },
-
-       { MIPS64_PC + 1,  "f0", REG_TYPE_IEEE_SINGLE, NULL,
-                "org.gnu.gdb.mips.fpu", MIPS32_GDB_DUMMY_FP_REG },
-       { MIPS64_PC + 2,  "f1", REG_TYPE_IEEE_SINGLE, NULL,
-                "org.gnu.gdb.mips.fpu", MIPS32_GDB_DUMMY_FP_REG },
-       { MIPS64_PC + 3,  "f2", REG_TYPE_IEEE_SINGLE, NULL,
-                "org.gnu.gdb.mips.fpu", MIPS32_GDB_DUMMY_FP_REG },
-       { MIPS64_PC + 4,  "f3", REG_TYPE_IEEE_SINGLE, NULL,
-                "org.gnu.gdb.mips.fpu", MIPS32_GDB_DUMMY_FP_REG },
-       { MIPS64_PC + 5, "f4", REG_TYPE_IEEE_SINGLE, NULL,
-                "org.gnu.gdb.mips.fpu", MIPS32_GDB_DUMMY_FP_REG },
-       { MIPS64_PC + 6,  "f5", REG_TYPE_IEEE_SINGLE, NULL,
-                "org.gnu.gdb.mips.fpu", MIPS32_GDB_DUMMY_FP_REG },
-       { MIPS64_PC + 7,  "f6", REG_TYPE_IEEE_SINGLE, NULL,
-                "org.gnu.gdb.mips.fpu", MIPS32_GDB_DUMMY_FP_REG },
-       { MIPS64_PC + 8,  "f7", REG_TYPE_IEEE_SINGLE, NULL,
-                "org.gnu.gdb.mips.fpu", MIPS32_GDB_DUMMY_FP_REG },
-       { MIPS64_PC + 9,  "f8", REG_TYPE_IEEE_SINGLE, NULL,
-                "org.gnu.gdb.mips.fpu", MIPS32_GDB_DUMMY_FP_REG },
-       { MIPS64_PC + 10,  "f9", REG_TYPE_IEEE_SINGLE, NULL,
-                "org.gnu.gdb.mips.fpu", MIPS32_GDB_DUMMY_FP_REG },
-       { MIPS64_PC + 11, "f10", REG_TYPE_IEEE_SINGLE, NULL,
-                "org.gnu.gdb.mips.fpu", MIPS32_GDB_DUMMY_FP_REG },
-       { MIPS64_PC + 12, "f11", REG_TYPE_IEEE_SINGLE, NULL,
-                "org.gnu.gdb.mips.fpu", MIPS32_GDB_DUMMY_FP_REG },
-       { MIPS64_PC + 13, "f12", REG_TYPE_IEEE_SINGLE, NULL,
-                "org.gnu.gdb.mips.fpu", MIPS32_GDB_DUMMY_FP_REG },
-       { MIPS64_PC + 14, "f13", REG_TYPE_IEEE_SINGLE, NULL,
-                "org.gnu.gdb.mips.fpu", MIPS32_GDB_DUMMY_FP_REG },
-       { MIPS64_PC + 15, "f14", REG_TYPE_IEEE_SINGLE, NULL,
-                "org.gnu.gdb.mips.fpu", MIPS32_GDB_DUMMY_FP_REG },
-       { MIPS64_PC + 16, "f15", REG_TYPE_IEEE_SINGLE, NULL,
-                "org.gnu.gdb.mips.fpu", MIPS32_GDB_DUMMY_FP_REG },
-       { MIPS64_PC + 17, "f16", REG_TYPE_IEEE_SINGLE, NULL,
-                "org.gnu.gdb.mips.fpu", MIPS32_GDB_DUMMY_FP_REG },
-       { MIPS64_PC + 18, "f17", REG_TYPE_IEEE_SINGLE, NULL,
-                "org.gnu.gdb.mips.fpu", MIPS32_GDB_DUMMY_FP_REG },
-       { MIPS64_PC + 19, "f18", REG_TYPE_IEEE_SINGLE, NULL,
-                "org.gnu.gdb.mips.fpu", MIPS32_GDB_DUMMY_FP_REG },
-       { MIPS64_PC + 20, "f19", REG_TYPE_IEEE_SINGLE, NULL,
-                "org.gnu.gdb.mips.fpu", MIPS32_GDB_DUMMY_FP_REG },
-       { MIPS64_PC + 21, "f20", REG_TYPE_IEEE_SINGLE, NULL,
-                "org.gnu.gdb.mips.fpu", MIPS32_GDB_DUMMY_FP_REG },
-       { MIPS64_PC + 22, "f21", REG_TYPE_IEEE_SINGLE, NULL,
-                "org.gnu.gdb.mips.fpu", MIPS32_GDB_DUMMY_FP_REG },
-       { MIPS64_PC + 23, "f22", REG_TYPE_IEEE_SINGLE, NULL,
-                "org.gnu.gdb.mips.fpu", MIPS32_GDB_DUMMY_FP_REG },
-       { MIPS64_PC + 24, "f23", REG_TYPE_IEEE_SINGLE, NULL,
-                "org.gnu.gdb.mips.fpu", MIPS32_GDB_DUMMY_FP_REG },
-       { MIPS64_PC + 25, "f24", REG_TYPE_IEEE_SINGLE, NULL,
-                "org.gnu.gdb.mips.fpu", MIPS32_GDB_DUMMY_FP_REG },
-       { MIPS64_PC + 26, "f25", REG_TYPE_IEEE_SINGLE, NULL,
-                "org.gnu.gdb.mips.fpu", MIPS32_GDB_DUMMY_FP_REG },
-       { MIPS64_PC + 27, "f26", REG_TYPE_IEEE_SINGLE, NULL,
-                "org.gnu.gdb.mips.fpu", MIPS32_GDB_DUMMY_FP_REG },
-       { MIPS64_PC + 28, "f27", REG_TYPE_IEEE_SINGLE, NULL,
-                "org.gnu.gdb.mips.fpu", MIPS32_GDB_DUMMY_FP_REG },
-       { MIPS64_PC + 29, "f28", REG_TYPE_IEEE_SINGLE, NULL,
-                "org.gnu.gdb.mips.fpu", MIPS32_GDB_DUMMY_FP_REG },
-       { MIPS64_PC + 30, "f29", REG_TYPE_IEEE_SINGLE, NULL,
-                "org.gnu.gdb.mips.fpu", MIPS32_GDB_DUMMY_FP_REG },
-       { MIPS64_PC + 31, "f30", REG_TYPE_IEEE_SINGLE, NULL,
-                "org.gnu.gdb.mips.fpu", MIPS32_GDB_DUMMY_FP_REG },
-       { MIPS64_PC + 32, "f31", REG_TYPE_IEEE_SINGLE, NULL,
-                "org.gnu.gdb.mips.fpu", MIPS32_GDB_DUMMY_FP_REG },
-       { MIPS64_PC + 33, "fcsr", REG_TYPE_INT, "float",
-               "org.gnu.gdb.mips.fpu", MIPS32_GDB_DUMMY_FP_REG },
-       { MIPS64_PC + 34, "fir", REG_TYPE_INT, "float",
-               "org.gnu.gdb.mips.fpu", MIPS32_GDB_DUMMY_FP_REG }
+       {  0,  "r0", REG_TYPE_UINT64, NULL, "org.gnu.gdb.mips.cpu", 0 },
+       {  1,  "r1", REG_TYPE_UINT64, NULL, "org.gnu.gdb.mips.cpu", 0 },
+       {  2,  "r2", REG_TYPE_UINT64, NULL, "org.gnu.gdb.mips.cpu", 0 },
+       {  3,  "r3", REG_TYPE_UINT64, NULL, "org.gnu.gdb.mips.cpu", 0 },
+       {  4,  "r4", REG_TYPE_UINT64, NULL, "org.gnu.gdb.mips.cpu", 0 },
+       {  5,  "r5", REG_TYPE_UINT64, NULL, "org.gnu.gdb.mips.cpu", 0 },
+       {  6,  "r6", REG_TYPE_UINT64, NULL, "org.gnu.gdb.mips.cpu", 0 },
+       {  7,  "r7", REG_TYPE_UINT64, NULL, "org.gnu.gdb.mips.cpu", 0 },
+       {  8,  "r8", REG_TYPE_UINT64, NULL, "org.gnu.gdb.mips.cpu", 0 },
+       {  9,  "r9", REG_TYPE_UINT64, NULL, "org.gnu.gdb.mips.cpu", 0 },
+       { 10, "r10", REG_TYPE_UINT64, NULL, "org.gnu.gdb.mips.cpu", 0 },
+       { 11, "r11", REG_TYPE_UINT64, NULL, "org.gnu.gdb.mips.cpu", 0 },
+       { 12, "r12", REG_TYPE_UINT64, NULL, "org.gnu.gdb.mips.cpu", 0 },
+       { 13, "r13", REG_TYPE_UINT64, NULL, "org.gnu.gdb.mips.cpu", 0 },
+       { 14, "r14", REG_TYPE_UINT64, NULL, "org.gnu.gdb.mips.cpu", 0 },
+       { 15, "r15", REG_TYPE_UINT64, NULL, "org.gnu.gdb.mips.cpu", 0 },
+       { 16, "r16", REG_TYPE_UINT64, NULL, "org.gnu.gdb.mips.cpu", 0 },
+       { 17, "r17", REG_TYPE_UINT64, NULL, "org.gnu.gdb.mips.cpu", 0 },
+       { 18, "r18", REG_TYPE_UINT64, NULL, "org.gnu.gdb.mips.cpu", 0 },
+       { 19, "r19", REG_TYPE_UINT64, NULL, "org.gnu.gdb.mips.cpu", 0 },
+       { 20, "r20", REG_TYPE_UINT64, NULL, "org.gnu.gdb.mips.cpu", 0 },
+       { 21, "r21", REG_TYPE_UINT64, NULL, "org.gnu.gdb.mips.cpu", 0 },
+       { 22, "r22", REG_TYPE_UINT64, NULL, "org.gnu.gdb.mips.cpu", 0 },
+       { 23, "r23", REG_TYPE_UINT64, NULL, "org.gnu.gdb.mips.cpu", 0 },
+       { 24, "r24", REG_TYPE_UINT64, NULL, "org.gnu.gdb.mips.cpu", 0 },
+       { 25, "r25", REG_TYPE_UINT64, NULL, "org.gnu.gdb.mips.cpu", 0 },
+       { 26, "r26", REG_TYPE_UINT64, NULL, "org.gnu.gdb.mips.cpu", 0 },
+       { 27, "r27", REG_TYPE_UINT64, NULL, "org.gnu.gdb.mips.cpu", 0 },
+       { 28, "r28", REG_TYPE_UINT64, NULL, "org.gnu.gdb.mips.cpu", 0 },
+       { 29, "r29", REG_TYPE_UINT64, NULL, "org.gnu.gdb.mips.cpu", 0 },
+       { 30, "r30", REG_TYPE_UINT64, NULL, "org.gnu.gdb.mips.cpu", 0 },
+       { 31, "r31", REG_TYPE_UINT64, NULL, "org.gnu.gdb.mips.cpu", 0 },
+       { 32, "lo", REG_TYPE_UINT64, NULL, "org.gnu.gdb.mips.cpu", 0 },
+       { 33, "hi", REG_TYPE_UINT64, NULL, "org.gnu.gdb.mips.cpu", 0 },
+       { MIPS64_NUM_CORE_REGS + 0, "pc", REG_TYPE_UINT64, NULL, 
"org.gnu.gdb.mips.cpu", 0 },
+       { MIPS64_NUM_CORE_REGS + 1, "Random", REG_TYPE_UINT32, NULL, 
"org.gnu.gdb.mips.cp0", 0 },
+       { MIPS64_NUM_CORE_REGS + 2, "Entrylo_0", REG_TYPE_UINT64, NULL, 
"org.gnu.gdb.mips.cp0", 0 },
+       { MIPS64_NUM_CORE_REGS + 3, "Entrylo_1", REG_TYPE_UINT64, NULL, 
"org.gnu.gdb.mips.cp0", 0 },
+       { MIPS64_NUM_CORE_REGS + 4, "Context", REG_TYPE_UINT64, NULL, 
"org.gnu.gdb.mips.cp0", 0 },
+       { MIPS64_NUM_CORE_REGS + 5, "Pagemask", REG_TYPE_UINT32, NULL, 
"org.gnu.gdb.mips.cp0", 0 },
+       { MIPS64_NUM_CORE_REGS + 6, "Wired", REG_TYPE_UINT32, NULL, 
"org.gnu.gdb.mips.cp0", 0 },
+       { MIPS64_NUM_CORE_REGS + 7, "badvaddr", REG_TYPE_UINT64, NULL, 
"org.gnu.gdb.mips.cp0", 0 },
+       { MIPS64_NUM_CORE_REGS + 8, "Count", REG_TYPE_UINT32, NULL, 
"org.gnu.gdb.mips.cp0", 0 },
+       { MIPS64_NUM_CORE_REGS + 9, "EntryHi", REG_TYPE_UINT64, NULL, 
"org.gnu.gdb.mips.cp0", 0 },
+       { MIPS64_NUM_CORE_REGS + 10, "Compare", REG_TYPE_UINT32, NULL, 
"org.gnu.gdb.mips.cp0", 0 },
+       { MIPS64_NUM_CORE_REGS + 11, "status", REG_TYPE_UINT32, NULL, 
"org.gnu.gdb.mips.cp0", 0 },
+       { MIPS64_NUM_CORE_REGS + 12, "cause", REG_TYPE_UINT32, NULL, 
"org.gnu.gdb.mips.cp0", 0 },
+       { MIPS64_NUM_CORE_REGS + 13, "EPC", REG_TYPE_UINT64, NULL, 
"org.gnu.gdb.mips.cp0", 0 },
+       { MIPS64_NUM_CORE_REGS + 14, "PrID", REG_TYPE_UINT32, NULL, 
"org.gnu.gdb.mips.cp0", 0 },
+       { MIPS64_NUM_CORE_REGS + 15, "Config", REG_TYPE_UINT32, NULL, 
"org.gnu.gdb.mips.cp0", 0 },
+       { MIPS64_NUM_CORE_REGS + 16, "LLA", REG_TYPE_UINT32, NULL, 
"org.gnu.gdb.mips.cp0", 0 },
+       { MIPS64_NUM_CORE_REGS + 17, "WatchLo0", REG_TYPE_UINT64, NULL, 
"org.gnu.gdb.mips.cp0", 0 },
+       { MIPS64_NUM_CORE_REGS + 18, "WatchLo1", REG_TYPE_UINT64, NULL, 
"org.gnu.gdb.mips.cp0", 0 },
+       { MIPS64_NUM_CORE_REGS + 19, "WatchHi0", REG_TYPE_UINT32, NULL, 
"org.gnu.gdb.mips.cp0", 0 },
+       { MIPS64_NUM_CORE_REGS + 20, "WatchHi1", REG_TYPE_UINT32, NULL, 
"org.gnu.gdb.mips.cp0", 0 },
+       { MIPS64_NUM_CORE_REGS + 21, "Xcontext", REG_TYPE_UINT64, NULL, 
"org.gnu.gdb.mips.cp0", 0 },
+       { MIPS64_NUM_CORE_REGS + 22, "ChipMemCtrl", REG_TYPE_UINT32, NULL, 
"org.gnu.gdb.mips.cp0", 0 },
+       { MIPS64_NUM_CORE_REGS + 23, "Debug", REG_TYPE_UINT32, NULL, 
"org.gnu.gdb.mips.cp0", 0 },
+       { MIPS64_NUM_CORE_REGS + 24, "Perfcount, sel=0", REG_TYPE_UINT32, NULL, 
"org.gnu.gdb.mips.cp0", 0 },
+       { MIPS64_NUM_CORE_REGS + 25, "Perfcount, sel=1", REG_TYPE_UINT64, NULL, 
"org.gnu.gdb.mips.cp0", 0 },
+       { MIPS64_NUM_CORE_REGS + 26, "Perfcount, sel=2", REG_TYPE_UINT32, NULL, 
"org.gnu.gdb.mips.cp0", 0 },
+       { MIPS64_NUM_CORE_REGS + 27, "Perfcount, sel=3", REG_TYPE_UINT64, NULL, 
"org.gnu.gdb.mips.cp0", 0 },
+       { MIPS64_NUM_CORE_REGS + 28, "ECC", REG_TYPE_UINT32, NULL, 
"org.gnu.gdb.mips.cp0", 0 },
+       { MIPS64_NUM_CORE_REGS + 29, "CacheErr", REG_TYPE_UINT32, NULL, 
"org.gnu.gdb.mips.cp0", 0 },
+       { MIPS64_NUM_CORE_REGS + 30, "TagLo", REG_TYPE_UINT32, NULL, 
"org.gnu.gdb.mips.cp0", 0 },
+       { MIPS64_NUM_CORE_REGS + 31, "TagHi", REG_TYPE_UINT32, NULL, 
"org.gnu.gdb.mips.cp0", 0 },
+       { MIPS64_NUM_CORE_REGS + 32, "DataHi", REG_TYPE_UINT64, NULL, 
"org.gnu.gdb.mips.cp0", 0 },
+       { MIPS64_NUM_CORE_REGS + 33, "EEPC", REG_TYPE_UINT64, NULL, 
"org.gnu.gdb.mips.cp0", 0 },
+       { MIPS64_NUM_CORE_C0_REGS + 0,  "f0", REG_TYPE_IEEE_DOUBLE, NULL,
+                "org.gnu.gdb.mips.fpu", 0 },
+       { MIPS64_NUM_CORE_C0_REGS + 1,  "f1", REG_TYPE_IEEE_DOUBLE, NULL,
+                "org.gnu.gdb.mips.fpu", 0 },
+       { MIPS64_NUM_CORE_C0_REGS + 2,  "f2", REG_TYPE_IEEE_DOUBLE, NULL,
+                "org.gnu.gdb.mips.fpu", 0 },
+       { MIPS64_NUM_CORE_C0_REGS + 3,  "f3", REG_TYPE_IEEE_DOUBLE, NULL,
+                "org.gnu.gdb.mips.fpu", 0 },
+       { MIPS64_NUM_CORE_C0_REGS + 4, "f4", REG_TYPE_IEEE_DOUBLE, NULL,
+                "org.gnu.gdb.mips.fpu", 0 },
+       { MIPS64_NUM_CORE_C0_REGS + 5,  "f5", REG_TYPE_IEEE_DOUBLE, NULL,
+                "org.gnu.gdb.mips.fpu", 0 },
+       { MIPS64_NUM_CORE_C0_REGS + 6,  "f6", REG_TYPE_IEEE_DOUBLE, NULL,
+                "org.gnu.gdb.mips.fpu", 0 },
+       { MIPS64_NUM_CORE_C0_REGS + 7,  "f7", REG_TYPE_IEEE_DOUBLE, NULL,
+                "org.gnu.gdb.mips.fpu", 0 },
+       { MIPS64_NUM_CORE_C0_REGS + 8,  "f8", REG_TYPE_IEEE_DOUBLE, NULL,
+                "org.gnu.gdb.mips.fpu", 0 },
+       { MIPS64_NUM_CORE_C0_REGS + 9,  "f9", REG_TYPE_IEEE_DOUBLE, NULL,
+                "org.gnu.gdb.mips.fpu", 0 },
+       { MIPS64_NUM_CORE_C0_REGS + 10, "f10", REG_TYPE_IEEE_DOUBLE, NULL,
+                "org.gnu.gdb.mips.fpu", 0 },
+       { MIPS64_NUM_CORE_C0_REGS + 11, "f11", REG_TYPE_IEEE_DOUBLE, NULL,
+                "org.gnu.gdb.mips.fpu", 0 },
+       { MIPS64_NUM_CORE_C0_REGS + 12, "f12", REG_TYPE_IEEE_DOUBLE, NULL,
+                "org.gnu.gdb.mips.fpu", 0 },
+       { MIPS64_NUM_CORE_C0_REGS + 13, "f13", REG_TYPE_IEEE_DOUBLE, NULL,
+                "org.gnu.gdb.mips.fpu", 0 },
+       { MIPS64_NUM_CORE_C0_REGS + 14, "f14", REG_TYPE_IEEE_DOUBLE, NULL,
+                "org.gnu.gdb.mips.fpu", 0 },
+       { MIPS64_NUM_CORE_C0_REGS + 15, "f15", REG_TYPE_IEEE_DOUBLE, NULL,
+                "org.gnu.gdb.mips.fpu", 0 },
+       { MIPS64_NUM_CORE_C0_REGS + 16, "f16", REG_TYPE_IEEE_DOUBLE, NULL,
+                "org.gnu.gdb.mips.fpu", 0 },
+       { MIPS64_NUM_CORE_C0_REGS + 17, "f17", REG_TYPE_IEEE_DOUBLE, NULL,
+                "org.gnu.gdb.mips.fpu", 0 },
+       { MIPS64_NUM_CORE_C0_REGS + 18, "f18", REG_TYPE_IEEE_DOUBLE, NULL,
+                "org.gnu.gdb.mips.fpu", 0 },
+       { MIPS64_NUM_CORE_C0_REGS + 19, "f19", REG_TYPE_IEEE_DOUBLE, NULL,
+                "org.gnu.gdb.mips.fpu", 0 },
+       { MIPS64_NUM_CORE_C0_REGS + 20, "f20", REG_TYPE_IEEE_DOUBLE, NULL,
+                "org.gnu.gdb.mips.fpu", 0 },
+       { MIPS64_NUM_CORE_C0_REGS + 21, "f21", REG_TYPE_IEEE_DOUBLE, NULL,
+                "org.gnu.gdb.mips.fpu", 0 },
+       { MIPS64_NUM_CORE_C0_REGS + 22, "f22", REG_TYPE_IEEE_DOUBLE, NULL,
+                "org.gnu.gdb.mips.fpu", 0 },
+       { MIPS64_NUM_CORE_C0_REGS + 23, "f23", REG_TYPE_IEEE_DOUBLE, NULL,
+                "org.gnu.gdb.mips.fpu", 0 },
+       { MIPS64_NUM_CORE_C0_REGS + 24, "f24", REG_TYPE_IEEE_DOUBLE, NULL,
+                "org.gnu.gdb.mips.fpu", 0 },
+       { MIPS64_NUM_CORE_C0_REGS + 25, "f25", REG_TYPE_IEEE_DOUBLE, NULL,
+                "org.gnu.gdb.mips.fpu", 0 },
+       { MIPS64_NUM_CORE_C0_REGS + 26, "f26", REG_TYPE_IEEE_DOUBLE, NULL,
+                "org.gnu.gdb.mips.fpu", 0 },
+       { MIPS64_NUM_CORE_C0_REGS + 27, "f27", REG_TYPE_IEEE_DOUBLE, NULL,
+                "org.gnu.gdb.mips.fpu", 0 },
+       { MIPS64_NUM_CORE_C0_REGS + 28, "f28", REG_TYPE_IEEE_DOUBLE, NULL,
+                "org.gnu.gdb.mips.fpu", 0 },
+       { MIPS64_NUM_CORE_C0_REGS + 29, "f29", REG_TYPE_IEEE_DOUBLE, NULL,
+                "org.gnu.gdb.mips.fpu", 0 },
+       { MIPS64_NUM_CORE_C0_REGS + 30, "f30", REG_TYPE_IEEE_DOUBLE, NULL,
+                "org.gnu.gdb.mips.fpu", 0 },
+       { MIPS64_NUM_CORE_C0_REGS + 31, "f31", REG_TYPE_IEEE_DOUBLE, NULL,
+                "org.gnu.gdb.mips.fpu", 0 },
+       { MIPS64_NUM_CORE_C0_REGS + 32, "fcsr", REG_TYPE_INT, "float",
+               "org.gnu.gdb.mips.fpu", 0 },
+       { MIPS64_NUM_CORE_C0_REGS + 33, "fir", REG_TYPE_INT, "float",
+               "org.gnu.gdb.mips.fpu", 0 },
+       { MIPS64_NUM_CORE_C0_REGS + 34, "fconfig", REG_TYPE_INT, "float",
+               "org.gnu.gdb.mips.fpu", 0 },
+       { MIPS64_NUM_CORE_C0_REGS + 35, "fccr", REG_TYPE_INT, "float",
+               "org.gnu.gdb.mips.fpu", 0 },
+       { MIPS64_NUM_CORE_C0_REGS + 36, "fexr", REG_TYPE_INT, "float",
+               "org.gnu.gdb.mips.fpu", 0 },
+       { MIPS64_NUM_CORE_C0_REGS + 37, "fenr", REG_TYPE_INT, "float",
+               "org.gnu.gdb.mips.fpu", 0 },
 };
 
+static int reg_type2size(enum reg_type type)
+{
+       switch (type) {
+       case REG_TYPE_UINT32:
+       case REG_TYPE_INT:
+               return 32;
+       case REG_TYPE_UINT64:
+       case REG_TYPE_IEEE_DOUBLE:
+               return 64;
+       default:
+               return 64;
+       }
+}
+
 static uint8_t mips32_gdb_dummy_fp_value[] = {0, 0, 0, 0};
 
 int mips64_get_core_reg(struct reg *reg)
@@ -194,7 +243,7 @@ int mips64_read_core_reg(struct target *target, int num)
        /* get pointers to arch-specific information */
        mips64_common_t *mips64 = target->arch_info;
 
-       if ((num < 0) || (num >= MIPS64NUMCOREREGS))
+       if ((num < 0) || (num >= MIPS64_NUM_REGS))
                return ERROR_COMMAND_ARGUMENT_INVALID;
 
        reg_value = mips64->core_regs[num];
@@ -212,7 +261,7 @@ int mips64_write_core_reg(struct target *target, int num)
        /* get pointers to arch-specific information */
        mips64_common_t *mips64 = target->arch_info;
 
-       if ((num < 0) || (num >= MIPS64NUMCOREREGS))
+       if ((num < 0) || (num >= MIPS64_NUM_REGS))
                return ERROR_COMMAND_ARGUMENT_INVALID;
 
        reg_value = buf_get_u64(mips64->core_cache->reg_list[num].value, 0, 64);
@@ -247,10 +296,10 @@ int mips64_get_gdb_reg_list(struct target *target, struct 
reg **reg_list[],
        register int i;
 
        /* include floating point registers */
-       *reg_list_size = MIPS64NUMCOREREGS;
+       *reg_list_size = MIPS64_NUM_REGS;
        *reg_list = malloc(sizeof(struct reg *) * (*reg_list_size));
 
-       for (i = 0; i < MIPS64NUMCOREREGS; i++)
+       for (i = 0; i < MIPS64_NUM_REGS; i++)
                (*reg_list)[i] = &mips64->core_cache->reg_list[i];
 
        return ERROR_OK;
@@ -269,7 +318,7 @@ int mips64_save_context(struct target *target)
        if (retval != ERROR_OK)
                return retval;
 
-       for (i = 0; i < MIPS64NUMCOREREGS; i++)
+       for (i = 0; i < MIPS64_NUM_REGS; i++)
                        retval = mips64->read_core_reg(target, i);
 
        return retval;
@@ -283,7 +332,7 @@ int mips64_restore_context(struct target *target)
        mips64_common_t *mips64 = target->arch_info;
        struct mips_ejtag *ejtag_info = &mips64->ejtag_info;
 
-       for (i = 0; i < MIPS64NUMCOREREGS; i++) {
+       for (i = 0; i < MIPS64_NUM_REGS; i++) {
                if (mips64->core_cache->reg_list[i].dirty)
                        mips64->write_core_reg(target, i);
        }
@@ -318,7 +367,7 @@ struct reg_cache *mips64_build_reg_cache(struct target 
*target)
        /* get pointers to arch-specific information */
        mips64_common_t *mips64 = target->arch_info;
 
-       int num_regs = MIPS64NUMCOREREGS;
+       int num_regs = MIPS64_NUM_REGS;
        struct reg_cache **cache_p = 
register_get_last_cache_p(&target->reg_cache);
        struct reg_cache *cache = malloc(sizeof(struct reg_cache));
        struct reg *reg_list = malloc(sizeof(struct reg) * num_regs);
@@ -339,7 +388,7 @@ struct reg_cache *mips64_build_reg_cache(struct target 
*target)
                arch_info[i].target = target;
                arch_info[i].mips64_common = mips64;
                reg_list[i].name = mips64_regs[i].name;
-               reg_list[i].size = 64;
+               reg_list[i].size = reg_type2size(mips64_regs[i].type);
                reg_list[i].value = calloc(1, 8);
 
                if (mips64_regs[i].flag == MIPS32_GDB_DUMMY_FP_REG) {
diff --git a/src/target/mips64.h b/src/target/mips64.h
index 4777833..3788271 100644
--- a/src/target/mips64.h
+++ b/src/target/mips64.h
@@ -33,14 +33,58 @@
 
 #define MIPS64_COMMON_MAGIC            0xB640B640
 
-/* offsets into mips64 core register cache */
-#define MIPS64_NUM_CORE_REGS 40
-#define MIPS64_NUM_FP_REGS 34
-enum {
-       MIPS64_PC = MIPS64_NUM_CORE_REGS - 1,
-       MIPS64_FIR = MIPS64_NUM_CORE_REGS + MIPS64_NUM_FP_REGS - 1,
-       MIPS64NUMCOREREGS
-};
+/* MIPS64 CP0 registers */
+#define MIPS64_C0_INDEX                0
+#define MIPS64_C0_RANDOM       1
+#define MIPS64_C0_ENTRYLO0     2
+#define MIPS64_C0_ENTRYLO1     3
+#define MIPS64_C0_CONTEXT      4
+#define MIPS64_C0_PAGEMASK     5
+#define MIPS64_C0_WIRED                6
+#define MIPS64_C0_BADVADDR     8
+#define MIPS64_C0_COUNT                9
+#define MIPS64_C0_ENTRYHI      10
+#define MIPS64_C0_COMPARE      11
+#define MIPS64_C0_STATUS       12
+#define MIPS64_C0_CAUSE                13
+#define MIPS64_C0_EPC          14
+#define MIPS64_C0_PRID         15
+#define MIPS64_C0_CONFIG       16
+#define MIPS64_C0_LLA          17
+#define MIPS64_C0_WATCHLO      18
+#define MIPS64_C0_WATCHHI      19
+#define MIPS64_C0_XCONTEXT     20
+#define MIPS64_C0_MEMCTRL      22
+#define MIPS64_C0_DEBUG                23
+#define MIPS64_C0_DEPC         24
+#define MIPS64_C0_PERFCOUNT    25
+#define MIPS64_C0_ECC          26
+#define MIPS64_C0_CACHERR      27
+#define MIPS64_C0_TAGLO                28
+#define MIPS64_C0_TAGHI                29
+#define MIPS64_C0_DATAHI       29
+#define MIPS64_C0_EEPC         30
+
+/* MIPS64 CP1 registers */
+#define MIPS64_C1_FIR          0
+#define MIPS64_C1_FCONFIG      24
+#define MIPS64_C1_FCSR         31
+#define MIPS64_C1_FCCR         25
+#define MIPS64_C1_FEXR         26
+#define MIPS64_C1_FENR         28
+
+/* offsets into mips64 register cache */
+#define MIPS64_NUM_CORE_REGS   34
+#define MIPS64_NUM_C0_REGS     34
+#define MIPS64_NUM_FP_REGS     38
+
+#define MIPS64_NUM_REGS                (MIPS64_NUM_CORE_REGS + \
+                                MIPS64_NUM_C0_REGS + \
+                                MIPS64_NUM_FP_REGS)
+
+#define MIPS64_NUM_CORE_C0_REGS        (MIPS64_NUM_CORE_REGS + 
MIPS64_NUM_C0_REGS)
+
+#define MIPS64_PC              MIPS64_NUM_CORE_REGS
 
 typedef struct mips64_comparator_s {
        int used;
@@ -53,7 +97,7 @@ typedef struct mips64_common_s {
        void *arch_info;
        struct reg_cache *core_cache;
        struct mips_ejtag ejtag_info;
-       uint64_t core_regs[MIPS64NUMCOREREGS];
+       uint64_t core_regs[MIPS64_NUM_REGS];
 
        struct working_area *fast_data_area;
 
@@ -127,7 +171,9 @@ typedef struct mips64_core_reg_s {
 #define MIPS64_MTC0(gpr, cpr, sel)     MIPS64_R_INST(MIPS64_OP_COP0, 
MIPS64_COP_MT, gpr, cpr, 0, sel)
 #define MIPS64_DMTC0(gpr, cpr, sel)    MIPS64_R_INST(MIPS64_OP_COP0, 
MIPS64_COP_DMT, gpr, cpr, 0, sel)
 #define MIPS64_MFC1(gpr, cpr, sel)     MIPS64_R_INST(MIPS64_OP_COP1, 
MIPS64_COP_MF, gpr, cpr, 0, 0)
+#define MIPS64_DMFC1(gpr, cpr, sel)    MIPS64_R_INST(MIPS64_OP_COP1, 
MIPS64_COP_DMF, gpr, cpr, 0, 0)
 #define MIPS64_MTC1(gpr, cpr, sel)     MIPS64_R_INST(MIPS64_OP_COP1, 
MIPS64_COP_MT, gpr, cpr, 0, 0)
+#define MIPS64_DMTC1(gpr, cpr, sel)    MIPS64_R_INST(MIPS64_OP_COP1, 
MIPS64_COP_DMT, gpr, cpr, 0, 0)
 #define MIPS64_MFC2(gpr, cpr, sel)     MIPS64_R_INST(MIPS64_OP_COP2, 
MIPS64_COP_MF, gpr, cpr, 0, sel)
 #define MIPS64_MTC2(gpr, cpr, sel)     MIPS64_R_INST(MIPS64_OP_COP2, 
MIPS64_COP_MT, gpr, cpr, 0, sel)
 #define MIPS64_CFC1(gpr, cpr, sel)     MIPS64_R_INST(MIPS64_OP_COP1, 
MIPS64_COP_CF, gpr, cpr, 0, 0)
diff --git a/src/target/mips64_pracc.c b/src/target/mips64_pracc.c
index cf79990..49754fd 100644
--- a/src/target/mips64_pracc.c
+++ b/src/target/mips64_pracc.c
@@ -766,7 +766,6 @@ int mips64_pracc_write_regs(struct mips_ejtag *ejtag_info, 
uint64_t *regs)
                MIPS64_DMFC0(2, 31, 0),                                 /* sd 
$11, ($15) */
                MIPS64_DMTC0(15, 31, 0),
                MIPS64_LUI(15, UPPER16(MIPS64_PRACC_STACK)),
-
                MIPS64_ORI(15, 15, LOWER16(MIPS64_PRACC_STACK)),
                MIPS64_SD(1, 0, 15),
                MIPS64_LUI(1, UPPER16(MIPS64_PRACC_PARAM_IN)),  /* $11 = 
MIPS64_PRACC_PARAM_OUT */
@@ -775,7 +774,6 @@ int mips64_pracc_write_regs(struct mips_ejtag *ejtag_info, 
uint64_t *regs)
                MIPS64_LD(4, 4*8, 1),
                MIPS64_LD(5, 5*8, 1),
                MIPS64_LD(6, 6*8, 1),
-
                MIPS64_LD(7, 7*8, 1),
                MIPS64_LD(8, 8*8, 1),
                MIPS64_LD(9, 9*8, 1),
@@ -784,7 +782,6 @@ int mips64_pracc_write_regs(struct mips_ejtag *ejtag_info, 
uint64_t *regs)
                MIPS64_LD(12, 12*8, 1),
                MIPS64_LD(13, 13*8, 1),
                MIPS64_LD(14, 14*8, 1),
-
                MIPS64_LD(16, 16*8, 1),
                MIPS64_LD(17, 17*8, 1),
                MIPS64_LD(18, 18*8, 1),
@@ -793,7 +790,6 @@ int mips64_pracc_write_regs(struct mips_ejtag *ejtag_info, 
uint64_t *regs)
                MIPS64_LD(21, 21*8, 1),
                MIPS64_LD(22, 22*8, 1),
                MIPS64_LD(23, 23*8, 1),
-
                MIPS64_LD(24, 24*8, 1),
                MIPS64_LD(25, 25*8, 1),
                MIPS64_LD(26, 26*8, 1),
@@ -802,26 +798,152 @@ int mips64_pracc_write_regs(struct mips_ejtag 
*ejtag_info, uint64_t *regs)
                MIPS64_LD(29, 29*8, 1),
                MIPS64_LD(30, 30*8, 1),
                MIPS64_LD(31, 31*8, 1),
-
                MIPS64_LD(2, 32*8, 1),
-               MIPS64_DMTC0(2, 12, 0),
-               MIPS64_LD(2, 33*8, 1),
                MIPS64_MTLO(2),
-               MIPS64_LD(2, 34*8, 1),
+               MIPS64_LD(2, 33*8, 1),
                MIPS64_MTHI(2),
-               MIPS64_LD(2, 35*8, 1),
-               MIPS64_DMTC0(2, 8, 0),
-
-               MIPS64_LD(2, 36*8, 1),
-               MIPS64_DMTC0(2, 13, 0),
-               MIPS64_LD(2, MIPS64_PC*8, 1),
-               MIPS64_DMTC0(2, 24, 0),
-               MIPS64_LD(2, 2*8, 1),
+               MIPS64_LD(2, MIPS64_NUM_CORE_REGS * 8, 1),
+               MIPS64_DMTC0(2, MIPS64_C0_DEPC, 0),
+               MIPS64_LD(2, (MIPS64_NUM_CORE_REGS + 2) * 8, 1),
+               MIPS64_DMTC0(2, MIPS64_C0_ENTRYLO0, 0),
+               MIPS64_LD(2, (MIPS64_NUM_CORE_REGS + 3) * 8, 1),
+               MIPS64_DMTC0(2, MIPS64_C0_ENTRYLO1, 0),
+               MIPS64_LD(2, (MIPS64_NUM_CORE_REGS + 4) * 8, 1),
+               MIPS64_DMTC0(2, MIPS64_C0_CONTEXT, 0),
+               MIPS64_LD(2, (MIPS64_NUM_CORE_REGS + 5) * 8, 1),
+               MIPS64_MTC0(2, MIPS64_C0_PAGEMASK, 0),
+               MIPS64_LD(2, (MIPS64_NUM_CORE_REGS + 6) * 8, 1),
+               MIPS64_MTC0(2, MIPS64_C0_WIRED, 0),
+               MIPS64_LD(2, (MIPS64_NUM_CORE_REGS + 8) * 8, 1),
+               MIPS64_MTC0(2, MIPS64_C0_COUNT, 0),
+               MIPS64_LD(2, (MIPS64_NUM_CORE_REGS + 9) * 8, 1),
+               MIPS64_DMTC0(2, MIPS64_C0_ENTRYHI, 0),
+               MIPS64_LD(2, (MIPS64_NUM_CORE_REGS + 10) * 8, 1),
+               MIPS64_MTC0(2, MIPS64_C0_COMPARE, 0),
+               MIPS64_LD(2, (MIPS64_NUM_CORE_REGS + 11) * 8, 1),
+               MIPS64_MTC0(2, MIPS64_C0_STATUS, 0),
+               MIPS64_LD(2, (MIPS64_NUM_CORE_REGS + 12) * 8, 1),
+               MIPS64_MTC0(2, MIPS64_C0_CAUSE, 0),
+               MIPS64_LD(2, (MIPS64_NUM_CORE_REGS + 13) * 8, 1),
+               MIPS64_DMTC0(2, MIPS64_C0_EPC, 0),
+               MIPS64_LD(2, (MIPS64_NUM_CORE_REGS + 15) * 8, 1),
+               MIPS64_MTC0(2, MIPS64_C0_CONFIG, 0),
+               MIPS64_LD(2, (MIPS64_NUM_CORE_REGS + 16) * 8, 1),
+               MIPS64_MTC0(2, MIPS64_C0_LLA, 0),
+               MIPS64_LD(2, (MIPS64_NUM_CORE_REGS + 17) * 8, 1),
+               MIPS64_DMTC0(2, MIPS64_C0_WATCHLO, 0),
+               MIPS64_LD(2, (MIPS64_NUM_CORE_REGS + 18) * 8, 1),
+               MIPS64_DMTC0(2, MIPS64_C0_WATCHLO, 1),
+               MIPS64_LD(2, (MIPS64_NUM_CORE_REGS + 19) * 8, 1),
+               MIPS64_MTC0(2, MIPS64_C0_WATCHHI, 0),
+               MIPS64_LD(2, (MIPS64_NUM_CORE_REGS + 20) * 8, 1),
+               MIPS64_MTC0(2, MIPS64_C0_WATCHHI, 1),
+               MIPS64_LD(2, (MIPS64_NUM_CORE_REGS + 21) * 8, 1),
+               MIPS64_DMTC0(2, MIPS64_C0_XCONTEXT, 1),
+               MIPS64_LD(2, (MIPS64_NUM_CORE_REGS + 22) * 8, 1),
+               MIPS64_MTC0(2, MIPS64_C0_MEMCTRL, 0),
+               MIPS64_LD(2, (MIPS64_NUM_CORE_REGS + 24) * 8, 1),
+               MIPS64_MTC0(2, MIPS64_C0_PERFCOUNT, 0),
+               MIPS64_LD(2, (MIPS64_NUM_CORE_REGS + 25) * 8, 1),
+               MIPS64_MTC0(2, MIPS64_C0_PERFCOUNT, 1),
+               MIPS64_LD(2, (MIPS64_NUM_CORE_REGS + 26) * 8, 1),
+               MIPS64_MTC0(2, MIPS64_C0_PERFCOUNT, 2),
+               MIPS64_LD(2, (MIPS64_NUM_CORE_REGS + 27) * 8, 1),
+               MIPS64_MTC0(2, MIPS64_C0_PERFCOUNT, 3),
+               MIPS64_LD(2, (MIPS64_NUM_CORE_REGS + 28) * 8, 1),
+               MIPS64_MTC0(2, MIPS64_C0_ECC, 0),
+               MIPS64_LD(2, (MIPS64_NUM_CORE_REGS + 29) * 8, 1),
+               MIPS64_MTC0(2, MIPS64_C0_CACHERR, 0),
+               MIPS64_LD(2, (MIPS64_NUM_CORE_REGS + 30) * 8, 1),
+               MIPS64_MTC0(2, MIPS64_C0_TAGLO, 0),
+               MIPS64_LD(2, (MIPS64_NUM_CORE_REGS + 31) * 8, 1),
+               MIPS64_MTC0(2, MIPS64_C0_TAGHI, 0),
+               MIPS64_LD(2, (MIPS64_NUM_CORE_REGS + 32) * 8, 1),
+               MIPS64_DMTC0(2, MIPS64_C0_DATAHI, 0),
+               MIPS64_LD(2, (MIPS64_NUM_CORE_REGS + 33) * 8, 1),
+               MIPS64_DMTC0(2, MIPS64_C0_EEPC, 0),
+               MIPS64_LD(2, (MIPS64_NUM_CORE_C0_REGS + 33) * 8, 1),
+               MIPS64_CTC1(2, MIPS64_C1_FIR, 0),
+               MIPS64_LD(2, (MIPS64_NUM_CORE_C0_REGS + 32) * 8, 1),
+               MIPS64_CTC1(2, MIPS64_C1_FCSR, 0),
+               MIPS64_LD(2, (MIPS64_NUM_CORE_C0_REGS + 34) * 8, 1),
+               MIPS64_CTC1(2, MIPS64_C1_FCONFIG, 0),
+               MIPS64_LD(2, (MIPS64_NUM_CORE_C0_REGS + 35) * 8, 1),
+               MIPS64_CTC1(2, MIPS64_C1_FCCR, 0),
+               MIPS64_LD(2, (MIPS64_NUM_CORE_C0_REGS + 36) * 8, 1),
+               MIPS64_CTC1(2, MIPS64_C1_FEXR, 0),
+               MIPS64_LD(2, (MIPS64_NUM_CORE_C0_REGS + 37) * 8, 1),
+               MIPS64_CTC1(2, MIPS64_C1_FENR, 0),
+               MIPS64_LD(2, (MIPS64_NUM_CORE_C0_REGS + 0) * 8, 1),
+               MIPS64_DMTC1(2, 0, 0),
+               MIPS64_LD(2, (MIPS64_NUM_CORE_C0_REGS + 1) * 8, 1),
+               MIPS64_DMTC1(2, 1, 0),
+               MIPS64_LD(2, (MIPS64_NUM_CORE_C0_REGS + 2) * 8, 1),
+               MIPS64_DMTC1(2, 2, 0),
+               MIPS64_LD(2, (MIPS64_NUM_CORE_C0_REGS + 3) * 8, 1),
+               MIPS64_DMTC1(2, 3, 0),
+               MIPS64_LD(2, (MIPS64_NUM_CORE_C0_REGS + 4) * 8, 1),
+               MIPS64_DMTC1(2, 4, 0),
+               MIPS64_LD(2, (MIPS64_NUM_CORE_C0_REGS + 5) * 8, 1),
+               MIPS64_DMTC1(2, 5, 0),
+               MIPS64_LD(2, (MIPS64_NUM_CORE_C0_REGS + 6) * 8, 1),
+               MIPS64_DMTC1(2, 6, 0),
+               MIPS64_LD(2, (MIPS64_NUM_CORE_C0_REGS + 7) * 8, 1),
+               MIPS64_DMTC1(2, 7, 0),
+               MIPS64_LD(2, (MIPS64_NUM_CORE_C0_REGS + 8) * 8, 1),
+               MIPS64_DMTC1(2, 8, 0),
+               MIPS64_LD(2, (MIPS64_NUM_CORE_C0_REGS + 9) * 8, 1),
+               MIPS64_DMTC1(2, 9, 0),
+               MIPS64_LD(2, (MIPS64_NUM_CORE_C0_REGS + 10) * 8, 1),
+               MIPS64_DMTC1(2, 10, 0),
+               MIPS64_LD(2, (MIPS64_NUM_CORE_C0_REGS + 11) * 8, 1),
+               MIPS64_DMTC1(2, 11, 0),
+               MIPS64_LD(2, (MIPS64_NUM_CORE_C0_REGS + 12) * 8, 1),
+               MIPS64_DMTC1(2, 12, 0),
+               MIPS64_LD(2, (MIPS64_NUM_CORE_C0_REGS + 13) * 8, 1),
+               MIPS64_DMTC1(2, 13, 0),
+               MIPS64_LD(2, (MIPS64_NUM_CORE_C0_REGS + 14) * 8, 1),
+               MIPS64_DMTC1(2, 14, 0),
+               MIPS64_LD(2, (MIPS64_NUM_CORE_C0_REGS + 15) * 8, 1),
+               MIPS64_DMTC1(2, 15, 0),
+               MIPS64_LD(2, (MIPS64_NUM_CORE_C0_REGS + 16) * 8, 1),
+               MIPS64_DMTC1(2, 16, 0),
+               MIPS64_LD(2, (MIPS64_NUM_CORE_C0_REGS + 17) * 8, 1),
+               MIPS64_DMTC1(2, 17, 0),
+               MIPS64_LD(2, (MIPS64_NUM_CORE_C0_REGS + 18) * 8, 1),
+               MIPS64_DMTC1(2, 18, 0),
+               MIPS64_LD(2, (MIPS64_NUM_CORE_C0_REGS + 19) * 8, 1),
+               MIPS64_DMTC1(2, 19, 0),
+               MIPS64_LD(2, (MIPS64_NUM_CORE_C0_REGS + 20) * 8, 1),
+               MIPS64_DMTC1(2, 20, 0),
+               MIPS64_LD(2, (MIPS64_NUM_CORE_C0_REGS + 21) * 8, 1),
+               MIPS64_DMTC1(2, 21, 0),
+               MIPS64_LD(2, (MIPS64_NUM_CORE_C0_REGS + 22) * 8, 1),
+               MIPS64_DMTC1(2, 22, 0),
+               MIPS64_LD(2, (MIPS64_NUM_CORE_C0_REGS + 23) * 8, 1),
+               MIPS64_DMTC1(2, 23, 0),
+               MIPS64_LD(2, (MIPS64_NUM_CORE_C0_REGS + 24) * 8, 1),
+               MIPS64_DMTC1(2, 24, 0),
+               MIPS64_LD(2, (MIPS64_NUM_CORE_C0_REGS + 25) * 8, 1),
+               MIPS64_DMTC1(2, 25, 0),
+               MIPS64_LD(2, (MIPS64_NUM_CORE_C0_REGS + 26) * 8, 1),
+               MIPS64_DMTC1(2, 26, 0),
+               MIPS64_LD(2, (MIPS64_NUM_CORE_C0_REGS + 27) * 8, 1),
+               MIPS64_DMTC1(2, 27, 0),
+               MIPS64_LD(2, (MIPS64_NUM_CORE_C0_REGS + 28) * 8, 1),
+               MIPS64_DMTC1(2, 28, 0),
+               MIPS64_LD(2, (MIPS64_NUM_CORE_C0_REGS + 29) * 8, 1),
+               MIPS64_DMTC1(2, 29, 0),
+               MIPS64_LD(2, (MIPS64_NUM_CORE_C0_REGS + 30) * 8, 1),
+               MIPS64_DMTC1(2, 30, 0),
+               MIPS64_LD(2, (MIPS64_NUM_CORE_C0_REGS + 31) * 8, 1),
+               MIPS64_DMTC1(2, 31, 0),
+               MIPS64_LD(2, 2 * 8, 1),
                MIPS64_LD(1, 0, 15),
                MIPS64_SYNC,
-               MIPS64_B(NEG16(56)),                                    /* b 
start */
-               MIPS64_DMFC0(15, 31, 0),                                        
/* move COP0 DeSave to $15 */
-
+               MIPS64_B(NEG16(184)), /* b start */
+               MIPS64_DMFC0(15, 31, 0), /* move COP0 DeSave to $15 */
+               MIPS64_NOP,
                MIPS64_NOP,
                MIPS64_NOP,
                MIPS64_NOP,
@@ -829,18 +951,16 @@ int mips64_pracc_write_regs(struct mips_ejtag 
*ejtag_info, uint64_t *regs)
                MIPS64_NOP,
                MIPS64_NOP,
                MIPS64_NOP,
-               MIPS64_NOP
        };
 
        LOG_DEBUG("enter mips64_pracc_exec");
        return mips64_pracc_exec(ejtag_info, ARRAY_SIZE(code), code,
-               MIPS64NUMCOREREGS, regs, 0, NULL, 1);
+               MIPS64_NUM_REGS, regs, 0, NULL, 1);
 }
 
 int mips64_pracc_read_regs(struct mips_ejtag *ejtag_info, uint64_t *regs)
 {
        uint32_t code[] = {
-                                                               /* start: */
                MIPS64_DMTC0(2, 31, 0),                         /* move $2 to 
COP0 DeSave */
                MIPS64_LUI(2, UPPER16(MIPS64_PRACC_PARAM_OUT)), /* $2 = 
MIPS64_PRACC_PARAM_OUT */
                MIPS64_ORI(2, 2, LOWER16(MIPS64_PRACC_PARAM_OUT)),
@@ -849,70 +969,195 @@ int mips64_pracc_read_regs(struct mips_ejtag 
*ejtag_info, uint64_t *regs)
                MIPS64_SD(15, 15*8, 2),                         /* sd $15, 
15*8($2) */
                MIPS64_DMFC0(2, 31, 0),                         /* move COP0 
DeSave to $2 */
                MIPS64_DMTC0(15, 31, 0),                                /* move 
$15 to COP0 DeSave */
-
                MIPS64_LUI(15, UPPER16(MIPS64_PRACC_STACK)),    /* $15 = 
MIPS64_PRACC_STACK */
                MIPS64_ORI(15, 15, LOWER16(MIPS64_PRACC_STACK)),
                MIPS64_SD(1, 0, 15),                            /* sd $1, ($15) 
*/
                MIPS64_SD(2, 0, 15),                            /* sd $2, ($15) 
*/
                MIPS64_LUI(1, UPPER16(MIPS64_PRACC_PARAM_OUT)), /* $1 = 
MIPS64_PRACC_PARAM_OUT */
                MIPS64_ORI(1, 1, LOWER16(MIPS64_PRACC_PARAM_OUT)),
-               MIPS64_SD(2, 2*8, 1),                           /* sd $2, 
2*8($1) */
-               MIPS64_SD(3, 3*8, 1),                           /* sd $3, 
3*8($1) */
-
-               MIPS64_SD(4, 4*8, 1),                           /* sd $4, 
4*8($1) */
-               MIPS64_SD(5, 5*8, 1),                           /* sd $5, 
5*8($1) */
-               MIPS64_SD(6, 6*8, 1),                           /* sd $6, 
6*8($1) */
-               MIPS64_SD(7, 7*8, 1),                           /* sd $7, 
7*8($1) */
-               MIPS64_SD(8, 8*8, 1),                           /* sd $8, 
8*8($1) */
-               MIPS64_SD(9, 9*8, 1),                           /* sd $9, 
9*8($1) */
-               MIPS64_SD(10, 10*8, 1),                         /* sd $10, 
10*8($1) */
-               MIPS64_SD(11, 11*8, 1),                         /* sd $11, 
11*8($1) */
-
-               MIPS64_SD(12, 12*8, 1),                         /* sd $12, 
12*8($1) */
-               MIPS64_SD(13, 13*8, 1),                         /* sd $13, 
13*8($1) */
-               MIPS64_SD(14, 14*8, 1),                         /* sd $14, 
14*8($1) */
-               MIPS64_SD(16, 16*8, 1),                         /* sd $16, 
16*8($1) */
-               MIPS64_SD(17, 17*8, 1),                         /* sd $17, 
17*8($1) */
-               MIPS64_SD(18, 18*8, 1),                         /* sd $18, 
18*8($1) */
-               MIPS64_SD(19, 19*8, 1),                         /* sd $19, 
19*8($1) */
-               MIPS64_SD(20, 20*8, 1),                         /* sd $20, 
20*8($1) */
-
-               MIPS64_SD(21, 21*8, 1),                         /* sd $21, 
21*8($1) */
-               MIPS64_SD(22, 22*8, 1),                         /* sd $22, 
22*8($1) */
-               MIPS64_SD(23, 23*8, 1),                         /* sd $23, 
23*8($1) */
-               MIPS64_SD(24, 24*8, 1),                         /* sd $24, 
24*8($1) */
-               MIPS64_SD(25, 25*8, 1),                         /* sd $25, 
25*8($1) */
-               MIPS64_SD(26, 26*8, 1),                         /* sd $26, 
26*8($1) */
-               MIPS64_SD(27, 27*8, 1),                         /* sd $27, 
27*8($1) */
-               MIPS64_SD(28, 28*8, 1),                         /* sd $28, 
28*8($1) */
-               MIPS64_SD(29, 29*8, 1),                         /* sd $29, 
29*8($1) */
-               MIPS64_SD(30, 30*8, 1),                         /* sd $30, 
30*8($1) */
-               MIPS64_SD(31, 31*8, 1),                         /* sd $31, 
31*8($1) */
-
-               MIPS64_DMFC0(2, 12, 0),  /* (32)cpu.cpu_core.cop0.status_reg */
+               MIPS64_SD(2, 2*8, 1),
+               MIPS64_SD(3, 3*8, 1),
+               MIPS64_SD(4, 4*8, 1),
+               MIPS64_SD(5, 5*8, 1),
+               MIPS64_SD(6, 6*8, 1),
+               MIPS64_SD(7, 7*8, 1),
+               MIPS64_SD(8, 8*8, 1),
+               MIPS64_SD(9, 9*8, 1),
+               MIPS64_SD(10, 10*8, 1),
+               MIPS64_SD(11, 11*8, 1),
+               MIPS64_SD(12, 12*8, 1),
+               MIPS64_SD(13, 13*8, 1),
+               MIPS64_SD(14, 14*8, 1),
+               MIPS64_SD(16, 16*8, 1),
+               MIPS64_SD(17, 17*8, 1),
+               MIPS64_SD(18, 18*8, 1),
+               MIPS64_SD(19, 19*8, 1),
+               MIPS64_SD(20, 20*8, 1),
+               MIPS64_SD(21, 21*8, 1),
+               MIPS64_SD(22, 22*8, 1),
+               MIPS64_SD(23, 23*8, 1),
+               MIPS64_SD(24, 24*8, 1),
+               MIPS64_SD(25, 25*8, 1),
+               MIPS64_SD(26, 26*8, 1),
+               MIPS64_SD(27, 27*8, 1),
+               MIPS64_SD(28, 28*8, 1),
+               MIPS64_SD(29, 29*8, 1),
+               MIPS64_SD(30, 30*8, 1),
+               MIPS64_SD(31, 31*8, 1),
+               MIPS64_MFLO(2),
                MIPS64_SD(2, 32*8, 1),
-               MIPS64_MFLO(2),  /*  (33)cpu.int_mult_div.lo_reg */
+               MIPS64_MFHI(2),
                MIPS64_SD(2, 33*8, 1),
-               MIPS64_MFHI(2),  /* (34)cpu.int_mul_div.hi_reg */
-
-               MIPS64_SD(2, 34*8, 1),
-               MIPS64_DMFC0(2, 8, 0),  /* (35)cpu.cpu_core.cop0.BadVAddr */
-               MIPS64_SD(2, 35*8, 1),
-               MIPS64_DMFC0(2, 13, 0),  /* (36)cpu.cpu_core.cop0.cause */
-               MIPS64_SD(2, 36*8, 1),
-               MIPS64_DMFC0(2, 23, 0),  /* DEBUG register */
-               MIPS64_SD(2, 37*8, 1),
-               MIPS64_MFC0(2, 15, 0),  /* processorID register */
-               MIPS64_SD(2, 38*8, 1),
-               MIPS64_DMFC0(2, 24, 0),  /* (38)cpu.cpu_core.cop0.DEPC */
-               MIPS64_SD(2, 39*8, 1),
+               MIPS64_DMFC0(2, MIPS64_C0_DEPC, 0),
+               MIPS64_SD(2, MIPS64_NUM_CORE_REGS * 8, 1),
+               MIPS64_DMFC0(2, MIPS64_C0_RANDOM, 0),
+               MIPS64_SD(2, (MIPS64_NUM_CORE_REGS + 1) * 8, 1),
+               MIPS64_DMFC0(2, MIPS64_C0_ENTRYLO0, 0),
+               MIPS64_SD(2, (MIPS64_NUM_CORE_REGS + 2) * 8, 1),
+               MIPS64_DMFC0(2, MIPS64_C0_ENTRYLO1, 0),
+               MIPS64_SD(2, (MIPS64_NUM_CORE_REGS + 3) * 8, 1),
+               MIPS64_DMFC0(2, MIPS64_C0_CONTEXT, 0),
+               MIPS64_SD(2, (MIPS64_NUM_CORE_REGS + 4) * 8, 1),
+               MIPS64_MFC0(2, MIPS64_C0_PAGEMASK, 0),
+               MIPS64_SD(2, (MIPS64_NUM_CORE_REGS + 5) * 8, 1),
+               MIPS64_MFC0(2, MIPS64_C0_WIRED, 0),
+               MIPS64_SD(2, (MIPS64_NUM_CORE_REGS + 6) * 8, 1),
+               MIPS64_DMFC0(2, MIPS64_C0_BADVADDR, 0),
+               MIPS64_SD(2, (MIPS64_NUM_CORE_REGS + 7) * 8, 1),
+               MIPS64_MFC0(2, MIPS64_C0_COUNT, 0),
+               MIPS64_SD(2, (MIPS64_NUM_CORE_REGS + 8) * 8, 1),
+               MIPS64_DMFC0(2, MIPS64_C0_ENTRYHI, 0),
+               MIPS64_SD(2, (MIPS64_NUM_CORE_REGS + 9) * 8, 1),
+               MIPS64_MFC0(2, MIPS64_C0_COMPARE, 0),
+               MIPS64_SD(2, (MIPS64_NUM_CORE_REGS + 10) * 8, 1),
+               MIPS64_MFC0(2, MIPS64_C0_STATUS, 0),
+               MIPS64_SD(2, (MIPS64_NUM_CORE_REGS + 11) * 8, 1),
+               MIPS64_MFC0(2, MIPS64_C0_CAUSE, 0),
+               MIPS64_SD(2, (MIPS64_NUM_CORE_REGS + 12) * 8, 1),
+               MIPS64_DMFC0(2, MIPS64_C0_EPC, 0),
+               MIPS64_SD(2, (MIPS64_NUM_CORE_REGS + 13) * 8, 1),
+               MIPS64_MFC0(2, MIPS64_C0_PRID, 0),
+               MIPS64_SD(2, (MIPS64_NUM_CORE_REGS + 14) * 8, 1),
+               MIPS64_MFC0(2, MIPS64_C0_CONFIG, 0),
+               MIPS64_SD(2, (MIPS64_NUM_CORE_REGS + 15) * 8, 1),
+               MIPS64_MFC0(2, MIPS64_C0_LLA, 0),
+               MIPS64_SD(2, (MIPS64_NUM_CORE_REGS + 16) * 8, 1),
+               MIPS64_DMFC0(2, MIPS64_C0_WATCHLO, 0),
+               MIPS64_SD(2, (MIPS64_NUM_CORE_REGS + 17) * 8, 1),
+               MIPS64_DMFC0(2, MIPS64_C0_WATCHLO, 1),
+               MIPS64_SD(2, (MIPS64_NUM_CORE_REGS + 18) * 8, 1),
+               MIPS64_MFC0(2, MIPS64_C0_WATCHHI, 0),
+               MIPS64_SD(2, (MIPS64_NUM_CORE_REGS + 19) * 8, 1),
+               MIPS64_MFC0(2, MIPS64_C0_WATCHHI, 1),
+               MIPS64_SD(2, (MIPS64_NUM_CORE_REGS + 20) * 8, 1),
+               MIPS64_DMFC0(2, MIPS64_C0_XCONTEXT, 1),
+               MIPS64_SD(2, (MIPS64_NUM_CORE_REGS + 21) * 8, 1),
+               MIPS64_MFC0(2, MIPS64_C0_MEMCTRL, 0),
+               MIPS64_SD(2, (MIPS64_NUM_CORE_REGS + 22) * 8, 1),
+               MIPS64_MFC0(2, MIPS64_C0_DEBUG, 0),
+               MIPS64_SD(2, (MIPS64_NUM_CORE_REGS + 23) * 8, 1),
+               MIPS64_MFC0(2, MIPS64_C0_PERFCOUNT, 0),
+               MIPS64_SD(2, (MIPS64_NUM_CORE_REGS + 24) * 8, 1),
+               MIPS64_MFC0(2, MIPS64_C0_PERFCOUNT, 1),
+               MIPS64_SD(2, (MIPS64_NUM_CORE_REGS + 25) * 8, 1),
+               MIPS64_MFC0(2, MIPS64_C0_PERFCOUNT, 2),
+               MIPS64_SD(2, (MIPS64_NUM_CORE_REGS + 26) * 8, 1),
+               MIPS64_MFC0(2, MIPS64_C0_PERFCOUNT, 3),
+               MIPS64_SD(2, (MIPS64_NUM_CORE_REGS + 27) * 8, 1),
+               MIPS64_MFC0(2, MIPS64_C0_ECC, 0),
+               MIPS64_SD(2, (MIPS64_NUM_CORE_REGS + 28) * 8, 1),
+               MIPS64_MFC0(2, MIPS64_C0_CACHERR, 0),
+               MIPS64_SD(2, (MIPS64_NUM_CORE_REGS + 29) * 8, 1),
+               MIPS64_MFC0(2, MIPS64_C0_TAGLO, 0),
+               MIPS64_SD(2, (MIPS64_NUM_CORE_REGS + 30) * 8, 1),
+               MIPS64_MFC0(2, MIPS64_C0_TAGHI, 0),
+               MIPS64_SD(2, (MIPS64_NUM_CORE_REGS + 31) * 8, 1),
+               MIPS64_DMFC0(2, MIPS64_C0_DATAHI, 0),
+               MIPS64_SD(2, (MIPS64_NUM_CORE_REGS + 32) * 8, 1),
+               MIPS64_DMFC0(2, MIPS64_C0_EEPC, 0),
+               MIPS64_SD(2, (MIPS64_NUM_CORE_REGS + 33) * 8, 1),
+               MIPS64_CFC1(2, MIPS64_C1_FIR, 0),
+               MIPS64_SD(2, (MIPS64_NUM_CORE_C0_REGS + 33) * 8, 1),
+               MIPS64_CFC1(2, MIPS64_C1_FCSR, 0),
+               MIPS64_SD(2, (MIPS64_NUM_CORE_C0_REGS + 32) * 8, 1),
+               MIPS64_CFC1(2, MIPS64_C1_FCONFIG, 0),
+               MIPS64_SD(2, (MIPS64_NUM_CORE_C0_REGS + 34) * 8, 1),
+               MIPS64_CFC1(2, MIPS64_C1_FCCR, 0),
+               MIPS64_SD(2, (MIPS64_NUM_CORE_C0_REGS + 35) * 8, 1),
+               MIPS64_CFC1(2, MIPS64_C1_FEXR, 0),
+               MIPS64_SD(2, (MIPS64_NUM_CORE_C0_REGS + 36) * 8, 1),
+               MIPS64_CFC1(2, MIPS64_C1_FENR, 0),
+               MIPS64_SD(2, (MIPS64_NUM_CORE_C0_REGS + 37) * 8, 1),
+               MIPS64_DMFC1(2, 0, 0),
+               MIPS64_SD(2, (MIPS64_NUM_CORE_C0_REGS + 0) * 8, 1),
+               MIPS64_DMFC1(2, 1, 0),
+               MIPS64_SD(2, (MIPS64_NUM_CORE_C0_REGS + 1) * 8, 1),
+               MIPS64_DMFC1(2, 2, 0),
+               MIPS64_SD(2, (MIPS64_NUM_CORE_C0_REGS + 2) * 8, 1),
+               MIPS64_DMFC1(2, 3, 0),
+               MIPS64_SD(2, (MIPS64_NUM_CORE_C0_REGS + 3) * 8, 1),
+               MIPS64_DMFC1(2, 4, 0),
+               MIPS64_SD(2, (MIPS64_NUM_CORE_C0_REGS + 4) * 8, 1),
+               MIPS64_DMFC1(2, 5, 0),
+               MIPS64_SD(2, (MIPS64_NUM_CORE_C0_REGS + 5) * 8, 1),
+               MIPS64_DMFC1(2, 6, 0),
+               MIPS64_SD(2, (MIPS64_NUM_CORE_C0_REGS + 6) * 8, 1),
+               MIPS64_DMFC1(2, 7, 0),
+               MIPS64_SD(2, (MIPS64_NUM_CORE_C0_REGS + 7) * 8, 1),
+               MIPS64_DMFC1(2, 8, 0),
+               MIPS64_SD(2, (MIPS64_NUM_CORE_C0_REGS + 8) * 8, 1),
+               MIPS64_DMFC1(2, 9, 0),
+               MIPS64_SD(2, (MIPS64_NUM_CORE_C0_REGS + 9) * 8, 1),
+               MIPS64_DMFC1(2, 10, 0),
+               MIPS64_SD(2, (MIPS64_NUM_CORE_C0_REGS + 10) * 8, 1),
+               MIPS64_DMFC1(2, 11, 0),
+               MIPS64_SD(2, (MIPS64_NUM_CORE_C0_REGS + 11) * 8, 1),
+               MIPS64_DMFC1(2, 12, 0),
+               MIPS64_SD(2, (MIPS64_NUM_CORE_C0_REGS + 12) * 8, 1),
+               MIPS64_DMFC1(2, 13, 0),
+               MIPS64_SD(2, (MIPS64_NUM_CORE_C0_REGS + 13) * 8, 1),
+               MIPS64_DMFC1(2, 14, 0),
+               MIPS64_SD(2, (MIPS64_NUM_CORE_C0_REGS + 14) * 8, 1),
+               MIPS64_DMFC1(2, 15, 0),
+               MIPS64_SD(2, (MIPS64_NUM_CORE_C0_REGS + 15) * 8, 1),
+               MIPS64_DMFC1(2, 16, 0),
+               MIPS64_SD(2, (MIPS64_NUM_CORE_C0_REGS + 16) * 8, 1),
+               MIPS64_DMFC1(2, 17, 0),
+               MIPS64_SD(2, (MIPS64_NUM_CORE_C0_REGS + 17) * 8, 1),
+               MIPS64_DMFC1(2, 18, 0),
+               MIPS64_SD(2, (MIPS64_NUM_CORE_C0_REGS + 18) * 8, 1),
+               MIPS64_DMFC1(2, 19, 0),
+               MIPS64_SD(2, (MIPS64_NUM_CORE_C0_REGS + 19) * 8, 1),
+               MIPS64_DMFC1(2, 20, 0),
+               MIPS64_SD(2, (MIPS64_NUM_CORE_C0_REGS + 20) * 8, 1),
+               MIPS64_DMFC1(2, 21, 0),
+               MIPS64_SD(2, (MIPS64_NUM_CORE_C0_REGS + 21) * 8, 1),
+               MIPS64_DMFC1(2, 22, 0),
+               MIPS64_SD(2, (MIPS64_NUM_CORE_C0_REGS + 22) * 8, 1),
+               MIPS64_DMFC1(2, 23, 0),
+               MIPS64_SD(2, (MIPS64_NUM_CORE_C0_REGS + 23) * 8, 1),
+               MIPS64_DMFC1(2, 24, 0),
+               MIPS64_SD(2, (MIPS64_NUM_CORE_C0_REGS + 24) * 8, 1),
+               MIPS64_DMFC1(2, 25, 0),
+               MIPS64_SD(2, (MIPS64_NUM_CORE_C0_REGS + 25) * 8, 1),
+               MIPS64_DMFC1(2, 26, 0),
+               MIPS64_SD(2, (MIPS64_NUM_CORE_C0_REGS + 26) * 8, 1),
+               MIPS64_DMFC1(2, 27, 0),
+               MIPS64_SD(2, (MIPS64_NUM_CORE_C0_REGS + 27) * 8, 1),
+               MIPS64_DMFC1(2, 28, 0),
+               MIPS64_SD(2, (MIPS64_NUM_CORE_C0_REGS + 28) * 8, 1),
+               MIPS64_DMFC1(2, 29, 0),
+               MIPS64_SD(2, (MIPS64_NUM_CORE_C0_REGS + 29) * 8, 1),
+               MIPS64_DMFC1(2, 30, 0),
+               MIPS64_SD(2, (MIPS64_NUM_CORE_C0_REGS + 30) * 8, 1),
+               MIPS64_DMFC1(2, 31, 0),
+               MIPS64_SD(2, (MIPS64_NUM_CORE_C0_REGS + 31) * 8, 1),
                MIPS64_LD(2, 0, 15),
-
                MIPS64_LD(1, 0, 15),
                MIPS64_SYNC,
-               MIPS64_B(NEG16(63)),    /* b start */
-               MIPS64_DMFC0(15, 31, 0),/* move COP0 DeSave to $15 */
-
+               MIPS64_B(NEG16(195)), /* b start */
+               MIPS64_DMFC0(15, 31, 0), /* move COP0 DeSave to $15 */
+               MIPS64_NOP,
                MIPS64_NOP,
                MIPS64_NOP,
                MIPS64_NOP,
@@ -920,12 +1165,11 @@ int mips64_pracc_read_regs(struct mips_ejtag 
*ejtag_info, uint64_t *regs)
                MIPS64_NOP,
                MIPS64_NOP,
                MIPS64_NOP,
-               MIPS64_NOP
        };
 
        LOG_DEBUG("enter mips64_pracc_exec");
        return mips64_pracc_exec(ejtag_info, ARRAY_SIZE(code), code,
-               0, NULL, MIPS64NUMCOREREGS, regs, 1);
+               0, NULL, MIPS64_NUM_REGS, regs, 1);
 }
 
 /* fastdata upload/download requires an initialized working area

-- 

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
_______________________________________________
OpenOCD-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openocd-devel

Reply via email to