Statistics
| Branch: | Revision:

root / target-sparc / op_mem.h @ 1d6e34fd

History | View | Annotate | Download (2 kB)

1 e8af50a3 bellard
/***                             Integer load                              ***/
2 e8af50a3 bellard
#define SPARC_LD_OP(name, qp)                                                 \
3 e8af50a3 bellard
void OPPROTO glue(glue(op_, name), MEMSUFFIX)(void)                           \
4 e8af50a3 bellard
{                                                                             \
5 0fa85d43 bellard
    T1 = glue(qp, MEMSUFFIX)(T0);                                     \
6 e8af50a3 bellard
}
7 e8af50a3 bellard
8 e8af50a3 bellard
#define SPARC_ST_OP(name, op)                                                 \
9 e8af50a3 bellard
void OPPROTO glue(glue(op_, name), MEMSUFFIX)(void)                           \
10 e8af50a3 bellard
{                                                                             \
11 0fa85d43 bellard
    glue(op, MEMSUFFIX)(T0, T1);                                      \
12 e8af50a3 bellard
}
13 e8af50a3 bellard
14 e8af50a3 bellard
SPARC_LD_OP(ld, ldl);
15 e8af50a3 bellard
SPARC_LD_OP(ldub, ldub);
16 e8af50a3 bellard
SPARC_LD_OP(lduh, lduw);
17 e8af50a3 bellard
SPARC_LD_OP(ldsb, ldsb);
18 e8af50a3 bellard
SPARC_LD_OP(ldsh, ldsw);
19 e8af50a3 bellard
20 e8af50a3 bellard
/***                              Integer store                            ***/
21 e8af50a3 bellard
SPARC_ST_OP(st, stl);
22 e8af50a3 bellard
SPARC_ST_OP(stb, stb);
23 e8af50a3 bellard
SPARC_ST_OP(sth, stw);
24 e8af50a3 bellard
25 e8af50a3 bellard
void OPPROTO glue(op_std, MEMSUFFIX)(void)
26 e8af50a3 bellard
{
27 0fa85d43 bellard
    glue(stl, MEMSUFFIX)(T0, T1);
28 0fa85d43 bellard
    glue(stl, MEMSUFFIX)((T0 + 4), T2);
29 e8af50a3 bellard
}
30 e8af50a3 bellard
31 e8af50a3 bellard
void OPPROTO glue(op_ldstub, MEMSUFFIX)(void)
32 e8af50a3 bellard
{
33 0fa85d43 bellard
    T1 = glue(ldub, MEMSUFFIX)(T0);
34 0fa85d43 bellard
    glue(stb, MEMSUFFIX)(T0, 0xff);     /* XXX: Should be Atomically */
35 e8af50a3 bellard
}
36 e8af50a3 bellard
37 e8af50a3 bellard
void OPPROTO glue(op_swap, MEMSUFFIX)(void)
38 e8af50a3 bellard
{
39 af7bf89b bellard
    target_ulong tmp = glue(ldl, MEMSUFFIX)(T0);
40 0fa85d43 bellard
    glue(stl, MEMSUFFIX)(T0, T1);       /* XXX: Should be Atomically */
41 e8af50a3 bellard
    T1 = tmp;
42 e8af50a3 bellard
}
43 e8af50a3 bellard
44 e8af50a3 bellard
void OPPROTO glue(op_ldd, MEMSUFFIX)(void)
45 e8af50a3 bellard
{
46 0fa85d43 bellard
    T1 = glue(ldl, MEMSUFFIX)(T0);
47 0fa85d43 bellard
    T0 = glue(ldl, MEMSUFFIX)((T0 + 4));
48 e8af50a3 bellard
}
49 e8af50a3 bellard
50 e8af50a3 bellard
/***                         Floating-point store                          ***/
51 e8af50a3 bellard
void OPPROTO glue(op_stf, MEMSUFFIX) (void)
52 e8af50a3 bellard
{
53 0fa85d43 bellard
    glue(stfl, MEMSUFFIX)(T0, FT0);
54 e8af50a3 bellard
}
55 e8af50a3 bellard
56 e8af50a3 bellard
void OPPROTO glue(op_stdf, MEMSUFFIX) (void)
57 e8af50a3 bellard
{
58 0fa85d43 bellard
    glue(stfq, MEMSUFFIX)(T0, DT0);
59 e8af50a3 bellard
}
60 e8af50a3 bellard
61 e8af50a3 bellard
/***                         Floating-point load                           ***/
62 e8af50a3 bellard
void OPPROTO glue(op_ldf, MEMSUFFIX) (void)
63 e8af50a3 bellard
{
64 0fa85d43 bellard
    FT0 = glue(ldfl, MEMSUFFIX)(T0);
65 e8af50a3 bellard
}
66 e8af50a3 bellard
67 e8af50a3 bellard
void OPPROTO glue(op_lddf, MEMSUFFIX) (void)
68 e8af50a3 bellard
{
69 0fa85d43 bellard
    DT0 = glue(ldfq, MEMSUFFIX)(T0);
70 e8af50a3 bellard
}
71 e8af50a3 bellard
#undef MEMSUFFIX