diff --git a/dyngen-exec.h b/dyngen-exec.h index 62bcbf33b59023fc3eb393780bf3cd398f0e74c2..2bf6922304b7dbf45b0b455882e84d11bd8eea92 100644 --- a/dyngen-exec.h +++ b/dyngen-exec.h @@ -209,16 +209,22 @@ extern int __op_param1, __op_param2, __op_param3; extern int __op_jmp0, __op_jmp1, __op_jmp2, __op_jmp3; +#if defined(_WIN32) +#define ASM_NAME(x) "_" #x +#else +#define ASM_NAME(x) #x +#endif + #ifdef __i386__ #define EXIT_TB() asm volatile ("ret") -#define GOTO_LABEL_PARAM(n) asm volatile ("jmp __op_gen_label" #n) +#define GOTO_LABEL_PARAM(n) asm volatile ("jmp " ASM_NAME(__op_gen_label) #n) #endif #ifdef __x86_64__ #define EXIT_TB() asm volatile ("ret") #endif #ifdef __powerpc__ #define EXIT_TB() asm volatile ("blr") -#define GOTO_LABEL_PARAM(n) asm volatile ("b __op_gen_label" #n) +#define GOTO_LABEL_PARAM(n) asm volatile ("b " ASM_NAME(__op_gen_label) #n) #endif #ifdef __s390__ #define EXIT_TB() asm volatile ("br %r14")