2 #define SPARC_LD_OP(name, qp) \
3 void OPPROTO glue(glue(op_, name), MEMSUFFIX)(void) \
5 T1 = glue(qp, MEMSUFFIX)(T0); \
8 #define SPARC_ST_OP(name, op) \
9 void OPPROTO glue(glue(op_, name), MEMSUFFIX)(void) \
11 glue(op, MEMSUFFIX)(T0, T1); \
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 ***/
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 */
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
);