From: Igor V. Kovalenko <igor.v.kovale...@gmail.com> Signed-off-by: Igor V. Kovalenko <igor.v.kovale...@gmail.com> --- sparc-dis.c | 2 ++ target-sparc/op_helper.c | 10 +++++----- 2 files changed, 7 insertions(+), 5 deletions(-)
diff --git a/sparc-dis.c b/sparc-dis.c index c1b682d..dbd3b4f 100644 --- a/sparc-dis.c +++ b/sparc-dis.c @@ -2155,6 +2155,8 @@ static const arg asi_table_v9[] = /* These are UltraSPARC extensions. */ { 0x14, "#ASI_PHYS_USE_EC"}, { 0x15, "#ASI_PHYS_BYPASS_EC_WITH_EBIT"}, + { 0x24, "#ASI_NUCLEUS_QUAD_LDD" }, + { 0x2c, "#ASI_NUCLEUS_QUAD_LDD_LITTLE" }, { 0x45, "#ASI_LSU_CONTROL_REG"}, { 0x47, "#ASI_DCACHE_TAG"}, { 0x49, "#ASI_INTR_RECEIVE"}, diff --git a/target-sparc/op_helper.c b/target-sparc/op_helper.c index e946ec7..63fef8c 100644 --- a/target-sparc/op_helper.c +++ b/target-sparc/op_helper.c @@ -3088,19 +3088,19 @@ void helper_ldda_asi(target_ulong addr, int asi, int rd) case 0x2c: // Nucleus quad LDD 128 bit atomic LE helper_check_align(addr, 0xf); if (rd == 0) { - env->gregs[1] = ldq_kernel(addr + 8); + env->gregs[1] = ldq_nucleus(addr + 8); if (asi == 0x2c) bswap64s(&env->gregs[1]); } else if (rd < 8) { - env->gregs[rd] = ldq_kernel(addr); - env->gregs[rd + 1] = ldq_kernel(addr + 8); + env->gregs[rd] = ldq_nucleus(addr); + env->gregs[rd + 1] = ldq_nucleus(addr + 8); if (asi == 0x2c) { bswap64s(&env->gregs[rd]); bswap64s(&env->gregs[rd + 1]); } } else { - env->regwptr[rd] = ldq_kernel(addr); - env->regwptr[rd + 1] = ldq_kernel(addr + 8); + env->regwptr[rd] = ldq_nucleus(addr); + env->regwptr[rd + 1] = ldq_nucleus(addr + 8); if (asi == 0x2c) { bswap64s(&env->regwptr[rd]); bswap64s(&env->regwptr[rd + 1]);