mirror of
https://github.com/qemu/qemu.git
synced 2025-08-15 05:06:56 +00:00
target/mips: Let raise_mmu_exception() take MMUAccessType argument
Both mips_cpu_tlb_fill() and cpu_mips_translate_address() pass MMUAccessType to raise_mmu_exception(). Let the prototype use it as argument, as it is stricter than an integer. Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Reviewed-by: Jiaxun Yang <jiaxun.yang@flygoat.com> Message-Id: <20210128144125.3696119-11-f4bug@amsat.org>
This commit is contained in:
parent
48b28c6a8e
commit
ca354f0004
@ -405,12 +405,12 @@ void cpu_mips_tlb_flush(CPUMIPSState *env)
|
|||||||
#endif /* !CONFIG_USER_ONLY */
|
#endif /* !CONFIG_USER_ONLY */
|
||||||
|
|
||||||
static void raise_mmu_exception(CPUMIPSState *env, target_ulong address,
|
static void raise_mmu_exception(CPUMIPSState *env, target_ulong address,
|
||||||
int rw, int tlb_error)
|
MMUAccessType access_type, int tlb_error)
|
||||||
{
|
{
|
||||||
CPUState *cs = env_cpu(env);
|
CPUState *cs = env_cpu(env);
|
||||||
int exception = 0, error_code = 0;
|
int exception = 0, error_code = 0;
|
||||||
|
|
||||||
if (rw == MMU_INST_FETCH) {
|
if (access_type == MMU_INST_FETCH) {
|
||||||
error_code |= EXCP_INST_NOTAVAIL;
|
error_code |= EXCP_INST_NOTAVAIL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -419,7 +419,7 @@ static void raise_mmu_exception(CPUMIPSState *env, target_ulong address,
|
|||||||
case TLBRET_BADADDR:
|
case TLBRET_BADADDR:
|
||||||
/* Reference to kernel address from user mode or supervisor mode */
|
/* Reference to kernel address from user mode or supervisor mode */
|
||||||
/* Reference to supervisor address from user mode */
|
/* Reference to supervisor address from user mode */
|
||||||
if (rw == MMU_DATA_STORE) {
|
if (access_type == MMU_DATA_STORE) {
|
||||||
exception = EXCP_AdES;
|
exception = EXCP_AdES;
|
||||||
} else {
|
} else {
|
||||||
exception = EXCP_AdEL;
|
exception = EXCP_AdEL;
|
||||||
@ -427,7 +427,7 @@ static void raise_mmu_exception(CPUMIPSState *env, target_ulong address,
|
|||||||
break;
|
break;
|
||||||
case TLBRET_NOMATCH:
|
case TLBRET_NOMATCH:
|
||||||
/* No TLB match for a mapped address */
|
/* No TLB match for a mapped address */
|
||||||
if (rw == MMU_DATA_STORE) {
|
if (access_type == MMU_DATA_STORE) {
|
||||||
exception = EXCP_TLBS;
|
exception = EXCP_TLBS;
|
||||||
} else {
|
} else {
|
||||||
exception = EXCP_TLBL;
|
exception = EXCP_TLBL;
|
||||||
@ -436,7 +436,7 @@ static void raise_mmu_exception(CPUMIPSState *env, target_ulong address,
|
|||||||
break;
|
break;
|
||||||
case TLBRET_INVALID:
|
case TLBRET_INVALID:
|
||||||
/* TLB match with no valid bit */
|
/* TLB match with no valid bit */
|
||||||
if (rw == MMU_DATA_STORE) {
|
if (access_type == MMU_DATA_STORE) {
|
||||||
exception = EXCP_TLBS;
|
exception = EXCP_TLBS;
|
||||||
} else {
|
} else {
|
||||||
exception = EXCP_TLBL;
|
exception = EXCP_TLBL;
|
||||||
|
Loading…
Reference in New Issue
Block a user