agent/src/os/linux/LinuxDebuggerLocal.c

changeset 1
2d8a650513c2
parent 0
f90c822e73f8
child 6876
710a3c8b516e
equal deleted inserted replaced
0:f90c822e73f8 1:2d8a650513c2
20 * or visit www.oracle.com if you need additional information or have any 20 * or visit www.oracle.com if you need additional information or have any
21 * questions. 21 * questions.
22 * 22 *
23 */ 23 */
24 24
25 /*
26 * This file has been modified by Loongson Technology in 2015. These
27 * modifications are Copyright (c) 2015 Loongson Technology, and are made
28 * available on the same license terms set forth above.
29 */
30
25 #include <jni.h> 31 #include <jni.h>
26 #include "libproc.h" 32 #include "libproc.h"
27 33
28 #include <elf.h> 34 #include <elf.h>
29 #include <sys/types.h> 35 #include <sys/types.h>
45 #include "sun_jvm_hotspot_debugger_amd64_AMD64ThreadContext.h" 51 #include "sun_jvm_hotspot_debugger_amd64_AMD64ThreadContext.h"
46 #endif 52 #endif
47 53
48 #if defined(sparc) || defined(sparcv9) 54 #if defined(sparc) || defined(sparcv9)
49 #include "sun_jvm_hotspot_debugger_sparc_SPARCThreadContext.h" 55 #include "sun_jvm_hotspot_debugger_sparc_SPARCThreadContext.h"
56 #endif
57
58 #if defined(mipsel) || defined(mips)
59 #include "sun_jvm_hotspot_debugger_mips_MIPSThreadContext.h"
50 #endif 60 #endif
51 61
52 static jfieldID p_ps_prochandle_ID = 0; 62 static jfieldID p_ps_prochandle_ID = 0;
53 static jfieldID threadList_ID = 0; 63 static jfieldID threadList_ID = 0;
54 static jfieldID loadObjectList_ID = 0; 64 static jfieldID loadObjectList_ID = 0;
352 #ifdef amd64 362 #ifdef amd64
353 #define NPRGREG sun_jvm_hotspot_debugger_amd64_AMD64ThreadContext_NPRGREG 363 #define NPRGREG sun_jvm_hotspot_debugger_amd64_AMD64ThreadContext_NPRGREG
354 #endif 364 #endif
355 #if defined(sparc) || defined(sparcv9) 365 #if defined(sparc) || defined(sparcv9)
356 #define NPRGREG sun_jvm_hotspot_debugger_sparc_SPARCThreadContext_NPRGREG 366 #define NPRGREG sun_jvm_hotspot_debugger_sparc_SPARCThreadContext_NPRGREG
367 #endif
368 #if defined(mips) || defined(mipsel)
369 #define NPRGREG sun_jvm_hotspot_debugger_mips_MIPSThreadContext_NPRGREG
357 #endif 370 #endif
358 371
359 array = (*env)->NewLongArray(env, NPRGREG); 372 array = (*env)->NewLongArray(env, NPRGREG);
360 CHECK_EXCEPTION_(0); 373 CHECK_EXCEPTION_(0);
361 regs = (*env)->GetLongArrayElements(env, array, &isCopy); 374 regs = (*env)->GetLongArrayElements(env, array, &isCopy);
445 regs[REG_INDEX(R_O5)] = gregs.u_regs[12]; 458 regs[REG_INDEX(R_O5)] = gregs.u_regs[12];
446 regs[REG_INDEX(R_O6)] = gregs.u_regs[13]; 459 regs[REG_INDEX(R_O6)] = gregs.u_regs[13];
447 regs[REG_INDEX(R_O7)] = gregs.u_regs[14]; 460 regs[REG_INDEX(R_O7)] = gregs.u_regs[14];
448 #endif /* sparc */ 461 #endif /* sparc */
449 462
463 #if defined(mips) || defined(mipsel)
464
465 #define REG_INDEX(reg) sun_jvm_hotspot_debugger_mips_MIPSThreadContext_##reg
466
467 regs[REG_INDEX(ZERO)] = gregs.regs[0];
468 regs[REG_INDEX(AT)] = gregs.regs[1];
469 regs[REG_INDEX(V0)] = gregs.regs[2];
470 regs[REG_INDEX(V1)] = gregs.regs[3];
471 regs[REG_INDEX(A0)] = gregs.regs[4];
472 regs[REG_INDEX(A1)] = gregs.regs[5];
473 regs[REG_INDEX(A2)] = gregs.regs[6];
474 regs[REG_INDEX(A3)] = gregs.regs[7];
475 regs[REG_INDEX(T0)] = gregs.regs[8];
476 regs[REG_INDEX(T1)] = gregs.regs[9];
477 regs[REG_INDEX(T2)] = gregs.regs[10];
478 regs[REG_INDEX(T3)] = gregs.regs[11];
479 regs[REG_INDEX(T4)] = gregs.regs[12];
480 regs[REG_INDEX(T5)] = gregs.regs[13];
481 regs[REG_INDEX(T6)] = gregs.regs[14];
482 regs[REG_INDEX(T7)] = gregs.regs[15];
483 regs[REG_INDEX(S0)] = gregs.regs[16];
484 regs[REG_INDEX(S1)] = gregs.regs[17];
485 regs[REG_INDEX(S2)] = gregs.regs[18];
486 regs[REG_INDEX(S3)] = gregs.regs[19];
487 regs[REG_INDEX(S4)] = gregs.regs[20];
488 regs[REG_INDEX(S5)] = gregs.regs[21];
489 regs[REG_INDEX(S6)] = gregs.regs[22];
490 regs[REG_INDEX(S7)] = gregs.regs[23];
491 regs[REG_INDEX(T8)] = gregs.regs[24];
492 regs[REG_INDEX(T9)] = gregs.regs[25];
493 regs[REG_INDEX(K0)] = gregs.regs[26];
494 regs[REG_INDEX(K1)] = gregs.regs[27];
495 regs[REG_INDEX(GP)] = gregs.regs[28];
496 regs[REG_INDEX(SP)] = gregs.regs[29];
497 regs[REG_INDEX(FP)] = gregs.regs[30];
498 regs[REG_INDEX(S8)] = gregs.regs[30];
499 regs[REG_INDEX(RA)] = gregs.regs[31];
500 #endif /* mips */
450 501
451 (*env)->ReleaseLongArrayElements(env, array, regs, JNI_COMMIT); 502 (*env)->ReleaseLongArrayElements(env, array, regs, JNI_COMMIT);
452 return array; 503 return array;
453 } 504 }
454 #endif 505 #endif

mercurial