Commit bd497938895ec4fd7b327aac4de390e34f543509
1 parent
16d17fdb
use generic GenOpFunc
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@543 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
3 changed files
with
4 additions
and
36 deletions
target-arm/translate.c
| @@ -51,11 +51,6 @@ enum { | @@ -51,11 +51,6 @@ enum { | ||
| 51 | 51 | ||
| 52 | #include "gen-op.h" | 52 | #include "gen-op.h" |
| 53 | 53 | ||
| 54 | -typedef void (GenOpFunc)(void); | ||
| 55 | -typedef void (GenOpFunc1)(long); | ||
| 56 | -typedef void (GenOpFunc2)(long, long); | ||
| 57 | -typedef void (GenOpFunc3)(long, long, long); | ||
| 58 | - | ||
| 59 | static GenOpFunc2 *gen_test_cc[14] = { | 54 | static GenOpFunc2 *gen_test_cc[14] = { |
| 60 | gen_op_test_eq, | 55 | gen_op_test_eq, |
| 61 | gen_op_test_ne, | 56 | gen_op_test_ne, |
target-i386/translate.c
| @@ -128,11 +128,6 @@ enum { | @@ -128,11 +128,6 @@ enum { | ||
| 128 | NB_OREGS, | 128 | NB_OREGS, |
| 129 | }; | 129 | }; |
| 130 | 130 | ||
| 131 | -typedef void (GenOpFunc)(void); | ||
| 132 | -typedef void (GenOpFunc1)(long); | ||
| 133 | -typedef void (GenOpFunc2)(long, long); | ||
| 134 | -typedef void (GenOpFunc3)(long, long, long); | ||
| 135 | - | ||
| 136 | static GenOpFunc *gen_op_mov_reg_T0[3][8] = { | 131 | static GenOpFunc *gen_op_mov_reg_T0[3][8] = { |
| 137 | [OT_BYTE] = { | 132 | [OT_BYTE] = { |
| 138 | gen_op_movb_EAX_T0, | 133 | gen_op_movb_EAX_T0, |
target-sparc/translate.c
| @@ -2,6 +2,7 @@ | @@ -2,6 +2,7 @@ | ||
| 2 | SPARC translation | 2 | SPARC translation |
| 3 | 3 | ||
| 4 | Copyright (C) 2003 Thomas M. Ogrisegg <tom@fnord.at> | 4 | Copyright (C) 2003 Thomas M. Ogrisegg <tom@fnord.at> |
| 5 | + Copyright (C) 2003 Fabrice Bellard | ||
| 5 | 6 | ||
| 6 | This library is free software; you can redistribute it and/or | 7 | This library is free software; you can redistribute it and/or |
| 7 | modify it under the terms of the GNU Lesser General Public | 8 | modify it under the terms of the GNU Lesser General Public |
| @@ -19,33 +20,15 @@ | @@ -19,33 +20,15 @@ | ||
| 19 | */ | 20 | */ |
| 20 | 21 | ||
| 21 | /* | 22 | /* |
| 22 | - SPARC has two pitfalls: Delay slots and (a)nullification. | ||
| 23 | - This is currently solved as follows: | ||
| 24 | - | ||
| 25 | - 'call' instructions simply execute the delay slot before the actual | ||
| 26 | - control transfer instructions. | ||
| 27 | - | ||
| 28 | - 'jmpl' instructions execute calculate the destination, then execute | ||
| 29 | - the delay slot and then do the control transfer. | ||
| 30 | - | ||
| 31 | - (conditional) branch instructions are the most difficult ones, as the | ||
| 32 | - delay slot may be nullified (ie. not executed). This happens when a | ||
| 33 | - conditional branch is not executed (thus no control transfer happens) | ||
| 34 | - and the 'anull' bit in the branch instruction opcode is set. This is | ||
| 35 | - currently solved by doing a jump after the delay slot instruction. | ||
| 36 | - | ||
| 37 | TODO-list: | 23 | TODO-list: |
| 38 | 24 | ||
| 39 | - Register window overflow/underflow check | 25 | + NPC/PC static optimisations (use JUMP_TB when possible) |
| 40 | FPU-Instructions | 26 | FPU-Instructions |
| 41 | - Coprocessor-Instructions | ||
| 42 | - Check signedness issues | ||
| 43 | Privileged instructions | 27 | Privileged instructions |
| 28 | + Coprocessor-Instructions | ||
| 44 | Optimize synthetic instructions | 29 | Optimize synthetic instructions |
| 45 | Optional alignment and privileged instruction check | 30 | Optional alignment and privileged instruction check |
| 46 | - | ||
| 47 | - -- TMO, 09/03/03 | ||
| 48 | - */ | 31 | +*/ |
| 49 | 32 | ||
| 50 | #include <stdarg.h> | 33 | #include <stdarg.h> |
| 51 | #include <stdlib.h> | 34 | #include <stdlib.h> |
| @@ -87,11 +70,6 @@ enum { | @@ -87,11 +70,6 @@ enum { | ||
| 87 | 70 | ||
| 88 | static void disas_sparc_insn(DisasContext * dc); | 71 | static void disas_sparc_insn(DisasContext * dc); |
| 89 | 72 | ||
| 90 | -typedef void (GenOpFunc) (void); | ||
| 91 | -typedef void (GenOpFunc1) (long); | ||
| 92 | -typedef void (GenOpFunc2) (long, long); | ||
| 93 | -typedef void (GenOpFunc3) (long, long, long); | ||
| 94 | - | ||
| 95 | static GenOpFunc *gen_op_movl_TN_reg[2][32] = { | 73 | static GenOpFunc *gen_op_movl_TN_reg[2][32] = { |
| 96 | { | 74 | { |
| 97 | gen_op_movl_g0_T0, | 75 | gen_op_movl_g0_T0, |