Revision 9bbc5cc8 exec-all.h
b/exec-all.h | ||
---|---|---|
340 | 340 |
"1:\n");\ |
341 | 341 |
} while (0) |
342 | 342 |
|
343 |
#elif defined(__s390__) |
|
344 |
/* GCC spills R13, so we have to restore it before branching away */ |
|
345 |
|
|
346 |
#define GOTO_TB(opname, tbparam, n)\ |
|
347 |
do {\ |
|
348 |
static void __attribute__((used)) *dummy ## n = &&dummy_label ## n;\ |
|
349 |
static void __attribute__((used)) *__op_label ## n \ |
|
350 |
__asm__(ASM_OP_LABEL_NAME(n, opname)) = &&label ## n;\ |
|
351 |
__asm__ __volatile__ ( \ |
|
352 |
"l %%r13,52(%%r15)\n" \ |
|
353 |
"br %0\n" \ |
|
354 |
: : "r" (((TranslationBlock*)tbparam)->tb_next[n]));\ |
|
355 |
\ |
|
356 |
for(;*((int*)0);); /* just to keep GCC busy */ \ |
|
357 |
label ## n: ;\ |
|
358 |
dummy_label ## n: ;\ |
|
359 |
} while(0) |
|
360 |
|
|
343 | 361 |
#else |
344 | 362 |
|
345 | 363 |
/* jump to next block operations (more portable code, does not need |
Also available in: Unified diff