mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-05 00:33:55 -06:00
target/hppa: add TLB protection id check
Signed-off-by: Sven Schnelle <svens@stackframe.org> Message-Id: <20190311191602.25796-10-svens@stackframe.org> [rth: Add required tlb flushing when prot id registers change.] Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
parent
38188fd216
commit
d5de20bd84
6 changed files with 70 additions and 9 deletions
|
@ -21,6 +21,7 @@
|
|||
|
||||
#include "cpu.h"
|
||||
#include "fpu/softfloat.h"
|
||||
#include "exec/exec-all.h"
|
||||
#include "exec/helper-proto.h"
|
||||
|
||||
target_ureg cpu_hppa_get_psw(CPUHPPAState *env)
|
||||
|
@ -49,6 +50,7 @@ target_ureg cpu_hppa_get_psw(CPUHPPAState *env)
|
|||
|
||||
void cpu_hppa_put_psw(CPUHPPAState *env, target_ureg psw)
|
||||
{
|
||||
target_ureg old_psw = env->psw;
|
||||
target_ureg cb = 0;
|
||||
|
||||
env->psw = psw & ~(PSW_N | PSW_V | PSW_CB);
|
||||
|
@ -64,6 +66,14 @@ void cpu_hppa_put_psw(CPUHPPAState *env, target_ureg psw)
|
|||
cb |= ((psw >> 9) & 1) << 8;
|
||||
cb |= ((psw >> 8) & 1) << 4;
|
||||
env->psw_cb = cb;
|
||||
|
||||
/* If PSW_P changes, it affects how we translate addresses. */
|
||||
if ((psw ^ old_psw) & PSW_P) {
|
||||
#ifndef CONFIG_USER_ONLY
|
||||
CPUState *src = CPU(hppa_env_get_cpu(env));
|
||||
tlb_flush_by_mmuidx(src, 0xf);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
void hppa_cpu_dump_state(CPUState *cs, FILE *f,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue