hotspot/agent/src/os/linux/LinuxDebuggerLocal.c
changeset 15475 73896d91270c
parent 13529 dc25e69fd16d
child 15850 0d2f541fd6ed
equal deleted inserted replaced
15474:62425bb6b9e3 15475:73896d91270c
   278   err = ps_pdread(get_proc_handle(env, this_obj), (psaddr_t) (uintptr_t)addr, bufPtr, numBytes);
   278   err = ps_pdread(get_proc_handle(env, this_obj), (psaddr_t) (uintptr_t)addr, bufPtr, numBytes);
   279   (*env)->ReleaseByteArrayElements(env, array, bufPtr, 0);
   279   (*env)->ReleaseByteArrayElements(env, array, bufPtr, 0);
   280   return (err == PS_OK)? array : 0;
   280   return (err == PS_OK)? array : 0;
   281 }
   281 }
   282 
   282 
   283 #if defined(i386) || defined(ia64) || defined(amd64) || defined(sparc) || defined(sparcv9)
   283 #if defined(i386) || defined(amd64) || defined(sparc) || defined(sparcv9)
   284 JNIEXPORT jlongArray JNICALL Java_sun_jvm_hotspot_debugger_linux_LinuxDebuggerLocal_getThreadIntegerRegisterSet0
   284 JNIEXPORT jlongArray JNICALL Java_sun_jvm_hotspot_debugger_linux_LinuxDebuggerLocal_getThreadIntegerRegisterSet0
   285   (JNIEnv *env, jobject this_obj, jint lwp_id) {
   285   (JNIEnv *env, jobject this_obj, jint lwp_id) {
   286 
   286 
   287   struct user_regs_struct gregs;
   287   struct user_regs_struct gregs;
   288   jboolean isCopy;
   288   jboolean isCopy;
   296   }
   296   }
   297 
   297 
   298 #undef NPRGREG
   298 #undef NPRGREG
   299 #ifdef i386
   299 #ifdef i386
   300 #define NPRGREG sun_jvm_hotspot_debugger_x86_X86ThreadContext_NPRGREG
   300 #define NPRGREG sun_jvm_hotspot_debugger_x86_X86ThreadContext_NPRGREG
   301 #endif
       
   302 #ifdef ia64
       
   303 #define NPRGREG IA64_REG_COUNT
       
   304 #endif
   301 #endif
   305 #ifdef amd64
   302 #ifdef amd64
   306 #define NPRGREG sun_jvm_hotspot_debugger_amd64_AMD64ThreadContext_NPRGREG
   303 #define NPRGREG sun_jvm_hotspot_debugger_amd64_AMD64ThreadContext_NPRGREG
   307 #endif
   304 #endif
   308 #if defined(sparc) || defined(sparcv9)
   305 #if defined(sparc) || defined(sparcv9)
   333   regs[REG_INDEX(PC)] = (uintptr_t) gregs.eip;
   330   regs[REG_INDEX(PC)] = (uintptr_t) gregs.eip;
   334   regs[REG_INDEX(CS)]  = (uintptr_t) gregs.xcs;
   331   regs[REG_INDEX(CS)]  = (uintptr_t) gregs.xcs;
   335   regs[REG_INDEX(SS)]  = (uintptr_t) gregs.xss;
   332   regs[REG_INDEX(SS)]  = (uintptr_t) gregs.xss;
   336 
   333 
   337 #endif /* i386 */
   334 #endif /* i386 */
   338 
       
   339 #if ia64
       
   340   regs = (*env)->GetLongArrayElements(env, array, &isCopy);
       
   341   for (i = 0; i < NPRGREG; i++ ) {
       
   342     regs[i] = 0xDEADDEAD;
       
   343   }
       
   344 #endif /* ia64 */
       
   345 
   335 
   346 #ifdef amd64
   336 #ifdef amd64
   347 #define REG_INDEX(reg) sun_jvm_hotspot_debugger_amd64_AMD64ThreadContext_##reg
   337 #define REG_INDEX(reg) sun_jvm_hotspot_debugger_amd64_AMD64ThreadContext_##reg
   348 
   338 
   349   regs[REG_INDEX(R15)] = gregs.r15;
   339   regs[REG_INDEX(R15)] = gregs.r15;