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 | 51 | |
52 | 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 | 54 | static GenOpFunc2 *gen_test_cc[14] = { |
60 | 55 | gen_op_test_eq, |
61 | 56 | gen_op_test_ne, | ... | ... |
target-i386/translate.c
... | ... | @@ -128,11 +128,6 @@ enum { |
128 | 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 | 131 | static GenOpFunc *gen_op_mov_reg_T0[3][8] = { |
137 | 132 | [OT_BYTE] = { |
138 | 133 | gen_op_movb_EAX_T0, | ... | ... |
target-sparc/translate.c
... | ... | @@ -2,6 +2,7 @@ |
2 | 2 | SPARC translation |
3 | 3 | |
4 | 4 | Copyright (C) 2003 Thomas M. Ogrisegg <tom@fnord.at> |
5 | + Copyright (C) 2003 Fabrice Bellard | |
5 | 6 | |
6 | 7 | This library is free software; you can redistribute it and/or |
7 | 8 | modify it under the terms of the GNU Lesser General Public |
... | ... | @@ -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 | 23 | TODO-list: |
38 | 24 | |
39 | - Register window overflow/underflow check | |
25 | + NPC/PC static optimisations (use JUMP_TB when possible) | |
40 | 26 | FPU-Instructions |
41 | - Coprocessor-Instructions | |
42 | - Check signedness issues | |
43 | 27 | Privileged instructions |
28 | + Coprocessor-Instructions | |
44 | 29 | Optimize synthetic instructions |
45 | 30 | Optional alignment and privileged instruction check |
46 | - | |
47 | - -- TMO, 09/03/03 | |
48 | - */ | |
31 | +*/ | |
49 | 32 | |
50 | 33 | #include <stdarg.h> |
51 | 34 | #include <stdlib.h> |
... | ... | @@ -87,11 +70,6 @@ enum { |
87 | 70 | |
88 | 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 | 73 | static GenOpFunc *gen_op_movl_TN_reg[2][32] = { |
96 | 74 | { |
97 | 75 | gen_op_movl_g0_T0, | ... | ... |