334 st->print("L6="); print_location(st, sp[L6->sp_offset_in_saved_window()]);
335 st->print("L7="); print_location(st, sp[L7->sp_offset_in_saved_window()]);
336 st->cr();
337
338 st->print("I0="); print_location(st, sp[I0->sp_offset_in_saved_window()]);
339 st->print("I1="); print_location(st, sp[I1->sp_offset_in_saved_window()]);
340 st->print("I2="); print_location(st, sp[I2->sp_offset_in_saved_window()]);
341 st->print("I3="); print_location(st, sp[I3->sp_offset_in_saved_window()]);
342 st->print("I4="); print_location(st, sp[I4->sp_offset_in_saved_window()]);
343 st->print("I5="); print_location(st, sp[I5->sp_offset_in_saved_window()]);
344 st->print("I6="); print_location(st, sp[I6->sp_offset_in_saved_window()]);
345 st->print("I7="); print_location(st, sp[I7->sp_offset_in_saved_window()]);
346 st->cr();
347 }
348
349
350 address os::Linux::ucontext_get_pc(ucontext_t* uc) {
351 return (address) SIG_PC((sigcontext*)uc);
352 }
353
354 intptr_t* os::Linux::ucontext_get_sp(ucontext_t *uc) {
355 return (intptr_t*)
356 ((intptr_t)SIG_REGS((sigcontext*)uc).u_regs[CON_O6] + STACK_BIAS);
357 }
358
359 // not used on Sparc
360 intptr_t* os::Linux::ucontext_get_fp(ucontext_t *uc) {
361 ShouldNotReachHere();
362 return NULL;
363 }
364
365 // Utility functions
366
367 inline static bool checkPrefetch(sigcontext* uc, address pc) {
368 if (StubRoutines::is_safefetch_fault(pc)) {
369 set_cont_address(uc, address(StubRoutines::continuation_for_safefetch_fault(pc)));
370 return true;
371 }
372 return false;
373 }
|
334 st->print("L6="); print_location(st, sp[L6->sp_offset_in_saved_window()]);
335 st->print("L7="); print_location(st, sp[L7->sp_offset_in_saved_window()]);
336 st->cr();
337
338 st->print("I0="); print_location(st, sp[I0->sp_offset_in_saved_window()]);
339 st->print("I1="); print_location(st, sp[I1->sp_offset_in_saved_window()]);
340 st->print("I2="); print_location(st, sp[I2->sp_offset_in_saved_window()]);
341 st->print("I3="); print_location(st, sp[I3->sp_offset_in_saved_window()]);
342 st->print("I4="); print_location(st, sp[I4->sp_offset_in_saved_window()]);
343 st->print("I5="); print_location(st, sp[I5->sp_offset_in_saved_window()]);
344 st->print("I6="); print_location(st, sp[I6->sp_offset_in_saved_window()]);
345 st->print("I7="); print_location(st, sp[I7->sp_offset_in_saved_window()]);
346 st->cr();
347 }
348
349
350 address os::Linux::ucontext_get_pc(ucontext_t* uc) {
351 return (address) SIG_PC((sigcontext*)uc);
352 }
353
354 void os::Linux::ucontext_set_pc(ucontext_t* uc, address pc) {
355 set_cont_address((sigcontext_t*) uc, pc);
356 }
357
358 intptr_t* os::Linux::ucontext_get_sp(ucontext_t *uc) {
359 return (intptr_t*)
360 ((intptr_t)SIG_REGS((sigcontext*)uc).u_regs[CON_O6] + STACK_BIAS);
361 }
362
363 // not used on Sparc
364 intptr_t* os::Linux::ucontext_get_fp(ucontext_t *uc) {
365 ShouldNotReachHere();
366 return NULL;
367 }
368
369 // Utility functions
370
371 inline static bool checkPrefetch(sigcontext* uc, address pc) {
372 if (StubRoutines::is_safefetch_fault(pc)) {
373 set_cont_address(uc, address(StubRoutines::continuation_for_safefetch_fault(pc)));
374 return true;
375 }
376 return false;
377 }
|