]>
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 | { | |
8d5f07fa | 46 | #if 1 |
e8af50a3 FB |
47 | T1 = glue(ldl, MEMSUFFIX)((void *) T0); |
48 | T0 = glue(ldl, MEMSUFFIX)((void *) (T0 + 4)); | |
8d5f07fa FB |
49 | #else |
50 | glue(do_ldd, MEMSUFFIX)(T0); | |
51 | #endif | |
e8af50a3 FB |
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 |