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