]>
Commit | Line | Data |
---|---|---|
e8af50a3 FB |
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 |