Commit c9e03d8f688dd915fa14d577493e60daf9a56b3c
1 parent
8e9ade68
Register op helpers
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@4534 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
2 changed files
with
101 additions
and
93 deletions
target-sparc/helper.h
1 | -#define TCG_HELPER_PROTO | |
1 | +#ifndef DEF_HELPER | |
2 | +#define DEF_HELPER(ret, name, params) ret name params; | |
3 | +#endif | |
2 | 4 | |
3 | 5 | #ifndef TARGET_SPARC64 |
4 | -void TCG_HELPER_PROTO helper_rett(void); | |
5 | -void TCG_HELPER_PROTO helper_wrpsr(target_ulong new_psr); | |
6 | -target_ulong TCG_HELPER_PROTO helper_rdpsr(void); | |
6 | +DEF_HELPER(void, helper_rett, (void)) | |
7 | +DEF_HELPER(void, helper_wrpsr, (target_ulong new_psr)) | |
8 | +DEF_HELPER(target_ulong, helper_rdpsr, (void)) | |
7 | 9 | #else |
8 | -void TCG_HELPER_PROTO helper_wrpstate(target_ulong new_state); | |
9 | -void TCG_HELPER_PROTO helper_done(void); | |
10 | -void TCG_HELPER_PROTO helper_retry(void); | |
11 | -void TCG_HELPER_PROTO helper_flushw(void); | |
12 | -void TCG_HELPER_PROTO helper_saved(void); | |
13 | -void TCG_HELPER_PROTO helper_restored(void); | |
14 | -target_ulong TCG_HELPER_PROTO helper_rdccr(void); | |
15 | -void TCG_HELPER_PROTO helper_wrccr(target_ulong new_ccr); | |
16 | -target_ulong TCG_HELPER_PROTO helper_rdcwp(void); | |
17 | -void TCG_HELPER_PROTO helper_wrcwp(target_ulong new_cwp); | |
18 | -target_ulong TCG_HELPER_PROTO helper_array8(target_ulong pixel_addr, | |
19 | - target_ulong cubesize); | |
20 | -target_ulong TCG_HELPER_PROTO helper_alignaddr(target_ulong addr, | |
21 | - target_ulong offset); | |
22 | -target_ulong TCG_HELPER_PROTO helper_popc(target_ulong val); | |
23 | -void TCG_HELPER_PROTO helper_ldf_asi(target_ulong addr, int asi, int size, | |
24 | - int rd); | |
25 | -void TCG_HELPER_PROTO helper_stf_asi(target_ulong addr, int asi, int size, | |
26 | - int rd); | |
27 | -target_ulong TCG_HELPER_PROTO | |
28 | -helper_cas_asi(target_ulong addr, target_ulong val1, | |
29 | - target_ulong val2, uint32_t asi); | |
30 | -target_ulong TCG_HELPER_PROTO | |
31 | -helper_casx_asi(target_ulong addr, target_ulong val1, | |
32 | - target_ulong val2, uint32_t asi); | |
33 | -void TCG_HELPER_PROTO helper_tick_set_count(void *opaque, uint64_t count); | |
34 | -uint64_t TCG_HELPER_PROTO helper_tick_get_count(void *opaque); | |
35 | -void TCG_HELPER_PROTO helper_tick_set_limit(void *opaque, uint64_t limit); | |
10 | +DEF_HELPER(void, helper_wrpstate, (target_ulong new_state)) | |
11 | +DEF_HELPER(void, helper_done, (void)) | |
12 | +DEF_HELPER(void, helper_retry, (void)) | |
13 | +DEF_HELPER(void, helper_flushw, (void)) | |
14 | +DEF_HELPER(void, helper_saved, (void)) | |
15 | +DEF_HELPER(void, helper_restored, (void)) | |
16 | +DEF_HELPER(target_ulong, helper_rdccr, (void)) | |
17 | +DEF_HELPER(void, helper_wrccr, (target_ulong new_ccr)) | |
18 | +DEF_HELPER(target_ulong, helper_rdcwp, (void)) | |
19 | +DEF_HELPER(void, helper_wrcwp, (target_ulong new_cwp)) | |
20 | +DEF_HELPER(target_ulong, helper_array8, (target_ulong pixel_addr, \ | |
21 | + target_ulong cubesize)) | |
22 | +DEF_HELPER(target_ulong, helper_alignaddr, (target_ulong addr, \ | |
23 | + target_ulong offset)) | |
24 | +DEF_HELPER(target_ulong, helper_popc, (target_ulong val)) | |
25 | +DEF_HELPER(void, helper_ldf_asi, (target_ulong addr, int asi, int size, int rd)) | |
26 | +DEF_HELPER(void, helper_stf_asi, (target_ulong addr, int asi, int size, int rd)) | |
27 | +DEF_HELPER(target_ulong, helper_cas_asi, (target_ulong addr, \ | |
28 | + target_ulong val1, \ | |
29 | + target_ulong val2, uint32_t asi)) | |
30 | +DEF_HELPER(target_ulong, helper_casx_asi, (target_ulong addr, \ | |
31 | + target_ulong val1, \ | |
32 | + target_ulong val2, uint32_t asi)) | |
33 | +DEF_HELPER(void, helper_tick_set_count, (void *opaque, uint64_t count)) | |
34 | +DEF_HELPER(uint64_t, helper_tick_get_count, (void *opaque)) | |
35 | +DEF_HELPER(void, helper_tick_set_limit, (void *opaque, uint64_t limit)) | |
36 | +#endif | |
37 | +DEF_HELPER(void, helper_trap, (target_ulong nb_trap)) | |
38 | +DEF_HELPER(void, helper_trapcc, (target_ulong nb_trap, target_ulong do_trap)) | |
39 | +DEF_HELPER(void, helper_check_align, (target_ulong addr, uint32_t align)) | |
40 | +DEF_HELPER(void, helper_debug, (void)) | |
41 | +DEF_HELPER(void, helper_save, (void)) | |
42 | +DEF_HELPER(void, helper_restore, (void)) | |
43 | +DEF_HELPER(void, helper_flush, (target_ulong addr)) | |
44 | +DEF_HELPER(target_ulong, helper_udiv, (target_ulong a, target_ulong b)) | |
45 | +DEF_HELPER(target_ulong, helper_sdiv, (target_ulong a, target_ulong b)) | |
46 | +DEF_HELPER(uint64_t, helper_pack64, (target_ulong high, target_ulong low)) | |
47 | +DEF_HELPER(void, helper_stdf, (target_ulong addr, int mem_idx)) | |
48 | +DEF_HELPER(void, helper_lddf, (target_ulong addr, int mem_idx)) | |
49 | +DEF_HELPER(void, helper_ldqf, (target_ulong addr, int mem_idx)) | |
50 | +DEF_HELPER(void, helper_stqf, (target_ulong addr, int mem_idx)) | |
51 | +#if !defined(CONFIG_USER_ONLY) || defined(TARGET_SPARC64) | |
52 | +DEF_HELPER(uint64_t, helper_ld_asi, (target_ulong addr, int asi, int size, \ | |
53 | + int sign)) | |
54 | +DEF_HELPER(void, helper_st_asi, (target_ulong addr, uint64_t val, int asi, \ | |
55 | + int size)) | |
36 | 56 | #endif |
37 | -void TCG_HELPER_PROTO helper_trap(target_ulong nb_trap); | |
38 | -void TCG_HELPER_PROTO helper_trapcc(target_ulong nb_trap, | |
39 | - target_ulong do_trap); | |
40 | -void TCG_HELPER_PROTO helper_check_align(target_ulong addr, uint32_t align); | |
41 | -void TCG_HELPER_PROTO helper_debug(void); | |
42 | -void TCG_HELPER_PROTO helper_save(void); | |
43 | -void TCG_HELPER_PROTO helper_restore(void); | |
44 | -void TCG_HELPER_PROTO helper_flush(target_ulong addr); | |
45 | -target_ulong TCG_HELPER_PROTO helper_udiv(target_ulong a, target_ulong b); | |
46 | -target_ulong TCG_HELPER_PROTO helper_sdiv(target_ulong a, target_ulong b); | |
47 | -uint64_t TCG_HELPER_PROTO helper_pack64(target_ulong high, target_ulong low); | |
48 | -void TCG_HELPER_PROTO helper_std_i386(target_ulong addr, int mem_idx); | |
49 | -void TCG_HELPER_PROTO helper_stdf(target_ulong addr, int mem_idx); | |
50 | -void TCG_HELPER_PROTO helper_lddf(target_ulong addr, int mem_idx); | |
51 | -void TCG_HELPER_PROTO helper_ldqf(target_ulong addr, int mem_idx); | |
52 | -void TCG_HELPER_PROTO helper_stqf(target_ulong addr, int mem_idx); | |
53 | -uint64_t TCG_HELPER_PROTO helper_ld_asi(target_ulong addr, int asi, | |
54 | - int size, int sign); | |
55 | -void TCG_HELPER_PROTO helper_st_asi(target_ulong addr, uint64_t val, int asi, | |
56 | - int size); | |
57 | -void TCG_HELPER_PROTO helper_ldfsr(void); | |
58 | -void TCG_HELPER_PROTO helper_stfsr(void); | |
59 | -void TCG_HELPER_PROTO helper_check_ieee_exceptions(void); | |
60 | -void TCG_HELPER_PROTO helper_clear_float_exceptions(void); | |
61 | -void TCG_HELPER_PROTO helper_fabss(void); | |
62 | -void TCG_HELPER_PROTO helper_fsqrts(void); | |
63 | -void TCG_HELPER_PROTO helper_fsqrtd(void); | |
64 | -void TCG_HELPER_PROTO helper_fcmps(void); | |
65 | -void TCG_HELPER_PROTO helper_fcmpd(void); | |
66 | -void TCG_HELPER_PROTO helper_fcmpes(void); | |
67 | -void TCG_HELPER_PROTO helper_fcmped(void); | |
68 | -void TCG_HELPER_PROTO helper_fsqrtq(void); | |
69 | -void TCG_HELPER_PROTO helper_fcmpq(void); | |
70 | -void TCG_HELPER_PROTO helper_fcmpeq(void); | |
57 | +DEF_HELPER(void, helper_ldfsr, (void)) | |
58 | +DEF_HELPER(void, helper_stfsr, (void)) | |
59 | +DEF_HELPER(void, helper_check_ieee_exceptions, (void)) | |
60 | +DEF_HELPER(void, helper_clear_float_exceptions, (void)) | |
61 | +DEF_HELPER(void, helper_fabss, (void)) | |
62 | +DEF_HELPER(void, helper_fsqrts, (void)) | |
63 | +DEF_HELPER(void, helper_fsqrtd, (void)) | |
64 | +DEF_HELPER(void, helper_fcmps, (void)) | |
65 | +DEF_HELPER(void, helper_fcmpd, (void)) | |
66 | +DEF_HELPER(void, helper_fcmpes, (void)) | |
67 | +DEF_HELPER(void, helper_fcmped, (void)) | |
68 | +DEF_HELPER(void, helper_fsqrtq, (void)) | |
69 | +DEF_HELPER(void, helper_fcmpq, (void)) | |
70 | +DEF_HELPER(void, helper_fcmpeq, (void)) | |
71 | 71 | #ifdef TARGET_SPARC64 |
72 | -void TCG_HELPER_PROTO helper_fabsd(void); | |
73 | -void TCG_HELPER_PROTO helper_fcmps_fcc1(void); | |
74 | -void TCG_HELPER_PROTO helper_fcmpd_fcc1(void); | |
75 | -void TCG_HELPER_PROTO helper_fcmps_fcc2(void); | |
76 | -void TCG_HELPER_PROTO helper_fcmpd_fcc2(void); | |
77 | -void TCG_HELPER_PROTO helper_fcmps_fcc3(void); | |
78 | -void TCG_HELPER_PROTO helper_fcmpd_fcc3(void); | |
79 | -void TCG_HELPER_PROTO helper_fcmpes_fcc1(void); | |
80 | -void TCG_HELPER_PROTO helper_fcmped_fcc1(void); | |
81 | -void TCG_HELPER_PROTO helper_fcmpes_fcc2(void); | |
82 | -void TCG_HELPER_PROTO helper_fcmped_fcc2(void); | |
83 | -void TCG_HELPER_PROTO helper_fcmpes_fcc3(void); | |
84 | -void TCG_HELPER_PROTO helper_fcmped_fcc3(void); | |
85 | -void TCG_HELPER_PROTO helper_fabsq(void); | |
86 | -void TCG_HELPER_PROTO helper_fcmpq_fcc1(void); | |
87 | -void TCG_HELPER_PROTO helper_fcmpq_fcc2(void); | |
88 | -void TCG_HELPER_PROTO helper_fcmpq_fcc3(void); | |
89 | -void TCG_HELPER_PROTO helper_fcmpeq_fcc1(void); | |
90 | -void TCG_HELPER_PROTO helper_fcmpeq_fcc2(void); | |
91 | -void TCG_HELPER_PROTO helper_fcmpeq_fcc3(void); | |
72 | +DEF_HELPER(void, helper_fabsd, (void)) | |
73 | +DEF_HELPER(void, helper_fcmps_fcc1, (void)) | |
74 | +DEF_HELPER(void, helper_fcmpd_fcc1, (void)) | |
75 | +DEF_HELPER(void, helper_fcmps_fcc2, (void)) | |
76 | +DEF_HELPER(void, helper_fcmpd_fcc2, (void)) | |
77 | +DEF_HELPER(void, helper_fcmps_fcc3, (void)) | |
78 | +DEF_HELPER(void, helper_fcmpd_fcc3, (void)) | |
79 | +DEF_HELPER(void, helper_fcmpes_fcc1, (void)) | |
80 | +DEF_HELPER(void, helper_fcmped_fcc1, (void)) | |
81 | +DEF_HELPER(void, helper_fcmpes_fcc2, (void)) | |
82 | +DEF_HELPER(void, helper_fcmped_fcc2, (void)) | |
83 | +DEF_HELPER(void, helper_fcmpes_fcc3, (void)) | |
84 | +DEF_HELPER(void, helper_fcmped_fcc3, (void)) | |
85 | +DEF_HELPER(void, helper_fabsq, (void)) | |
86 | +DEF_HELPER(void, helper_fcmpq_fcc1, (void)) | |
87 | +DEF_HELPER(void, helper_fcmpq_fcc2, (void)) | |
88 | +DEF_HELPER(void, helper_fcmpq_fcc3, (void)) | |
89 | +DEF_HELPER(void, helper_fcmpeq_fcc1, (void)) | |
90 | +DEF_HELPER(void, helper_fcmpeq_fcc2, (void)) | |
91 | +DEF_HELPER(void, helper_fcmpeq_fcc3, (void)) | |
92 | 92 | #endif |
93 | -void TCG_HELPER_PROTO raise_exception(int tt); | |
94 | -#define F_HELPER_0_0(name) void TCG_HELPER_PROTO helper_f ## name(void) | |
93 | +DEF_HELPER(void, raise_exception, (int tt)) | |
94 | +#define F_HELPER_0_0(name) DEF_HELPER(void, helper_f ## name, (void)) | |
95 | 95 | #define F_HELPER_SDQ_0_0(name) \ |
96 | 96 | F_HELPER_0_0(name ## s); \ |
97 | 97 | F_HELPER_0_0(name ## d); \ |
... | ... | @@ -105,9 +105,11 @@ F_HELPER_SDQ_0_0(div); |
105 | 105 | F_HELPER_0_0(smuld); |
106 | 106 | F_HELPER_0_0(dmulq); |
107 | 107 | |
108 | -F_HELPER_SDQ_0_0(neg); | |
108 | +DEF_HELPER(void, helper_fnegs, (void)) | |
109 | 109 | F_HELPER_SDQ_0_0(ito); |
110 | 110 | #ifdef TARGET_SPARC64 |
111 | +DEF_HELPER(void, helper_fnegd, (void)) | |
112 | +DEF_HELPER(void, helper_fnegq, (void)) | |
111 | 113 | F_HELPER_SDQ_0_0(xto); |
112 | 114 | #endif |
113 | 115 | F_HELPER_0_0(dtos); |
... | ... | @@ -124,10 +126,11 @@ F_HELPER_0_0(stox); |
124 | 126 | F_HELPER_0_0(dtox); |
125 | 127 | F_HELPER_0_0(qtox); |
126 | 128 | F_HELPER_0_0(aligndata); |
127 | -void TCG_HELPER_PROTO helper_movl_FT0_0(void); | |
128 | -void TCG_HELPER_PROTO helper_movl_DT0_0(void); | |
129 | -void TCG_HELPER_PROTO helper_movl_FT0_1(void); | |
130 | -void TCG_HELPER_PROTO helper_movl_DT0_1(void); | |
129 | +DEF_HELPER(void, helper_movl_FT0_0, (void)) | |
130 | +DEF_HELPER(void, helper_movl_DT0_0, (void)) | |
131 | +DEF_HELPER(void, helper_movl_FT0_1, (void)) | |
132 | +DEF_HELPER(void, helper_movl_DT0_1, (void)) | |
133 | + | |
131 | 134 | F_HELPER_0_0(not); |
132 | 135 | F_HELPER_0_0(nots); |
133 | 136 | F_HELPER_0_0(nor); | ... | ... |
target-sparc/translate.c
... | ... | @@ -4711,6 +4711,11 @@ void gen_intermediate_code_init(CPUSPARCState *env) |
4711 | 4711 | cpu_gregs[i] = tcg_global_mem_new(TCG_TYPE_TL, TCG_AREG0, |
4712 | 4712 | offsetof(CPUState, gregs[i]), |
4713 | 4713 | gregnames[i]); |
4714 | + /* register helpers */ | |
4715 | + | |
4716 | +#undef DEF_HELPER | |
4717 | +#define DEF_HELPER(ret, name, params) tcg_register_helper(name, #name); | |
4718 | +#include "helper.h" | |
4714 | 4719 | } |
4715 | 4720 | } |
4716 | 4721 | ... | ... |