diff options
author | malc <malc@c046a42c-6fe2-441c-8c8c-71466251a162> | 2008-07-23 19:17:46 +0000 |
---|---|---|
committer | malc <malc@c046a42c-6fe2-441c-8c8c-71466251a162> | 2008-07-23 19:17:46 +0000 |
commit | 810260a8f334d6faa2749a3729f180dff8bae76b (patch) | |
tree | 01cd1f45b6e6c5e2c92763fbc364a2acbe4177a1 /tcg/tcg.h | |
parent | e0e6c8c057efab0de1b4fa90e1c40deb5b22ad20 (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.h | 15 |
1 files changed, 15 insertions, 0 deletions
@@ -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 |