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