equal
deleted
inserted
replaced
277 #endif |
277 #endif |
278 |
278 |
279 address os::current_stack_pointer() { |
279 address os::current_stack_pointer() { |
280 #if defined(__clang__) || defined(__llvm__) |
280 #if defined(__clang__) || defined(__llvm__) |
281 register void *esp; |
281 register void *esp; |
282 __asm__("mov %%"SPELL_REG_SP", %0":"=r"(esp)); |
282 __asm__("mov %%" SPELL_REG_SP ", %0":"=r"(esp)); |
283 return (address) esp; |
283 return (address) esp; |
284 #elif defined(SPARC_WORKS) |
284 #elif defined(SPARC_WORKS) |
285 register void *esp; |
285 register void *esp; |
286 __asm__("mov %%"SPELL_REG_SP", %0":"=r"(esp)); |
286 __asm__("mov %%" SPELL_REG_SP ", %0":"=r"(esp)); |
287 return (address) ((char*)esp + sizeof(long)*2); |
287 return (address) ((char*)esp + sizeof(long)*2); |
288 #else |
288 #else |
289 register void *esp __asm__ (SPELL_REG_SP); |
289 register void *esp __asm__ (SPELL_REG_SP); |
290 return (address) esp; |
290 return (address) esp; |
291 #endif |
291 #endif |
413 } |
413 } |
414 |
414 |
415 intptr_t* _get_previous_fp() { |
415 intptr_t* _get_previous_fp() { |
416 #if defined(SPARC_WORKS) || defined(__clang__) || defined(__llvm__) |
416 #if defined(SPARC_WORKS) || defined(__clang__) || defined(__llvm__) |
417 register intptr_t **ebp; |
417 register intptr_t **ebp; |
418 __asm__("mov %%"SPELL_REG_FP", %0":"=r"(ebp)); |
418 __asm__("mov %%" SPELL_REG_FP ", %0":"=r"(ebp)); |
419 #else |
419 #else |
420 register intptr_t **ebp __asm__ (SPELL_REG_FP); |
420 register intptr_t **ebp __asm__ (SPELL_REG_FP); |
421 #endif |
421 #endif |
422 // ebp is for this frame (_get_previous_fp). We want the ebp for the |
422 // ebp is for this frame (_get_previous_fp). We want the ebp for the |
423 // caller of os::current_frame*(), so go up two frames. However, for |
423 // caller of os::current_frame*(), so go up two frames. However, for |