add missing FORCE_RET (Paul Brook)
[qemu/qemu_0_9_1_stable.git] / target-sparc / op_mem.h
blob9f6ecefd8fa07d25c4754a45eabc81e8f3e44880
1 /*** Integer load ***/
2 #define SPARC_LD_OP(name, qp) \
3 void OPPROTO glue(glue(op_, name), MEMSUFFIX)(void) \
4 { \
5 T1 = glue(qp, MEMSUFFIX)(T0); \
8 #define SPARC_ST_OP(name, op) \
9 void OPPROTO glue(glue(op_, name), MEMSUFFIX)(void) \
10 { \
11 glue(op, MEMSUFFIX)(T0, T1); \
14 SPARC_LD_OP(ld, ldl);
15 SPARC_LD_OP(ldub, ldub);
16 SPARC_LD_OP(lduh, lduw);
17 SPARC_LD_OP(ldsb, ldsb);
18 SPARC_LD_OP(ldsh, ldsw);
20 /*** Integer store ***/
21 SPARC_ST_OP(st, stl);
22 SPARC_ST_OP(stb, stb);
23 SPARC_ST_OP(sth, stw);
25 void OPPROTO glue(op_std, MEMSUFFIX)(void)
27 glue(stl, MEMSUFFIX)(T0, T1);
28 glue(stl, MEMSUFFIX)((T0 + 4), T2);
31 void OPPROTO glue(op_ldstub, MEMSUFFIX)(void)
33 T1 = glue(ldub, MEMSUFFIX)(T0);
34 glue(stb, MEMSUFFIX)(T0, 0xff); /* XXX: Should be Atomically */
37 void OPPROTO glue(op_swap, MEMSUFFIX)(void)
39 target_ulong tmp = glue(ldl, MEMSUFFIX)(T0);
40 glue(stl, MEMSUFFIX)(T0, T1); /* XXX: Should be Atomically */
41 T1 = tmp;
44 void OPPROTO glue(op_ldd, MEMSUFFIX)(void)
46 T1 = glue(ldl, MEMSUFFIX)(T0);
47 T0 = glue(ldl, MEMSUFFIX)((T0 + 4));
50 /*** Floating-point store ***/
51 void OPPROTO glue(op_stf, MEMSUFFIX) (void)
53 glue(stfl, MEMSUFFIX)(T0, FT0);
56 void OPPROTO glue(op_stdf, MEMSUFFIX) (void)
58 glue(stfq, MEMSUFFIX)(T0, DT0);
61 /*** Floating-point load ***/
62 void OPPROTO glue(op_ldf, MEMSUFFIX) (void)
64 FT0 = glue(ldfl, MEMSUFFIX)(T0);
67 void OPPROTO glue(op_lddf, MEMSUFFIX) (void)
69 DT0 = glue(ldfq, MEMSUFFIX)(T0);
71 #undef MEMSUFFIX