diff options
author | bellard <bellard@c046a42c-6fe2-441c-8c8c-71466251a162> | 2003-07-11 15:17:41 +0000 |
---|---|---|
committer | bellard <bellard@c046a42c-6fe2-441c-8c8c-71466251a162> | 2003-07-11 15:17:41 +0000 |
commit | 9621339dcacc148a86d312d1e71623202c9df7db (patch) | |
tree | f9fc7030ac6c63cf302f03c8297990e0fa90b205 /dyngen-exec.h | |
parent | ede28208d86096cd80699d8105f8ee2e909c4268 (diff) |
changed basic block exit generation
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@322 c046a42c-6fe2-441c-8c8c-71466251a162
Diffstat (limited to 'dyngen-exec.h')
-rw-r--r-- | dyngen-exec.h | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/dyngen-exec.h b/dyngen-exec.h index f588ef0f37..e5b5e5fde8 100644 --- a/dyngen-exec.h +++ b/dyngen-exec.h @@ -125,6 +125,8 @@ extern int printf(const char *, ...); #define xglue(x, y) x ## y #define glue(x, y) xglue(x, y) +#define stringify(s) tostring(s) +#define tostring(s) #s #ifdef __alpha__ /* the symbols are considered non exported so a br immediate is generated */ @@ -153,3 +155,27 @@ extern int __op_param1, __op_param2, __op_param3; #endif extern int __op_jmp0, __op_jmp1; + +#ifdef __i386__ +#define EXIT_TB() asm volatile ("ret") +#endif +#ifdef __powerpc__ +#define EXIT_TB() asm volatile ("blr") +#endif +#ifdef __s390__ +#define EXIT_TB() asm volatile ("br %r14") +#endif +#ifdef __alpha__ +#define EXIT_TB() asm volatile ("ret") +#endif +#ifdef __ia64__ +#define EXIT_TB() asm volatile ("br.ret.sptk.many b0;;") +#endif +#ifdef __sparc__ +#define EXIT_TB() asm volatile ("jmpl %i0 + 8, %g0\n" + "nop") +#endif +#ifdef __arm__ +#define EXIT_TB() asm volatile ("b exec_loop") +#endif + |