root / target-ppc / op_helper_mem.h @ 9a64fbe4
History | View | Annotate | Download (1.1 kB)
1 |
void glue(do_lsw, MEMSUFFIX) (int dst) |
---|---|
2 |
{ |
3 |
uint32_t tmp; |
4 |
int sh;
|
5 |
|
6 |
if (loglevel > 0) { |
7 |
fprintf(logfile, "%s: addr=0x%08x count=%d reg=%d\n",
|
8 |
__func__, T0, T1, dst); |
9 |
} |
10 |
for (; T1 > 3; T1 -= 4, T0 += 4) { |
11 |
ugpr(dst++) = glue(_ldl, MEMSUFFIX)((void *)T0, ACCESS_INT);
|
12 |
if (dst == 32) |
13 |
dst = 0;
|
14 |
} |
15 |
if (T1 > 0) { |
16 |
tmp = 0;
|
17 |
for (sh = 24; T1 > 0; T1--, T0++, sh -= 8) { |
18 |
tmp |= glue(_ldub, MEMSUFFIX)((void *)T0, ACCESS_INT) << sh;
|
19 |
} |
20 |
ugpr(dst) = tmp; |
21 |
} |
22 |
} |
23 |
|
24 |
void glue(do_stsw, MEMSUFFIX) (int src) |
25 |
{ |
26 |
int sh;
|
27 |
|
28 |
if (loglevel > 0) { |
29 |
fprintf(logfile, "%s: addr=0x%08x count=%d reg=%d\n",
|
30 |
__func__, T0, T1, src); |
31 |
} |
32 |
for (; T1 > 3; T1 -= 4, T0 += 4) { |
33 |
glue(_stl, MEMSUFFIX)((void *)T0, ugpr(src++), ACCESS_INT);
|
34 |
if (src == 32) |
35 |
src = 0;
|
36 |
} |
37 |
if (T1 > 0) { |
38 |
for (sh = 24; T1 > 0; T1--, T0++, sh -= 8) |
39 |
glue(_stb, MEMSUFFIX)((void *)T0, (ugpr(src) >> sh) & 0xFF, |
40 |
ACCESS_INT); |
41 |
} |
42 |
} |
43 |
|
44 |
#undef MEMSUFFIX
|