equal
deleted
inserted
replaced
36 |
36 |
37 #if defined(x86_64) && !defined(amd64) |
37 #if defined(x86_64) && !defined(amd64) |
38 #define amd64 1 |
38 #define amd64 1 |
39 #endif |
39 #endif |
40 |
40 |
41 #ifdef i386 |
41 #if defined(i386) && !defined(i586) |
|
42 #define i586 1 |
|
43 #endif |
|
44 |
|
45 #ifdef i586 |
42 #include "sun_jvm_hotspot_debugger_x86_X86ThreadContext.h" |
46 #include "sun_jvm_hotspot_debugger_x86_X86ThreadContext.h" |
43 #endif |
47 #endif |
44 |
48 |
45 #ifdef amd64 |
49 #ifdef amd64 |
46 #include "sun_jvm_hotspot_debugger_amd64_AMD64ThreadContext.h" |
50 #include "sun_jvm_hotspot_debugger_amd64_AMD64ThreadContext.h" |
384 err = ps_pdread(get_proc_handle(env, this_obj), (psaddr_t) (uintptr_t)addr, bufPtr, numBytes); |
388 err = ps_pdread(get_proc_handle(env, this_obj), (psaddr_t) (uintptr_t)addr, bufPtr, numBytes); |
385 (*env)->ReleaseByteArrayElements(env, array, bufPtr, 0); |
389 (*env)->ReleaseByteArrayElements(env, array, bufPtr, 0); |
386 return (err == PS_OK)? array : 0; |
390 return (err == PS_OK)? array : 0; |
387 } |
391 } |
388 |
392 |
389 #if defined(i386) || defined(amd64) || defined(sparc) || defined(sparcv9) | defined(ppc64) || defined(ppc64le) || defined(aarch64) |
393 #if defined(i586) || defined(amd64) || defined(sparc) || defined(sparcv9) | defined(ppc64) || defined(ppc64le) || defined(aarch64) |
390 JNIEXPORT jlongArray JNICALL Java_sun_jvm_hotspot_debugger_linux_LinuxDebuggerLocal_getThreadIntegerRegisterSet0 |
394 JNIEXPORT jlongArray JNICALL Java_sun_jvm_hotspot_debugger_linux_LinuxDebuggerLocal_getThreadIntegerRegisterSet0 |
391 (JNIEnv *env, jobject this_obj, jint lwp_id) { |
395 (JNIEnv *env, jobject this_obj, jint lwp_id) { |
392 |
396 |
393 struct user_regs_struct gregs; |
397 struct user_regs_struct gregs; |
394 jboolean isCopy; |
398 jboolean isCopy; |
400 if (get_lwp_regs(ph, lwp_id, &gregs) != true) { |
404 if (get_lwp_regs(ph, lwp_id, &gregs) != true) { |
401 THROW_NEW_DEBUGGER_EXCEPTION_("get_thread_regs failed for a lwp", 0); |
405 THROW_NEW_DEBUGGER_EXCEPTION_("get_thread_regs failed for a lwp", 0); |
402 } |
406 } |
403 |
407 |
404 #undef NPRGREG |
408 #undef NPRGREG |
405 #ifdef i386 |
409 #ifdef i586 |
406 #define NPRGREG sun_jvm_hotspot_debugger_x86_X86ThreadContext_NPRGREG |
410 #define NPRGREG sun_jvm_hotspot_debugger_x86_X86ThreadContext_NPRGREG |
407 #endif |
411 #endif |
408 #ifdef amd64 |
412 #ifdef amd64 |
409 #define NPRGREG sun_jvm_hotspot_debugger_amd64_AMD64ThreadContext_NPRGREG |
413 #define NPRGREG sun_jvm_hotspot_debugger_amd64_AMD64ThreadContext_NPRGREG |
410 #endif |
414 #endif |
423 CHECK_EXCEPTION_(0); |
427 CHECK_EXCEPTION_(0); |
424 regs = (*env)->GetLongArrayElements(env, array, &isCopy); |
428 regs = (*env)->GetLongArrayElements(env, array, &isCopy); |
425 |
429 |
426 #undef REG_INDEX |
430 #undef REG_INDEX |
427 |
431 |
428 #ifdef i386 |
432 #ifdef i586 |
429 #define REG_INDEX(reg) sun_jvm_hotspot_debugger_x86_X86ThreadContext_##reg |
433 #define REG_INDEX(reg) sun_jvm_hotspot_debugger_x86_X86ThreadContext_##reg |
430 |
434 |
431 regs[REG_INDEX(GS)] = (uintptr_t) gregs.xgs; |
435 regs[REG_INDEX(GS)] = (uintptr_t) gregs.xgs; |
432 regs[REG_INDEX(FS)] = (uintptr_t) gregs.xfs; |
436 regs[REG_INDEX(FS)] = (uintptr_t) gregs.xfs; |
433 regs[REG_INDEX(ES)] = (uintptr_t) gregs.xes; |
437 regs[REG_INDEX(ES)] = (uintptr_t) gregs.xes; |
442 regs[REG_INDEX(EAX)] = (uintptr_t) gregs.eax; |
446 regs[REG_INDEX(EAX)] = (uintptr_t) gregs.eax; |
443 regs[REG_INDEX(PC)] = (uintptr_t) gregs.eip; |
447 regs[REG_INDEX(PC)] = (uintptr_t) gregs.eip; |
444 regs[REG_INDEX(CS)] = (uintptr_t) gregs.xcs; |
448 regs[REG_INDEX(CS)] = (uintptr_t) gregs.xcs; |
445 regs[REG_INDEX(SS)] = (uintptr_t) gregs.xss; |
449 regs[REG_INDEX(SS)] = (uintptr_t) gregs.xss; |
446 |
450 |
447 #endif /* i386 */ |
451 #endif /* i586 */ |
448 |
452 |
449 #ifdef amd64 |
453 #ifdef amd64 |
450 #define REG_INDEX(reg) sun_jvm_hotspot_debugger_amd64_AMD64ThreadContext_##reg |
454 #define REG_INDEX(reg) sun_jvm_hotspot_debugger_amd64_AMD64ThreadContext_##reg |
451 |
455 |
452 regs[REG_INDEX(R15)] = gregs.r15; |
456 regs[REG_INDEX(R15)] = gregs.r15; |