root / target-sparc / op_mem.h @ 8d5f07fa
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 |
#if 1 |
47 |
T1 = glue(ldl, MEMSUFFIX)((void *) T0);
|
48 |
T0 = glue(ldl, MEMSUFFIX)((void *) (T0 + 4)); |
49 |
#else
|
50 |
glue(do_ldd, MEMSUFFIX)(T0); |
51 |
#endif
|
52 |
} |
53 |
|
54 |
/*** Floating-point store ***/
|
55 |
void OPPROTO glue(op_stf, MEMSUFFIX) (void) |
56 |
{ |
57 |
glue(stfl, MEMSUFFIX)((void *) T0, FT0);
|
58 |
} |
59 |
|
60 |
void OPPROTO glue(op_stdf, MEMSUFFIX) (void) |
61 |
{ |
62 |
glue(stfq, MEMSUFFIX)((void *) T0, DT0);
|
63 |
} |
64 |
|
65 |
/*** Floating-point load ***/
|
66 |
void OPPROTO glue(op_ldf, MEMSUFFIX) (void) |
67 |
{ |
68 |
FT0 = glue(ldfl, MEMSUFFIX)((void *) T0);
|
69 |
} |
70 |
|
71 |
void OPPROTO glue(op_lddf, MEMSUFFIX) (void) |
72 |
{ |
73 |
DT0 = glue(ldfq, MEMSUFFIX)((void *) T0);
|
74 |
} |
75 |
#undef MEMSUFFIX
|