提交 0e2fa9ca 编写于 作者: I Igor V. Kovalenko 提交者: Blue Swirl

sparc64: improve ldf and stf insns

- implemented block load/store primary/secondary with user privilege
Signed-off-by: NIgor V. Kovalenko <igor.v.kovalenko@gmail.com>
Signed-off-by: NBlue Swirl <blauwirbel@gmail.com>
上级 b219094a
......@@ -3163,6 +3163,20 @@ void helper_ldf_asi(target_ulong addr, int asi, int size, int rd)
addr += 4;
}
return;
case 0x70: // Block load primary, user privilege
case 0x71: // Block load secondary, user privilege
if (rd & 7) {
raise_exception(TT_ILL_INSN);
return;
}
helper_check_align(addr, 0x3f);
for (i = 0; i < 16; i++) {
*(uint32_t *)&env->fpr[rd++] = helper_ld_asi(addr, asi & 0x1f, 4,
0);
addr += 4;
}
return;
default:
break;
......@@ -3209,6 +3223,20 @@ void helper_stf_asi(target_ulong addr, int asi, int size, int rd)
addr += 4;
}
return;
case 0x70: // Block store primary, user privilege
case 0x71: // Block store secondary, user privilege
if (rd & 7) {
raise_exception(TT_ILL_INSN);
return;
}
helper_check_align(addr, 0x3f);
for (i = 0; i < 16; i++) {
val = *(uint32_t *)&env->fpr[rd++];
helper_st_asi(addr, val, asi & 0x1f, 4);
addr += 4;
}
return;
default:
break;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册