mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-04 16:23:55 -06:00
target/mips: Provide R/W access to SAARI and SAAR CP0 registers
Provide R/W access to SAARI and SAAR CP0 registers. Reviewed-by: Stefan Markovic <smarkovic@wavecomp.com> Signed-off-by: Yongbok Kim <yongbok.kim@mips.com> Signed-off-by: Aleksandar Markovic <amarkovic@wavecomp.com>
This commit is contained in:
parent
167db30e98
commit
5fb2dcd179
5 changed files with 120 additions and 4 deletions
|
@ -938,6 +938,22 @@ target_ulong helper_mfc0_count(CPUMIPSState *env)
|
|||
return count;
|
||||
}
|
||||
|
||||
target_ulong helper_mfc0_saar(CPUMIPSState *env)
|
||||
{
|
||||
if ((env->CP0_SAARI & 0x3f) < 2) {
|
||||
return (int32_t) env->CP0_SAAR[env->CP0_SAARI & 0x3f];
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
target_ulong helper_mfhc0_saar(CPUMIPSState *env)
|
||||
{
|
||||
if ((env->CP0_SAARI & 0x3f) < 2) {
|
||||
return env->CP0_SAAR[env->CP0_SAARI & 0x3f] >> 32;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
target_ulong helper_mftc0_entryhi(CPUMIPSState *env)
|
||||
{
|
||||
int other_tc = env->CP0_VPEControl & (0xff << CP0VPECo_TargTC);
|
||||
|
@ -1059,6 +1075,14 @@ target_ulong helper_dmfc0_watchlo(CPUMIPSState *env, uint32_t sel)
|
|||
{
|
||||
return env->CP0_WatchLo[sel];
|
||||
}
|
||||
|
||||
target_ulong helper_dmfc0_saar(CPUMIPSState *env)
|
||||
{
|
||||
if ((env->CP0_SAARI & 0x3f) < 2) {
|
||||
return env->CP0_SAAR[env->CP0_SAARI & 0x3f];
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
#endif /* TARGET_MIPS64 */
|
||||
|
||||
void helper_mtc0_index(CPUMIPSState *env, target_ulong arg1)
|
||||
|
@ -1598,6 +1622,32 @@ void helper_mtc0_count(CPUMIPSState *env, target_ulong arg1)
|
|||
qemu_mutex_unlock_iothread();
|
||||
}
|
||||
|
||||
void helper_mtc0_saari(CPUMIPSState *env, target_ulong arg1)
|
||||
{
|
||||
uint32_t target = arg1 & 0x3f;
|
||||
if (target <= 1) {
|
||||
env->CP0_SAARI = target;
|
||||
}
|
||||
}
|
||||
|
||||
void helper_mtc0_saar(CPUMIPSState *env, target_ulong arg1)
|
||||
{
|
||||
uint32_t target = env->CP0_SAARI & 0x3f;
|
||||
if (target < 2) {
|
||||
env->CP0_SAAR[target] = arg1 & 0x00000ffffffff03fULL;
|
||||
}
|
||||
}
|
||||
|
||||
void helper_mthc0_saar(CPUMIPSState *env, target_ulong arg1)
|
||||
{
|
||||
uint32_t target = env->CP0_SAARI & 0x3f;
|
||||
if (target < 2) {
|
||||
env->CP0_SAAR[target] =
|
||||
(((uint64_t) arg1 << 32) & 0x00000fff00000000ULL) |
|
||||
(env->CP0_SAAR[target] & 0x00000000ffffffffULL);
|
||||
}
|
||||
}
|
||||
|
||||
void helper_mtc0_entryhi(CPUMIPSState *env, target_ulong arg1)
|
||||
{
|
||||
target_ulong old, val, mask;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue