2 #define SPARC_LD_OP(name, qp) \
3 void OPPROTO glue(glue(op_, name), MEMSUFFIX)(void) \
5 T1 = glue(qp, MEMSUFFIX)((void *)T0); \
8 #define SPARC_ST_OP(name, op) \
9 void OPPROTO glue(glue(op_, name), MEMSUFFIX)(void) \
11 glue(op, MEMSUFFIX)((void *)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)((void *) T0, T1);
28 glue(stl, MEMSUFFIX)((void *) (T0 + 4), T2);
31 void OPPROTO glue(op_ldstub, MEMSUFFIX)(void)
33 T1 = glue(ldub, MEMSUFFIX)((void *) T0);
34 glue(stb, MEMSUFFIX)((void *) T0, 0xff); /* XXX: Should be Atomically */
37 void OPPROTO glue(op_swap, MEMSUFFIX)(void)
39 unsigned int tmp = glue(ldl, MEMSUFFIX)((void *) T0);
40 glue(stl, MEMSUFFIX)((void *) T0, T1); /* XXX: Should be Atomically */
44 void OPPROTO glue(op_ldd, MEMSUFFIX)(void)
47 T1 = glue(ldl, MEMSUFFIX)((void *) T0);
48 T0 = glue(ldl, MEMSUFFIX)((void *) (T0 + 4));
50 glue(do_ldd, MEMSUFFIX)(T0);
54 /*** Floating-point store ***/
55 void OPPROTO glue(op_stf, MEMSUFFIX) (void)
57 glue(stfl, MEMSUFFIX)((void *) T0, FT0);
60 void OPPROTO glue(op_stdf, MEMSUFFIX) (void)
62 glue(stfq, MEMSUFFIX)((void *) T0, DT0);
65 /*** Floating-point load ***/
66 void OPPROTO glue(op_ldf, MEMSUFFIX) (void)
68 FT0 = glue(ldfl, MEMSUFFIX)((void *) T0);
71 void OPPROTO glue(op_lddf, MEMSUFFIX) (void)
73 DT0 = glue(ldfq, MEMSUFFIX)((void *) T0);