Commit d03d860b151d382e3a158e8e27838729cfcda075
1 parent
815a6742
Link ARM prologue closer to code segment to avoid a build failure
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@4867 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
2 changed files
with
14 additions
and
1 deletions
arm.ld
exec.c
| @@ -89,7 +89,19 @@ int nb_tbs; | @@ -89,7 +89,19 @@ int nb_tbs; | ||
| 89 | /* any access to the tbs or the page table must use this lock */ | 89 | /* any access to the tbs or the page table must use this lock */ |
| 90 | spinlock_t tb_lock = SPIN_LOCK_UNLOCKED; | 90 | spinlock_t tb_lock = SPIN_LOCK_UNLOCKED; |
| 91 | 91 | ||
| 92 | -uint8_t code_gen_prologue[1024] __attribute__((aligned (32))); | 92 | +#if defined(__arm__) |
| 93 | +/* The prologue must be reachable with a direct jump. ARM has a | ||
| 94 | + limited branch range (possibly also PPC and SPARC?) so place it in a | ||
| 95 | + section close to code segment. */ | ||
| 96 | +#define code_gen_section \ | ||
| 97 | + __attribute__((__section__(".gen_code"))) \ | ||
| 98 | + __attribute__((aligned (32))) | ||
| 99 | +#else | ||
| 100 | +#define code_gen_section \ | ||
| 101 | + __attribute__((aligned (32))) | ||
| 102 | +#endif | ||
| 103 | + | ||
| 104 | +uint8_t code_gen_prologue[1024] code_gen_section; | ||
| 93 | uint8_t *code_gen_buffer; | 105 | uint8_t *code_gen_buffer; |
| 94 | unsigned long code_gen_buffer_size; | 106 | unsigned long code_gen_buffer_size; |
| 95 | /* threshold to flush the translated code buffer */ | 107 | /* threshold to flush the translated code buffer */ |