diff -r cc19612c6b9f -r 91935236600e hotspot/src/os_cpu/bsd_x86/vm/os_bsd_x86.cpp --- a/hotspot/src/os_cpu/bsd_x86/vm/os_bsd_x86.cpp Mon Oct 10 21:01:36 2011 -0400 +++ b/hotspot/src/os_cpu/bsd_x86/vm/os_bsd_x86.cpp Thu Oct 13 09:35:42 2011 -0700 @@ -275,7 +275,11 @@ #endif address os::current_stack_pointer() { -#ifdef SPARC_WORKS +#if defined(__clang__) || defined(__llvm__) + register void *esp; + __asm__("mov %%"SPELL_REG_SP", %0":"=r"(esp)); + return (address) esp; +#elif defined(SPARC_WORKS) register void *esp; __asm__("mov %%"SPELL_REG_SP", %0":"=r"(esp)); return (address) ((char*)esp + sizeof(long)*2); @@ -358,7 +362,7 @@ } intptr_t* _get_previous_fp() { -#ifdef SPARC_WORKS +#if defined(SPARC_WORKS) || defined(__clang__) register intptr_t **ebp; __asm__("mov %%"SPELL_REG_FP", %0":"=r"(ebp)); #else