40 |
} |
} |
41 |
} |
} |
42 |
|
|
43 |
|
void glue(do_lsw_le, MEMSUFFIX) (int dst) |
44 |
|
{ |
45 |
|
uint32_t tmp; |
46 |
|
int sh; |
47 |
|
|
48 |
|
if (loglevel > 0) { |
49 |
|
fprintf(logfile, "%s: addr=0x%08x count=%d reg=%d\n", |
50 |
|
__func__, T0, T1, dst); |
51 |
|
} |
52 |
|
for (; T1 > 3; T1 -= 4, T0 += 4) { |
53 |
|
tmp = glue(ldl, MEMSUFFIX)(T0); |
54 |
|
ugpr(dst++) = ((tmp & 0xFF000000) >> 24) | ((tmp & 0x00FF0000) >> 8) | |
55 |
|
((tmp & 0x0000FF00) << 8) | ((tmp & 0x000000FF) << 24); |
56 |
|
if (dst == 32) |
57 |
|
dst = 0; |
58 |
|
} |
59 |
|
if (T1 > 0) { |
60 |
|
tmp = 0; |
61 |
|
for (sh = 0; T1 > 0; T1--, T0++, sh += 8) { |
62 |
|
tmp |= glue(ldub, MEMSUFFIX)(T0) << sh; |
63 |
|
} |
64 |
|
ugpr(dst) = tmp; |
65 |
|
} |
66 |
|
} |
67 |
|
|
68 |
|
void glue(do_stsw_le, MEMSUFFIX) (int src) |
69 |
|
{ |
70 |
|
uint32_t tmp; |
71 |
|
int sh; |
72 |
|
|
73 |
|
if (loglevel > 0) { |
74 |
|
fprintf(logfile, "%s: addr=0x%08x count=%d reg=%d\n", |
75 |
|
__func__, T0, T1, src); |
76 |
|
} |
77 |
|
for (; T1 > 3; T1 -= 4, T0 += 4) { |
78 |
|
tmp = ((ugpr(src++) & 0xFF000000) >> 24); |
79 |
|
tmp |= ((ugpr(src++) & 0x00FF0000) >> 8); |
80 |
|
tmp |= ((ugpr(src++) & 0x0000FF00) << 8); |
81 |
|
tmp |= ((ugpr(src++) & 0x000000FF) << 24); |
82 |
|
glue(stl, MEMSUFFIX)(T0, tmp); |
83 |
|
if (src == 32) |
84 |
|
src = 0; |
85 |
|
} |
86 |
|
if (T1 > 0) { |
87 |
|
for (sh = 0; T1 > 0; T1--, T0++, sh += 8) |
88 |
|
glue(stb, MEMSUFFIX)(T0, (ugpr(src) >> sh) & 0xFF); |
89 |
|
} |
90 |
|
} |
91 |
|
|
92 |
#undef MEMSUFFIX |
#undef MEMSUFFIX |