equal
deleted
inserted
replaced
273 # define context_trapno uc_mcontext.__gregs[_REG_TRAPNO] |
273 # define context_trapno uc_mcontext.__gregs[_REG_TRAPNO] |
274 # endif |
274 # endif |
275 #endif |
275 #endif |
276 |
276 |
277 address os::current_stack_pointer() { |
277 address os::current_stack_pointer() { |
278 #ifdef SPARC_WORKS |
278 #if defined(__clang__) || defined(__llvm__) |
|
279 register void *esp; |
|
280 __asm__("mov %%"SPELL_REG_SP", %0":"=r"(esp)); |
|
281 return (address) esp; |
|
282 #elif defined(SPARC_WORKS) |
279 register void *esp; |
283 register void *esp; |
280 __asm__("mov %%"SPELL_REG_SP", %0":"=r"(esp)); |
284 __asm__("mov %%"SPELL_REG_SP", %0":"=r"(esp)); |
281 return (address) ((char*)esp + sizeof(long)*2); |
285 return (address) ((char*)esp + sizeof(long)*2); |
282 #else |
286 #else |
283 register void *esp __asm__ (SPELL_REG_SP); |
287 register void *esp __asm__ (SPELL_REG_SP); |
356 frame os::get_sender_for_C_frame(frame* fr) { |
360 frame os::get_sender_for_C_frame(frame* fr) { |
357 return frame(fr->sender_sp(), fr->link(), fr->sender_pc()); |
361 return frame(fr->sender_sp(), fr->link(), fr->sender_pc()); |
358 } |
362 } |
359 |
363 |
360 intptr_t* _get_previous_fp() { |
364 intptr_t* _get_previous_fp() { |
361 #ifdef SPARC_WORKS |
365 #if defined(SPARC_WORKS) || defined(__clang__) |
362 register intptr_t **ebp; |
366 register intptr_t **ebp; |
363 __asm__("mov %%"SPELL_REG_FP", %0":"=r"(ebp)); |
367 __asm__("mov %%"SPELL_REG_FP", %0":"=r"(ebp)); |
364 #else |
368 #else |
365 register intptr_t **ebp __asm__ (SPELL_REG_FP); |
369 register intptr_t **ebp __asm__ (SPELL_REG_FP); |
366 #endif |
370 #endif |