Revision 54a3c0f0 target-sparc/op_helper.c
b/target-sparc/op_helper.c | ||
---|---|---|
3060 | 3060 |
case 0x2c: // Nucleus quad LDD 128 bit atomic LE |
3061 | 3061 |
helper_check_align(addr, 0xf); |
3062 | 3062 |
if (rd == 0) { |
3063 |
env->gregs[1] = ldq_kernel(addr + 8);
|
|
3063 |
env->gregs[1] = ldq_nucleus(addr + 8);
|
|
3064 | 3064 |
if (asi == 0x2c) |
3065 | 3065 |
bswap64s(&env->gregs[1]); |
3066 | 3066 |
} else if (rd < 8) { |
3067 |
env->gregs[rd] = ldq_kernel(addr);
|
|
3068 |
env->gregs[rd + 1] = ldq_kernel(addr + 8);
|
|
3067 |
env->gregs[rd] = ldq_nucleus(addr);
|
|
3068 |
env->gregs[rd + 1] = ldq_nucleus(addr + 8);
|
|
3069 | 3069 |
if (asi == 0x2c) { |
3070 | 3070 |
bswap64s(&env->gregs[rd]); |
3071 | 3071 |
bswap64s(&env->gregs[rd + 1]); |
3072 | 3072 |
} |
3073 | 3073 |
} else { |
3074 |
env->regwptr[rd] = ldq_kernel(addr);
|
|
3075 |
env->regwptr[rd + 1] = ldq_kernel(addr + 8);
|
|
3074 |
env->regwptr[rd] = ldq_nucleus(addr);
|
|
3075 |
env->regwptr[rd + 1] = ldq_nucleus(addr + 8);
|
|
3076 | 3076 |
if (asi == 0x2c) { |
3077 | 3077 |
bswap64s(&env->regwptr[rd]); |
3078 | 3078 |
bswap64s(&env->regwptr[rd + 1]); |
Also available in: Unified diff