mirror of
https://github.com/xemu-project/xemu.git
synced 2024-11-27 21:40:49 +00:00
sparc64: improve ldf and stf insns
- implemented block load/store primary/secondary with user privilege Signed-off-by: Igor V. Kovalenko <igor.v.kovalenko@gmail.com> Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
This commit is contained in:
parent
b219094ace
commit
0e2fa9cab9
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user