Statistics
| Branch: | Revision:

root / target-sparc / op_mem.h @ e80cfcfc

History | View | Annotate | Download (2.2 kB)

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)((void *)T0);                                     \
6
}
7

    
8
#define SPARC_ST_OP(name, op)                                                 \
9
void OPPROTO glue(glue(op_, name), MEMSUFFIX)(void)                           \
10
{                                                                             \
11
    glue(op, MEMSUFFIX)((void *)T0, T1);                                      \
12
}
13

    
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);
19

    
20
/***                              Integer store                            ***/
21
SPARC_ST_OP(st, stl);
22
SPARC_ST_OP(stb, stb);
23
SPARC_ST_OP(sth, stw);
24

    
25
void OPPROTO glue(op_std, MEMSUFFIX)(void)
26
{
27
    glue(stl, MEMSUFFIX)((void *) T0, T1);
28
    glue(stl, MEMSUFFIX)((void *) (T0 + 4), T2);
29
}
30

    
31
void OPPROTO glue(op_ldstub, MEMSUFFIX)(void)
32
{
33
    T1 = glue(ldub, MEMSUFFIX)((void *) T0);
34
    glue(stb, MEMSUFFIX)((void *) T0, 0xff);     /* XXX: Should be Atomically */
35
}
36

    
37
void OPPROTO glue(op_swap, MEMSUFFIX)(void)
38
{
39
    unsigned int tmp = glue(ldl, MEMSUFFIX)((void *) T0);
40
    glue(stl, MEMSUFFIX)((void *) T0, T1);       /* XXX: Should be Atomically */
41
    T1 = tmp;
42
}
43

    
44
void OPPROTO glue(op_ldd, MEMSUFFIX)(void)
45
{
46
    T1 = glue(ldl, MEMSUFFIX)((void *) T0);
47
    T0 = glue(ldl, MEMSUFFIX)((void *) (T0 + 4));
48
}
49

    
50
/***                         Floating-point store                          ***/
51
void OPPROTO glue(op_stf, MEMSUFFIX) (void)
52
{
53
    glue(stfl, MEMSUFFIX)((void *) T0, FT0);
54
}
55

    
56
void OPPROTO glue(op_stdf, MEMSUFFIX) (void)
57
{
58
    glue(stfq, MEMSUFFIX)((void *) T0, DT0);
59
}
60

    
61
/***                         Floating-point load                           ***/
62
void OPPROTO glue(op_ldf, MEMSUFFIX) (void)
63
{
64
    FT0 = glue(ldfl, MEMSUFFIX)((void *) T0);
65
}
66

    
67
void OPPROTO glue(op_lddf, MEMSUFFIX) (void)
68
{
69
    DT0 = glue(ldfq, MEMSUFFIX)((void *) T0);
70
}
71
#undef MEMSUFFIX