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