Mercurial > hg > truffle
comparison src/os_cpu/linux_x86/vm/os_linux_x86.cpp @ 10398:2cb5d5f6d5e5
8015252: Enable HotSpot build with Clang
Reviewed-by: twisti, dholmes, kvn
author | simonis |
---|---|
date | Tue, 04 Jun 2013 22:16:15 -0700 |
parents | 746b070f5022 |
children | 836a62f43af9 9ba41a4a71ff |
comparison
equal
deleted
inserted
replaced
10397:075ea888b039 | 10398:2cb5d5f6d5e5 |
---|---|
91 address os::current_stack_pointer() { | 91 address os::current_stack_pointer() { |
92 #ifdef SPARC_WORKS | 92 #ifdef SPARC_WORKS |
93 register void *esp; | 93 register void *esp; |
94 __asm__("mov %%"SPELL_REG_SP", %0":"=r"(esp)); | 94 __asm__("mov %%"SPELL_REG_SP", %0":"=r"(esp)); |
95 return (address) ((char*)esp + sizeof(long)*2); | 95 return (address) ((char*)esp + sizeof(long)*2); |
96 #elif defined(__clang__) | |
97 intptr_t* esp; | |
98 __asm__ __volatile__ ("mov %%"SPELL_REG_SP", %0":"=r"(esp):); | |
99 return (address) esp; | |
96 #else | 100 #else |
97 register void *esp __asm__ (SPELL_REG_SP); | 101 register void *esp __asm__ (SPELL_REG_SP); |
98 return (address) esp; | 102 return (address) esp; |
99 #endif | 103 #endif |
100 } | 104 } |
173 | 177 |
174 intptr_t* _get_previous_fp() { | 178 intptr_t* _get_previous_fp() { |
175 #ifdef SPARC_WORKS | 179 #ifdef SPARC_WORKS |
176 register intptr_t **ebp; | 180 register intptr_t **ebp; |
177 __asm__("mov %%"SPELL_REG_FP", %0":"=r"(ebp)); | 181 __asm__("mov %%"SPELL_REG_FP", %0":"=r"(ebp)); |
182 #elif defined(__clang__) | |
183 intptr_t **ebp; | |
184 __asm__ __volatile__ ("mov %%"SPELL_REG_FP", %0":"=r"(ebp):); | |
178 #else | 185 #else |
179 register intptr_t **ebp __asm__ (SPELL_REG_FP); | 186 register intptr_t **ebp __asm__ (SPELL_REG_FP); |
180 #endif | 187 #endif |
181 return (intptr_t*) *ebp; // we want what it points to. | 188 return (intptr_t*) *ebp; // we want what it points to. |
182 } | 189 } |