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
|