Revision 111bfab3 target-ppc/op_helper_mem.h
b/target-ppc/op_helper_mem.h | ||
---|---|---|
40 | 40 |
} |
41 | 41 |
} |
42 | 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 |
|
|
43 | 92 |
#undef MEMSUFFIX |
Also available in: Unified diff