VirtualBox

Changeset 182 in vbox for trunk/src/recompiler


Ignore:
Timestamp:
Jan 19, 2007 3:41:26 PM (18 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
17656
Message:

gcc 3.3.3 didn't like my references to the two labels pointers. Also shut to two warnings and added an #error for amd64+darwin.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/recompiler/new/exec-all.h

    r1 r182  
    205205    uint16_t tb_jmp_offset[4]; /* offset of jump instruction */
    206206#else
     207# if defined(VBOX) && defined(__DARWIN__) && defined(__AMD64__)
     208#  error "First 4GB aren't reachable. jmp dword [tb_next] wont work."
     209# endif
    207210    uint32_t tb_next[2]; /* address of jump generated code */
    208211#endif
     
    363366                variables. I've added a dummy __asm__ statement which reference
    364367                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
    375390# else /* !VBOX */
    376391#define GOTO_TB(opname, tbparam, n)\
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette