aboutsummaryrefslogtreecommitdiff
path: root/tcg/tcg.h
diff options
context:
space:
mode:
authormalc <malc@c046a42c-6fe2-441c-8c8c-71466251a162>2008-07-23 19:17:46 +0000
committermalc <malc@c046a42c-6fe2-441c-8c8c-71466251a162>2008-07-23 19:17:46 +0000
commit810260a8f334d6faa2749a3729f180dff8bae76b (patch)
tree01cd1f45b6e6c5e2c92763fbc364a2acbe4177a1 /tcg/tcg.h
parente0e6c8c057efab0de1b4fa90e1c40deb5b22ad20 (diff)
Preliminary PPC64/Linux host support
ppc64.ld from Heikki Lindholm's patch http://marc.info/?l=qemu-devel&m=114086179024634&w=2 Issues: x86_64 tripple faults shortly after decompressing the kernel No immediate versions of most 64 bit operations More... git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@4932 c046a42c-6fe2-441c-8c8c-71466251a162
Diffstat (limited to 'tcg/tcg.h')
-rw-r--r--tcg/tcg.h15
1 files changed, 15 insertions, 0 deletions
diff --git a/tcg/tcg.h b/tcg/tcg.h
index 2ce36b8786..a3c9de98e5 100644
--- a/tcg/tcg.h
+++ b/tcg/tcg.h
@@ -414,8 +414,23 @@ uint64_t tcg_helper_remu_i64(uint64_t arg1, uint64_t arg2);
extern uint8_t code_gen_prologue[];
#ifdef __powerpc__
+#ifdef __powerpc64__
+#define tcg_qemu_tb_exec(tb_ptr) \
+ ({ unsigned long p; \
+ asm volatile ( \
+ "mtctr %1\n\t" \
+ "mr 3,%2\n\t" \
+ "bctrl\n\t" \
+ "mr %0,3\n\t" \
+ : "=r" (p) \
+ : "r" (code_gen_prologue), "r" (tb_ptr) \
+ : "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"); \
+ p; \
+ })
+#else
#define tcg_qemu_tb_exec(tb_ptr) \
((long REGPARM __attribute__ ((longcall)) (*)(void *))code_gen_prologue)(tb_ptr)
+#endif
#else
#define tcg_qemu_tb_exec(tb_ptr) ((long REGPARM (*)(void *))code_gen_prologue)(tb_ptr)
#endif