Changeset 182 in vbox for trunk/src/recompiler
- Timestamp:
- Jan 19, 2007 3:41:26 PM (18 years ago)
- svn:sync-xref-src-repo-rev:
- 17656
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/recompiler/new/exec-all.h
r1 r182 205 205 uint16_t tb_jmp_offset[4]; /* offset of jump instruction */ 206 206 #else 207 # if defined(VBOX) && defined(__DARWIN__) && defined(__AMD64__) 208 # error "First 4GB aren't reachable. jmp dword [tb_next] wont work." 209 # endif 207 210 uint32_t tb_next[2]; /* address of jump generated code */ 208 211 #endif … … 363 366 variables. I've added a dummy __asm__ statement which reference 364 367 the two variables to prevent this. */ 365 #define GOTO_TB(opname, tbparam, n)\ 366 do {\ 367 static void __attribute__((unused)) *dummy ## n = &&dummy_label ## n;\ 368 static void __attribute__((unused)) *__op_label ## n \ 369 __asm__(ASM_OP_LABEL_NAME(n, opname)) = &&label ## n;\ 370 __asm__ ("" : : "m" (__op_label ## n), "m" (dummy ## n));\ 371 goto *(void *)(((TranslationBlock *)tbparam)->tb_next[n]);\ 372 label ## n: ;\ 373 dummy_label ## n: ;\ 374 } while (0) 368 # if __GNUC__ >= 4 369 # define GOTO_TB(opname, tbparam, n)\ 370 do {\ 371 static void __attribute__((unused)) *dummy ## n = &&dummy_label ## n;\ 372 static void __attribute__((unused)) *__op_label ## n \ 373 __asm__(ASM_OP_LABEL_NAME(n, opname)) = &&label ## n;\ 374 __asm__ ("" : : "m" (__op_label ## n), "m" (dummy ## n));\ 375 goto *(void *)(uintptr_t)(((TranslationBlock *)tbparam)->tb_next[n]);\ 376 label ## n: ;\ 377 dummy_label ## n: ;\ 378 } while (0) 379 # else 380 # define GOTO_TB(opname, tbparam, n)\ 381 do {\ 382 static void __attribute__((unused)) *dummy ## n = &&dummy_label ## n;\ 383 static void __attribute__((unused)) *__op_label ## n \ 384 __asm__(ASM_OP_LABEL_NAME(n, opname)) = &&label ## n;\ 385 goto *(void *)(uintptr_t)(((TranslationBlock *)tbparam)->tb_next[n]);\ 386 label ## n: ;\ 387 dummy_label ## n: ;\ 388 } while (0) 389 # endif 375 390 # else /* !VBOX */ 376 391 #define GOTO_TB(opname, tbparam, n)\
Note:
See TracChangeset
for help on using the changeset viewer.