mirror of https://gitee.com/openkylin/qemu.git
target/ppc: Rename access_type to type in mmu_helper.c
The variable that holds ACCESS_INT, ACCESS_FLOAT, etc is variously called 'int type' or 'int access_type' within this file. Standardize on 'int type' throughout. Signed-off-by: Richard Henderson <richard.henderson@linaro.org> Message-Id: <20210518201146.794854-6-richard.henderson@linaro.org> Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
This commit is contained in:
parent
31fa64ecfd
commit
352e3627b2
|
@ -126,11 +126,11 @@ static int pp_check(int key, int pp, int nx)
|
||||||
return access;
|
return access;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int check_prot(int prot, int rw, int access_type)
|
static int check_prot(int prot, int rw, int type)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
if (access_type == ACCESS_CODE) {
|
if (type == ACCESS_CODE) {
|
||||||
if (prot & PAGE_EXEC) {
|
if (prot & PAGE_EXEC) {
|
||||||
ret = 0;
|
ret = 0;
|
||||||
} else {
|
} else {
|
||||||
|
@ -309,7 +309,7 @@ static void ppc6xx_tlb_store(CPUPPCState *env, target_ulong EPN, int way,
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline int ppc6xx_tlb_check(CPUPPCState *env, mmu_ctx_t *ctx,
|
static inline int ppc6xx_tlb_check(CPUPPCState *env, mmu_ctx_t *ctx,
|
||||||
target_ulong eaddr, int rw, int access_type)
|
target_ulong eaddr, int rw, int type)
|
||||||
{
|
{
|
||||||
ppc6xx_tlb_t *tlb;
|
ppc6xx_tlb_t *tlb;
|
||||||
int nr, best, way;
|
int nr, best, way;
|
||||||
|
@ -319,7 +319,7 @@ static inline int ppc6xx_tlb_check(CPUPPCState *env, mmu_ctx_t *ctx,
|
||||||
ret = -1; /* No TLB found */
|
ret = -1; /* No TLB found */
|
||||||
for (way = 0; way < env->nb_ways; way++) {
|
for (way = 0; way < env->nb_ways; way++) {
|
||||||
nr = ppc6xx_tlb_getnum(env, eaddr, way,
|
nr = ppc6xx_tlb_getnum(env, eaddr, way,
|
||||||
access_type == ACCESS_CODE ? 1 : 0);
|
type == ACCESS_CODE ? 1 : 0);
|
||||||
tlb = &env->tlb.tlb6[nr];
|
tlb = &env->tlb.tlb6[nr];
|
||||||
/* This test "emulates" the PTE index match for hardware TLBs */
|
/* This test "emulates" the PTE index match for hardware TLBs */
|
||||||
if ((eaddr & TARGET_PAGE_MASK) != tlb->EPN) {
|
if ((eaddr & TARGET_PAGE_MASK) != tlb->EPN) {
|
||||||
|
@ -333,9 +333,9 @@ static inline int ppc6xx_tlb_check(CPUPPCState *env, mmu_ctx_t *ctx,
|
||||||
TARGET_FMT_lx " %c %c\n", nr, env->nb_tlb,
|
TARGET_FMT_lx " %c %c\n", nr, env->nb_tlb,
|
||||||
pte_is_valid(tlb->pte0) ? "valid" : "inval",
|
pte_is_valid(tlb->pte0) ? "valid" : "inval",
|
||||||
tlb->EPN, eaddr, tlb->pte1,
|
tlb->EPN, eaddr, tlb->pte1,
|
||||||
rw ? 'S' : 'L', access_type == ACCESS_CODE ? 'I' : 'D');
|
rw ? 'S' : 'L', type == ACCESS_CODE ? 'I' : 'D');
|
||||||
switch (ppc6xx_tlb_pte_check(ctx, tlb->pte0, tlb->pte1,
|
switch (ppc6xx_tlb_pte_check(ctx, tlb->pte0, tlb->pte1,
|
||||||
0, rw, access_type)) {
|
0, rw, type)) {
|
||||||
case -3:
|
case -3:
|
||||||
/* TLB inconsistency */
|
/* TLB inconsistency */
|
||||||
return -1;
|
return -1;
|
||||||
|
@ -683,7 +683,7 @@ static inline void ppc4xx_tlb_invalidate_all(CPUPPCState *env)
|
||||||
|
|
||||||
static int mmu40x_get_physical_address(CPUPPCState *env, mmu_ctx_t *ctx,
|
static int mmu40x_get_physical_address(CPUPPCState *env, mmu_ctx_t *ctx,
|
||||||
target_ulong address, int rw,
|
target_ulong address, int rw,
|
||||||
int access_type)
|
int type)
|
||||||
{
|
{
|
||||||
ppcemb_tlb_t *tlb;
|
ppcemb_tlb_t *tlb;
|
||||||
hwaddr raddr;
|
hwaddr raddr;
|
||||||
|
@ -727,7 +727,7 @@ static int mmu40x_get_physical_address(CPUPPCState *env, mmu_ctx_t *ctx,
|
||||||
check_perms:
|
check_perms:
|
||||||
/* Check from TLB entry */
|
/* Check from TLB entry */
|
||||||
ctx->prot = tlb->prot;
|
ctx->prot = tlb->prot;
|
||||||
ret = check_prot(ctx->prot, rw, access_type);
|
ret = check_prot(ctx->prot, rw, type);
|
||||||
if (ret == -2) {
|
if (ret == -2) {
|
||||||
env->spr[SPR_40x_ESR] = 0;
|
env->spr[SPR_40x_ESR] = 0;
|
||||||
}
|
}
|
||||||
|
@ -760,7 +760,7 @@ void store_40x_sler(CPUPPCState *env, uint32_t val)
|
||||||
static inline int mmubooke_check_tlb(CPUPPCState *env, ppcemb_tlb_t *tlb,
|
static inline int mmubooke_check_tlb(CPUPPCState *env, ppcemb_tlb_t *tlb,
|
||||||
hwaddr *raddr, int *prot,
|
hwaddr *raddr, int *prot,
|
||||||
target_ulong address, int rw,
|
target_ulong address, int rw,
|
||||||
int access_type, int i)
|
int type, int i)
|
||||||
{
|
{
|
||||||
int ret, prot2;
|
int ret, prot2;
|
||||||
|
|
||||||
|
@ -794,7 +794,7 @@ found_tlb:
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Check the address space */
|
/* Check the address space */
|
||||||
if (access_type == ACCESS_CODE) {
|
if (type == ACCESS_CODE) {
|
||||||
if (msr_ir != (tlb->attr & 1)) {
|
if (msr_ir != (tlb->attr & 1)) {
|
||||||
LOG_SWTLB("%s: AS doesn't match\n", __func__);
|
LOG_SWTLB("%s: AS doesn't match\n", __func__);
|
||||||
return -1;
|
return -1;
|
||||||
|
@ -829,7 +829,7 @@ found_tlb:
|
||||||
|
|
||||||
static int mmubooke_get_physical_address(CPUPPCState *env, mmu_ctx_t *ctx,
|
static int mmubooke_get_physical_address(CPUPPCState *env, mmu_ctx_t *ctx,
|
||||||
target_ulong address, int rw,
|
target_ulong address, int rw,
|
||||||
int access_type)
|
int type)
|
||||||
{
|
{
|
||||||
ppcemb_tlb_t *tlb;
|
ppcemb_tlb_t *tlb;
|
||||||
hwaddr raddr;
|
hwaddr raddr;
|
||||||
|
@ -840,7 +840,7 @@ static int mmubooke_get_physical_address(CPUPPCState *env, mmu_ctx_t *ctx,
|
||||||
for (i = 0; i < env->nb_tlb; i++) {
|
for (i = 0; i < env->nb_tlb; i++) {
|
||||||
tlb = &env->tlb.tlbe[i];
|
tlb = &env->tlb.tlbe[i];
|
||||||
ret = mmubooke_check_tlb(env, tlb, &raddr, &ctx->prot, address, rw,
|
ret = mmubooke_check_tlb(env, tlb, &raddr, &ctx->prot, address, rw,
|
||||||
access_type, i);
|
type, i);
|
||||||
if (ret != -1) {
|
if (ret != -1) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -984,7 +984,7 @@ static bool mmubooke206_get_as(CPUPPCState *env,
|
||||||
static int mmubooke206_check_tlb(CPUPPCState *env, ppcmas_tlb_t *tlb,
|
static int mmubooke206_check_tlb(CPUPPCState *env, ppcmas_tlb_t *tlb,
|
||||||
hwaddr *raddr, int *prot,
|
hwaddr *raddr, int *prot,
|
||||||
target_ulong address, int rw,
|
target_ulong address, int rw,
|
||||||
int access_type, int mmu_idx)
|
int type, int mmu_idx)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
int prot2 = 0;
|
int prot2 = 0;
|
||||||
|
@ -1043,7 +1043,7 @@ found_tlb:
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Check the address space and permissions */
|
/* Check the address space and permissions */
|
||||||
if (access_type == ACCESS_CODE) {
|
if (type == ACCESS_CODE) {
|
||||||
/* There is no way to fetch code using epid load */
|
/* There is no way to fetch code using epid load */
|
||||||
assert(!use_epid);
|
assert(!use_epid);
|
||||||
if (msr_ir != ((tlb->mas1 & MAS1_TS) >> MAS1_TS_SHIFT)) {
|
if (msr_ir != ((tlb->mas1 & MAS1_TS) >> MAS1_TS_SHIFT)) {
|
||||||
|
@ -1080,7 +1080,7 @@ found_tlb:
|
||||||
|
|
||||||
static int mmubooke206_get_physical_address(CPUPPCState *env, mmu_ctx_t *ctx,
|
static int mmubooke206_get_physical_address(CPUPPCState *env, mmu_ctx_t *ctx,
|
||||||
target_ulong address, int rw,
|
target_ulong address, int rw,
|
||||||
int access_type, int mmu_idx)
|
int type, int mmu_idx)
|
||||||
{
|
{
|
||||||
ppcmas_tlb_t *tlb;
|
ppcmas_tlb_t *tlb;
|
||||||
hwaddr raddr;
|
hwaddr raddr;
|
||||||
|
@ -1098,7 +1098,7 @@ static int mmubooke206_get_physical_address(CPUPPCState *env, mmu_ctx_t *ctx,
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
ret = mmubooke206_check_tlb(env, tlb, &raddr, &ctx->prot, address,
|
ret = mmubooke206_check_tlb(env, tlb, &raddr, &ctx->prot, address,
|
||||||
rw, access_type, mmu_idx);
|
rw, type, mmu_idx);
|
||||||
if (ret != -1) {
|
if (ret != -1) {
|
||||||
goto found_tlb;
|
goto found_tlb;
|
||||||
}
|
}
|
||||||
|
@ -1415,12 +1415,12 @@ static inline int check_physical(CPUPPCState *env, mmu_ctx_t *ctx,
|
||||||
|
|
||||||
static int get_physical_address_wtlb(
|
static int get_physical_address_wtlb(
|
||||||
CPUPPCState *env, mmu_ctx_t *ctx,
|
CPUPPCState *env, mmu_ctx_t *ctx,
|
||||||
target_ulong eaddr, int rw, int access_type,
|
target_ulong eaddr, int rw, int type,
|
||||||
int mmu_idx)
|
int mmu_idx)
|
||||||
{
|
{
|
||||||
int ret = -1;
|
int ret = -1;
|
||||||
bool real_mode = (access_type == ACCESS_CODE && msr_ir == 0)
|
bool real_mode = (type == ACCESS_CODE && msr_ir == 0)
|
||||||
|| (access_type != ACCESS_CODE && msr_dr == 0);
|
|| (type != ACCESS_CODE && msr_dr == 0);
|
||||||
|
|
||||||
switch (env->mmu_model) {
|
switch (env->mmu_model) {
|
||||||
case POWERPC_MMU_SOFT_6xx:
|
case POWERPC_MMU_SOFT_6xx:
|
||||||
|
@ -1430,11 +1430,11 @@ static int get_physical_address_wtlb(
|
||||||
} else {
|
} else {
|
||||||
/* Try to find a BAT */
|
/* Try to find a BAT */
|
||||||
if (env->nb_BATs != 0) {
|
if (env->nb_BATs != 0) {
|
||||||
ret = get_bat_6xx_tlb(env, ctx, eaddr, rw, access_type);
|
ret = get_bat_6xx_tlb(env, ctx, eaddr, rw, type);
|
||||||
}
|
}
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
/* We didn't match any BAT entry or don't have BATs */
|
/* We didn't match any BAT entry or don't have BATs */
|
||||||
ret = get_segment_6xx_tlb(env, ctx, eaddr, rw, access_type);
|
ret = get_segment_6xx_tlb(env, ctx, eaddr, rw, type);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -1445,16 +1445,16 @@ static int get_physical_address_wtlb(
|
||||||
ret = check_physical(env, ctx, eaddr, rw);
|
ret = check_physical(env, ctx, eaddr, rw);
|
||||||
} else {
|
} else {
|
||||||
ret = mmu40x_get_physical_address(env, ctx, eaddr,
|
ret = mmu40x_get_physical_address(env, ctx, eaddr,
|
||||||
rw, access_type);
|
rw, type);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case POWERPC_MMU_BOOKE:
|
case POWERPC_MMU_BOOKE:
|
||||||
ret = mmubooke_get_physical_address(env, ctx, eaddr,
|
ret = mmubooke_get_physical_address(env, ctx, eaddr,
|
||||||
rw, access_type);
|
rw, type);
|
||||||
break;
|
break;
|
||||||
case POWERPC_MMU_BOOKE206:
|
case POWERPC_MMU_BOOKE206:
|
||||||
ret = mmubooke206_get_physical_address(env, ctx, eaddr, rw,
|
ret = mmubooke206_get_physical_address(env, ctx, eaddr, rw,
|
||||||
access_type, mmu_idx);
|
type, mmu_idx);
|
||||||
break;
|
break;
|
||||||
case POWERPC_MMU_MPC8xx:
|
case POWERPC_MMU_MPC8xx:
|
||||||
/* XXX: TODO */
|
/* XXX: TODO */
|
||||||
|
@ -1478,9 +1478,9 @@ static int get_physical_address_wtlb(
|
||||||
|
|
||||||
static int get_physical_address(
|
static int get_physical_address(
|
||||||
CPUPPCState *env, mmu_ctx_t *ctx,
|
CPUPPCState *env, mmu_ctx_t *ctx,
|
||||||
target_ulong eaddr, int rw, int access_type)
|
target_ulong eaddr, int rw, int type)
|
||||||
{
|
{
|
||||||
return get_physical_address_wtlb(env, ctx, eaddr, rw, access_type, 0);
|
return get_physical_address_wtlb(env, ctx, eaddr, rw, type, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
hwaddr ppc_cpu_get_phys_page_debug(CPUState *cs, vaddr addr)
|
hwaddr ppc_cpu_get_phys_page_debug(CPUState *cs, vaddr addr)
|
||||||
|
@ -1584,19 +1584,19 @@ static int cpu_ppc_handle_mmu_fault(CPUPPCState *env, target_ulong address,
|
||||||
CPUState *cs = env_cpu(env);
|
CPUState *cs = env_cpu(env);
|
||||||
PowerPCCPU *cpu = POWERPC_CPU(cs);
|
PowerPCCPU *cpu = POWERPC_CPU(cs);
|
||||||
mmu_ctx_t ctx;
|
mmu_ctx_t ctx;
|
||||||
int access_type;
|
int type;
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
|
|
||||||
if (rw == 2) {
|
if (rw == 2) {
|
||||||
/* code access */
|
/* code access */
|
||||||
rw = 0;
|
rw = 0;
|
||||||
access_type = ACCESS_CODE;
|
type = ACCESS_CODE;
|
||||||
} else {
|
} else {
|
||||||
/* data access */
|
/* data access */
|
||||||
access_type = env->access_type;
|
type = env->access_type;
|
||||||
}
|
}
|
||||||
ret = get_physical_address_wtlb(env, &ctx, address, rw,
|
ret = get_physical_address_wtlb(env, &ctx, address, rw,
|
||||||
access_type, mmu_idx);
|
type, mmu_idx);
|
||||||
if (ret == 0) {
|
if (ret == 0) {
|
||||||
tlb_set_page(cs, address & TARGET_PAGE_MASK,
|
tlb_set_page(cs, address & TARGET_PAGE_MASK,
|
||||||
ctx.raddr & TARGET_PAGE_MASK, ctx.prot,
|
ctx.raddr & TARGET_PAGE_MASK, ctx.prot,
|
||||||
|
@ -1604,7 +1604,7 @@ static int cpu_ppc_handle_mmu_fault(CPUPPCState *env, target_ulong address,
|
||||||
ret = 0;
|
ret = 0;
|
||||||
} else if (ret < 0) {
|
} else if (ret < 0) {
|
||||||
LOG_MMU_STATE(cs);
|
LOG_MMU_STATE(cs);
|
||||||
if (access_type == ACCESS_CODE) {
|
if (type == ACCESS_CODE) {
|
||||||
switch (ret) {
|
switch (ret) {
|
||||||
case -1:
|
case -1:
|
||||||
/* No matches in page tables or TLB */
|
/* No matches in page tables or TLB */
|
||||||
|
@ -1761,7 +1761,7 @@ static int cpu_ppc_handle_mmu_fault(CPUPPCState *env, target_ulong address,
|
||||||
break;
|
break;
|
||||||
case -4:
|
case -4:
|
||||||
/* Direct store exception */
|
/* Direct store exception */
|
||||||
switch (access_type) {
|
switch (type) {
|
||||||
case ACCESS_FLOAT:
|
case ACCESS_FLOAT:
|
||||||
/* Floating point load/store */
|
/* Floating point load/store */
|
||||||
cs->exception_index = POWERPC_EXCP_ALIGN;
|
cs->exception_index = POWERPC_EXCP_ALIGN;
|
||||||
|
|
Loading…
Reference in New Issue