]> git.proxmox.com Git - mirror_qemu.git/blame - target-sparc/op_mem.h
sparc merge (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{ \
5 T1 = glue(qp, MEMSUFFIX)((void *)T0); \
6}
7
8#define SPARC_ST_OP(name, op) \
9void OPPROTO glue(glue(op_, name), MEMSUFFIX)(void) \
10{ \
11 glue(op, MEMSUFFIX)((void *)T0, T1); \
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{
27 glue(stl, MEMSUFFIX)((void *) T0, T1);
28 glue(stl, MEMSUFFIX)((void *) (T0 + 4), T2);
29}
30
31void 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
37void 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
44void 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 ***/
55void OPPROTO glue(op_stf, MEMSUFFIX) (void)
56{
57 glue(stfl, MEMSUFFIX)((void *) T0, FT0);
58}
59
60void OPPROTO glue(op_stdf, MEMSUFFIX) (void)
61{
62 glue(stfq, MEMSUFFIX)((void *) T0, DT0);
63}
64
65/*** Floating-point load ***/
66void OPPROTO glue(op_ldf, MEMSUFFIX) (void)
67{
68 FT0 = glue(ldfl, MEMSUFFIX)((void *) T0);
69}
70
71void OPPROTO glue(op_lddf, MEMSUFFIX) (void)
72{
73 DT0 = glue(ldfq, MEMSUFFIX)((void *) T0);
74}
75#undef MEMSUFFIX