root / target-sparc / op_mem.h @ 1d6e34fd
History | View | Annotate | Download (2 kB)
1 | e8af50a3 | bellard | /*** Integer load ***/
|
---|---|---|---|
2 | e8af50a3 | bellard | #define SPARC_LD_OP(name, qp) \
|
3 | e8af50a3 | bellard | void OPPROTO glue(glue(op_, name), MEMSUFFIX)(void) \ |
4 | e8af50a3 | bellard | { \ |
5 | 0fa85d43 | bellard | T1 = glue(qp, MEMSUFFIX)(T0); \ |
6 | e8af50a3 | bellard | } |
7 | e8af50a3 | bellard | |
8 | e8af50a3 | bellard | #define SPARC_ST_OP(name, op) \
|
9 | e8af50a3 | bellard | void OPPROTO glue(glue(op_, name), MEMSUFFIX)(void) \ |
10 | e8af50a3 | bellard | { \ |
11 | 0fa85d43 | bellard | glue(op, MEMSUFFIX)(T0, T1); \ |
12 | e8af50a3 | bellard | } |
13 | e8af50a3 | bellard | |
14 | e8af50a3 | bellard | SPARC_LD_OP(ld, ldl); |
15 | e8af50a3 | bellard | SPARC_LD_OP(ldub, ldub); |
16 | e8af50a3 | bellard | SPARC_LD_OP(lduh, lduw); |
17 | e8af50a3 | bellard | SPARC_LD_OP(ldsb, ldsb); |
18 | e8af50a3 | bellard | SPARC_LD_OP(ldsh, ldsw); |
19 | e8af50a3 | bellard | |
20 | e8af50a3 | bellard | /*** Integer store ***/
|
21 | e8af50a3 | bellard | SPARC_ST_OP(st, stl); |
22 | e8af50a3 | bellard | SPARC_ST_OP(stb, stb); |
23 | e8af50a3 | bellard | SPARC_ST_OP(sth, stw); |
24 | e8af50a3 | bellard | |
25 | e8af50a3 | bellard | void OPPROTO glue(op_std, MEMSUFFIX)(void) |
26 | e8af50a3 | bellard | { |
27 | 0fa85d43 | bellard | glue(stl, MEMSUFFIX)(T0, T1); |
28 | 0fa85d43 | bellard | glue(stl, MEMSUFFIX)((T0 + 4), T2);
|
29 | e8af50a3 | bellard | } |
30 | e8af50a3 | bellard | |
31 | e8af50a3 | bellard | void OPPROTO glue(op_ldstub, MEMSUFFIX)(void) |
32 | e8af50a3 | bellard | { |
33 | 0fa85d43 | bellard | T1 = glue(ldub, MEMSUFFIX)(T0); |
34 | 0fa85d43 | bellard | glue(stb, MEMSUFFIX)(T0, 0xff); /* XXX: Should be Atomically */ |
35 | e8af50a3 | bellard | } |
36 | e8af50a3 | bellard | |
37 | e8af50a3 | bellard | void OPPROTO glue(op_swap, MEMSUFFIX)(void) |
38 | e8af50a3 | bellard | { |
39 | af7bf89b | bellard | target_ulong tmp = glue(ldl, MEMSUFFIX)(T0); |
40 | 0fa85d43 | bellard | glue(stl, MEMSUFFIX)(T0, T1); /* XXX: Should be Atomically */
|
41 | e8af50a3 | bellard | T1 = tmp; |
42 | e8af50a3 | bellard | } |
43 | e8af50a3 | bellard | |
44 | e8af50a3 | bellard | void OPPROTO glue(op_ldd, MEMSUFFIX)(void) |
45 | e8af50a3 | bellard | { |
46 | 0fa85d43 | bellard | T1 = glue(ldl, MEMSUFFIX)(T0); |
47 | 0fa85d43 | bellard | T0 = glue(ldl, MEMSUFFIX)((T0 + 4));
|
48 | e8af50a3 | bellard | } |
49 | e8af50a3 | bellard | |
50 | e8af50a3 | bellard | /*** Floating-point store ***/
|
51 | e8af50a3 | bellard | void OPPROTO glue(op_stf, MEMSUFFIX) (void) |
52 | e8af50a3 | bellard | { |
53 | 0fa85d43 | bellard | glue(stfl, MEMSUFFIX)(T0, FT0); |
54 | e8af50a3 | bellard | } |
55 | e8af50a3 | bellard | |
56 | e8af50a3 | bellard | void OPPROTO glue(op_stdf, MEMSUFFIX) (void) |
57 | e8af50a3 | bellard | { |
58 | 0fa85d43 | bellard | glue(stfq, MEMSUFFIX)(T0, DT0); |
59 | e8af50a3 | bellard | } |
60 | e8af50a3 | bellard | |
61 | e8af50a3 | bellard | /*** Floating-point load ***/
|
62 | e8af50a3 | bellard | void OPPROTO glue(op_ldf, MEMSUFFIX) (void) |
63 | e8af50a3 | bellard | { |
64 | 0fa85d43 | bellard | FT0 = glue(ldfl, MEMSUFFIX)(T0); |
65 | e8af50a3 | bellard | } |
66 | e8af50a3 | bellard | |
67 | e8af50a3 | bellard | void OPPROTO glue(op_lddf, MEMSUFFIX) (void) |
68 | e8af50a3 | bellard | { |
69 | 0fa85d43 | bellard | DT0 = glue(ldfq, MEMSUFFIX)(T0); |
70 | e8af50a3 | bellard | } |
71 | e8af50a3 | bellard | #undef MEMSUFFIX |