temporary hack to handle register shortage with dyngen for qemu_st64()
[qemu] / target-i386 / ops_mem.h
1 void OPPROTO glue(glue(op_ldub, MEMSUFFIX), _T0_A0)(void)
2 {
3     T0 = glue(ldub, MEMSUFFIX)(A0);
4 }
5
6 void OPPROTO glue(glue(op_ldsb, MEMSUFFIX), _T0_A0)(void)
7 {
8     T0 = glue(ldsb, MEMSUFFIX)(A0);
9 }
10
11 void OPPROTO glue(glue(op_lduw, MEMSUFFIX), _T0_A0)(void)
12 {
13     T0 = glue(lduw, MEMSUFFIX)(A0);
14 }
15
16 void OPPROTO glue(glue(op_ldsw, MEMSUFFIX), _T0_A0)(void)
17 {
18     T0 = glue(ldsw, MEMSUFFIX)(A0);
19 }
20
21 void OPPROTO glue(glue(op_ldl, MEMSUFFIX), _T0_A0)(void)
22 {
23     T0 = (uint32_t)glue(ldl, MEMSUFFIX)(A0);
24 }
25
26 void OPPROTO glue(glue(op_ldub, MEMSUFFIX), _T1_A0)(void)
27 {
28     T1 = glue(ldub, MEMSUFFIX)(A0);
29 }
30
31 void OPPROTO glue(glue(op_ldsb, MEMSUFFIX), _T1_A0)(void)
32 {
33     T1 = glue(ldsb, MEMSUFFIX)(A0);
34 }
35
36 void OPPROTO glue(glue(op_lduw, MEMSUFFIX), _T1_A0)(void)
37 {
38     T1 = glue(lduw, MEMSUFFIX)(A0);
39 }
40
41 void OPPROTO glue(glue(op_ldsw, MEMSUFFIX), _T1_A0)(void)
42 {
43     T1 = glue(ldsw, MEMSUFFIX)(A0);
44 }
45
46 void OPPROTO glue(glue(op_ldl, MEMSUFFIX), _T1_A0)(void)
47 {
48     T1 = (uint32_t)glue(ldl, MEMSUFFIX)(A0);
49 }
50
51 void OPPROTO glue(glue(op_stb, MEMSUFFIX), _T0_A0)(void)
52 {
53     glue(stb, MEMSUFFIX)(A0, T0);
54     FORCE_RET();
55 }
56
57 void OPPROTO glue(glue(op_stw, MEMSUFFIX), _T0_A0)(void)
58 {
59     glue(stw, MEMSUFFIX)(A0, T0);
60     FORCE_RET();
61 }
62
63 void OPPROTO glue(glue(op_stl, MEMSUFFIX), _T0_A0)(void)
64 {
65     glue(stl, MEMSUFFIX)(A0, T0);
66     FORCE_RET();
67 }
68
69 #if 0
70 void OPPROTO glue(glue(op_stb, MEMSUFFIX), _T1_A0)(void)
71 {
72     glue(stb, MEMSUFFIX)(A0, T1);
73     FORCE_RET();
74 }
75 #endif
76
77 void OPPROTO glue(glue(op_stw, MEMSUFFIX), _T1_A0)(void)
78 {
79     glue(stw, MEMSUFFIX)(A0, T1);
80     FORCE_RET();
81 }
82
83 void OPPROTO glue(glue(op_stl, MEMSUFFIX), _T1_A0)(void)
84 {
85     glue(stl, MEMSUFFIX)(A0, T1);
86     FORCE_RET();
87 }
88
89 /* SSE/MMX support */
90 void OPPROTO glue(glue(op_ldq, MEMSUFFIX), _env_A0)(void)
91 {
92     uint64_t *p;
93     p = (uint64_t *)((char *)env + PARAM1);
94     *p = glue(ldq, MEMSUFFIX)(A0);
95 }
96
97 void OPPROTO glue(glue(op_stq, MEMSUFFIX), _env_A0)(void)
98 {
99     uint64_t *p;
100     p = (uint64_t *)((char *)env + PARAM1);
101     glue(stq, MEMSUFFIX)(A0, *p);
102     FORCE_RET();
103 }
104
105 void OPPROTO glue(glue(op_ldo, MEMSUFFIX), _env_A0)(void)
106 {
107     XMMReg *p;
108     p = (XMMReg *)((char *)env + PARAM1);
109     p->XMM_Q(0) = glue(ldq, MEMSUFFIX)(A0);
110     p->XMM_Q(1) = glue(ldq, MEMSUFFIX)(A0 + 8);
111 }
112
113 void OPPROTO glue(glue(op_sto, MEMSUFFIX), _env_A0)(void)
114 {
115     XMMReg *p;
116     p = (XMMReg *)((char *)env + PARAM1);
117     glue(stq, MEMSUFFIX)(A0, p->XMM_Q(0));
118     glue(stq, MEMSUFFIX)(A0 + 8, p->XMM_Q(1));
119     FORCE_RET();
120 }
121
122 #ifdef TARGET_X86_64
123 void OPPROTO glue(glue(op_ldsl, MEMSUFFIX), _T0_A0)(void)
124 {
125     T0 = (int32_t)glue(ldl, MEMSUFFIX)(A0);
126 }
127
128 void OPPROTO glue(glue(op_ldsl, MEMSUFFIX), _T1_A0)(void)
129 {
130     T1 = (int32_t)glue(ldl, MEMSUFFIX)(A0);
131 }
132
133 void OPPROTO glue(glue(op_ldq, MEMSUFFIX), _T0_A0)(void)
134 {
135     T0 = glue(ldq, MEMSUFFIX)(A0);
136 }
137
138 void OPPROTO glue(glue(op_ldq, MEMSUFFIX), _T1_A0)(void)
139 {
140     T1 = glue(ldq, MEMSUFFIX)(A0);
141 }
142
143 void OPPROTO glue(glue(op_stq, MEMSUFFIX), _T0_A0)(void)
144 {
145     glue(stq, MEMSUFFIX)(A0, T0);
146     FORCE_RET();
147 }
148
149 void OPPROTO glue(glue(op_stq, MEMSUFFIX), _T1_A0)(void)
150 {
151     glue(stq, MEMSUFFIX)(A0, T1);
152     FORCE_RET();
153 }
154 #endif
155
156 #undef MEMSUFFIX