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 |