diff mbox series

[v3,10/39] target/cris: Reindent mmu.c

Message ID 20190508000641.19090-11-richard.henderson@linaro.org
State Superseded
Headers show
Series tcg: Move the softmmu tlb to CPUNegativeOffsetState | expand

Commit Message

Richard Henderson May 8, 2019, 12:06 a.m. UTC
Fix all of the coding style errors in this file at once.

Signed-off-by: Richard Henderson <richard.henderson@linaro.org>

---
 target/cris/mmu.c | 479 +++++++++++++++++++++++-----------------------
 1 file changed, 237 insertions(+), 242 deletions(-)

-- 
2.17.1

Comments

Philippe Mathieu-Daudé May 8, 2019, 6:26 a.m. UTC | #1
On 5/8/19 2:06 AM, Richard Henderson wrote:
> Fix all of the coding style errors in this file at once.

> 

> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>

> ---

>  target/cris/mmu.c | 479 +++++++++++++++++++++++-----------------------

>  1 file changed, 237 insertions(+), 242 deletions(-)

> 

> diff --git a/target/cris/mmu.c b/target/cris/mmu.c

> index b8db908823..9cb73bbfec 100644

> --- a/target/cris/mmu.c

> +++ b/target/cris/mmu.c

> @@ -33,96 +33,99 @@

>  

>  void cris_mmu_init(CPUCRISState *env)

>  {

> -	env->mmu_rand_lfsr = 0xcccc;

> +    env->mmu_rand_lfsr = 0xcccc;

>  }

>  

>  #define SR_POLYNOM 0x8805

>  static inline unsigned int compute_polynom(unsigned int sr)

>  {

> -	unsigned int i;

> -	unsigned int f;

> +    unsigned int i;

> +    unsigned int f;

>  

> -	f = 0;

> -	for (i = 0; i < 16; i++)

> -		f += ((SR_POLYNOM >> i) & 1) & ((sr >> i) & 1);

> +    f = 0;

> +    for (i = 0; i < 16; i++) {

> +        f += ((SR_POLYNOM >> i) & 1) & ((sr >> i) & 1);

> +    }

>  

> -	return f;

> +    return f;

>  }

>  

>  static void cris_mmu_update_rand_lfsr(CPUCRISState *env)

>  {

> -	unsigned int f;

> +    unsigned int f;

>  

> -	/* Update lfsr at every fault.  */

> -	f = compute_polynom(env->mmu_rand_lfsr);

> -	env->mmu_rand_lfsr >>= 1;

> -	env->mmu_rand_lfsr |= (f << 15);

> -	env->mmu_rand_lfsr &= 0xffff;

> +    /* Update lfsr at every fault.  */

> +    f = compute_polynom(env->mmu_rand_lfsr);

> +    env->mmu_rand_lfsr >>= 1;

> +    env->mmu_rand_lfsr |= (f << 15);

> +    env->mmu_rand_lfsr &= 0xffff;

>  }

>  

>  static inline int cris_mmu_enabled(uint32_t rw_gc_cfg)

>  {

> -	return (rw_gc_cfg & 12) != 0;

> +    return (rw_gc_cfg & 12) != 0;

>  }

>  

>  static inline int cris_mmu_segmented_addr(int seg, uint32_t rw_mm_cfg)

>  {

> -	return (1 << seg) & rw_mm_cfg;

> +    return (1 << seg) & rw_mm_cfg;

>  }

>  

>  static uint32_t cris_mmu_translate_seg(CPUCRISState *env, int seg)

>  {

> -	uint32_t base;

> -	int i;

> +    uint32_t base;

> +    int i;

>  

> -	if (seg < 8)

> -		base = env->sregs[SFR_RW_MM_KBASE_LO];

> -	else

> -		base = env->sregs[SFR_RW_MM_KBASE_HI];

> +    if (seg < 8) {

> +        base = env->sregs[SFR_RW_MM_KBASE_LO];

> +    } else {

> +        base = env->sregs[SFR_RW_MM_KBASE_HI];

> +    }

>  

> -	i = seg & 7;

> -	base >>= i * 4;

> -	base &= 15;

> +    i = seg & 7;

> +    base >>= i * 4;

> +    base &= 15;

>  

> -	base <<= 28;

> -	return base;

> +    base <<= 28;

> +    return base;

>  }

> -/* Used by the tlb decoder.  */

> -#define EXTRACT_FIELD(src, start, end) \

> -	    (((src) >> start) & ((1 << (end - start + 1)) - 1))

>  

> -static inline void set_field(uint32_t *dst, unsigned int val, 

> +/* Used by the tlb decoder.  */

> +#define EXTRACT_FIELD(src, start, end)                  \

> +    (((src) >> start) & ((1 << (end - start + 1)) - 1))

> +

> +static inline void set_field(uint32_t *dst, unsigned int val,

>  			     unsigned int offset, unsigned int width)

>  {

> -	uint32_t mask;

> +    uint32_t mask;

>  

> -	mask = (1 << width) - 1;

> -	mask <<= offset;

> -	val <<= offset;

> +    mask = (1 << width) - 1;

> +    mask <<= offset;

> +    val <<= offset;

>  

> -	val &= mask;

> -	*dst &= ~(mask);

> -	*dst |= val;

> +    val &= mask;

> +    *dst &= ~(mask);

> +    *dst |= val;

>  }

>  

>  #ifdef DEBUG

>  static void dump_tlb(CPUCRISState *env, int mmu)

>  {

> -	int set;

> -	int idx;

> -	uint32_t hi, lo, tlb_vpn, tlb_pfn;

> +    int set;

> +    int idx;

> +    uint32_t hi, lo, tlb_vpn, tlb_pfn;

>  

> -	for (set = 0; set < 4; set++) {

> -		for (idx = 0; idx < 16; idx++) {

> -			lo = env->tlbsets[mmu][set][idx].lo;

> -			hi = env->tlbsets[mmu][set][idx].hi;

> -			tlb_vpn = EXTRACT_FIELD(hi, 13, 31);

> -			tlb_pfn = EXTRACT_FIELD(lo, 13, 31);

> +    for (set = 0; set < 4; set++) {

> +        for (idx = 0; idx < 16; idx++) {

> +            lo = env->tlbsets[mmu][set][idx].lo;

> +            hi = env->tlbsets[mmu][set][idx].hi;

> +            tlb_vpn = EXTRACT_FIELD(hi, 13, 31);

> +            tlb_pfn = EXTRACT_FIELD(lo, 13, 31);

>  

> -			printf ("TLB: [%d][%d] hi=%x lo=%x v=%x p=%x\n", 

> -					set, idx, hi, lo, tlb_vpn, tlb_pfn);

> -		}

> -	}

> +            printf("TLB: [%d][%d] hi=%x lo=%x v=%x p=%x\n",

> +                   set, idx, hi, lo, tlb_vpn, tlb_pfn);

> +        }

> +    }

>  }

>  #endif

>  

> @@ -131,232 +134,224 @@ static int cris_mmu_translate_page(struct cris_mmu_result *res,

>  				   CPUCRISState *env, uint32_t vaddr,

>  				   int rw, int usermode, int debug)

>  {

> -	unsigned int vpage;

> -	unsigned int idx;

> -	uint32_t pid, lo, hi;

> -	uint32_t tlb_vpn, tlb_pfn = 0;

> -	int tlb_pid, tlb_g, tlb_v, tlb_k, tlb_w, tlb_x;

> -	int cfg_v, cfg_k, cfg_w, cfg_x;	

> -	int set, match = 0;

> -	uint32_t r_cause;

> -	uint32_t r_cfg;

> -	int rwcause;

> -	int mmu = 1; /* Data mmu is default.  */

> -	int vect_base;

> +    unsigned int vpage;

> +    unsigned int idx;

> +    uint32_t pid, lo, hi;

> +    uint32_t tlb_vpn, tlb_pfn = 0;

> +    int tlb_pid, tlb_g, tlb_v, tlb_k, tlb_w, tlb_x;

> +    int cfg_v, cfg_k, cfg_w, cfg_x;

> +    int set, match = 0;

> +    uint32_t r_cause;

> +    uint32_t r_cfg;

> +    int rwcause;

> +    int mmu = 1; /* Data mmu is default.  */

> +    int vect_base;

>  

> -	r_cause = env->sregs[SFR_R_MM_CAUSE];

> -	r_cfg = env->sregs[SFR_RW_MM_CFG];

> -	pid = env->pregs[PR_PID] & 0xff;

> +    r_cause = env->sregs[SFR_R_MM_CAUSE];

> +    r_cfg = env->sregs[SFR_RW_MM_CFG];

> +    pid = env->pregs[PR_PID] & 0xff;

>  

> -	switch (rw) {

> -		case 2: rwcause = CRIS_MMU_ERR_EXEC; mmu = 0; break;

> -		case 1: rwcause = CRIS_MMU_ERR_WRITE; break;

> -		default:

> -		case 0: rwcause = CRIS_MMU_ERR_READ; break;

> -	}

> +    switch (rw) {

> +    case 2:

> +        rwcause = CRIS_MMU_ERR_EXEC;

> +        mmu = 0;

> +        break;

> +    case 1:

> +        rwcause = CRIS_MMU_ERR_WRITE;

> +        break;

> +    default:

> +    case 0:

> +        rwcause = CRIS_MMU_ERR_READ;

> +        break;

> +    }

>  

> -	/* I exception vectors 4 - 7, D 8 - 11.  */

> -	vect_base = (mmu + 1) * 4;

> +    /* I exception vectors 4 - 7, D 8 - 11.  */

> +    vect_base = (mmu + 1) * 4;

>  

> -	vpage = vaddr >> 13;

> +    vpage = vaddr >> 13;

>  

> -	/* We know the index which to check on each set.

> -	   Scan both I and D.  */

> -#if 0

> -	for (set = 0; set < 4; set++) {

> -		for (idx = 0; idx < 16; idx++) {

> -			lo = env->tlbsets[mmu][set][idx].lo;

> -			hi = env->tlbsets[mmu][set][idx].hi;

> -			tlb_vpn = EXTRACT_FIELD(hi, 13, 31);

> -			tlb_pfn = EXTRACT_FIELD(lo, 13, 31);


You remove dead code, OK.

Reviewed using 'git diff --ignore-all-space --word-diff=color'.

Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>


> +    /*

> +     * We know the index which to check on each set.

> +     * Scan both I and D.

> +     */

> +    idx = vpage & 15;

> +    for (set = 0; set < 4; set++) {

> +        lo = env->tlbsets[mmu][set][idx].lo;

> +        hi = env->tlbsets[mmu][set][idx].hi;

>  

> -			printf ("TLB: [%d][%d] hi=%x lo=%x v=%x p=%x\n", 

> -					set, idx, hi, lo, tlb_vpn, tlb_pfn);

> -		}

> -	}

> -#endif

> +        tlb_vpn = hi >> 13;

> +        tlb_pid = EXTRACT_FIELD(hi, 0, 7);

> +        tlb_g  = EXTRACT_FIELD(lo, 4, 4);

>  

> -	idx = vpage & 15;

> -	for (set = 0; set < 4; set++)

> -	{

> -		lo = env->tlbsets[mmu][set][idx].lo;

> -		hi = env->tlbsets[mmu][set][idx].hi;

> +        D_LOG("TLB[%d][%d][%d] v=%x vpage=%x lo=%x hi=%x\n",

> +              mmu, set, idx, tlb_vpn, vpage, lo, hi);

> +        if ((tlb_g || (tlb_pid == pid)) && tlb_vpn == vpage) {

> +            match = 1;

> +            break;

> +        }

> +    }

>  

> -		tlb_vpn = hi >> 13;

> -		tlb_pid = EXTRACT_FIELD(hi, 0, 7);

> -		tlb_g  = EXTRACT_FIELD(lo, 4, 4);

> +    res->bf_vec = vect_base;

> +    if (match) {

> +        cfg_w  = EXTRACT_FIELD(r_cfg, 19, 19);

> +        cfg_k  = EXTRACT_FIELD(r_cfg, 18, 18);

> +        cfg_x  = EXTRACT_FIELD(r_cfg, 17, 17);

> +        cfg_v  = EXTRACT_FIELD(r_cfg, 16, 16);

>  

> -		D_LOG("TLB[%d][%d][%d] v=%x vpage=%x lo=%x hi=%x\n", 

> -			 mmu, set, idx, tlb_vpn, vpage, lo, hi);

> -		if ((tlb_g || (tlb_pid == pid))

> -		    && tlb_vpn == vpage) {

> -			match = 1;

> -			break;

> -		}

> -	}

> +        tlb_pfn = EXTRACT_FIELD(lo, 13, 31);

> +        tlb_v = EXTRACT_FIELD(lo, 3, 3);

> +        tlb_k = EXTRACT_FIELD(lo, 2, 2);

> +        tlb_w = EXTRACT_FIELD(lo, 1, 1);

> +        tlb_x = EXTRACT_FIELD(lo, 0, 0);

>  

> -	res->bf_vec = vect_base;

> -	if (match) {

> -		cfg_w  = EXTRACT_FIELD(r_cfg, 19, 19);

> -		cfg_k  = EXTRACT_FIELD(r_cfg, 18, 18);

> -		cfg_x  = EXTRACT_FIELD(r_cfg, 17, 17);

> -		cfg_v  = EXTRACT_FIELD(r_cfg, 16, 16);

> +        /*

> +         * set_exception_vector(0x04, i_mmu_refill);

> +         * set_exception_vector(0x05, i_mmu_invalid);

> +         * set_exception_vector(0x06, i_mmu_access);

> +         * set_exception_vector(0x07, i_mmu_execute);

> +         * set_exception_vector(0x08, d_mmu_refill);

> +         * set_exception_vector(0x09, d_mmu_invalid);

> +         * set_exception_vector(0x0a, d_mmu_access);

> +         * set_exception_vector(0x0b, d_mmu_write);

> +         */

> +        if (cfg_k && tlb_k && usermode) {

> +            D(printf("tlb: kernel protected %x lo=%x pc=%x\n",

> +                     vaddr, lo, env->pc));

> +            match = 0;

> +            res->bf_vec = vect_base + 2;

> +        } else if (rw == 1 && cfg_w && !tlb_w) {

> +            D(printf("tlb: write protected %x lo=%x pc=%x\n",

> +                     vaddr, lo, env->pc));

> +            match = 0;

> +            /* write accesses never go through the I mmu.  */

> +            res->bf_vec = vect_base + 3;

> +        } else if (rw == 2 && cfg_x && !tlb_x) {

> +            D(printf("tlb: exec protected %x lo=%x pc=%x\n",

> +                     vaddr, lo, env->pc));

> +            match = 0;

> +            res->bf_vec = vect_base + 3;

> +        } else if (cfg_v && !tlb_v) {

> +            D(printf("tlb: invalid %x\n", vaddr));

> +            match = 0;

> +            res->bf_vec = vect_base + 1;

> +        }

>  

> -		tlb_pfn = EXTRACT_FIELD(lo, 13, 31);

> -		tlb_v = EXTRACT_FIELD(lo, 3, 3);

> -		tlb_k = EXTRACT_FIELD(lo, 2, 2);

> -		tlb_w = EXTRACT_FIELD(lo, 1, 1);

> -		tlb_x = EXTRACT_FIELD(lo, 0, 0);

> +        res->prot = 0;

> +        if (match) {

> +            res->prot |= PAGE_READ;

> +            if (tlb_w) {

> +                res->prot |= PAGE_WRITE;

> +            }

> +            if (mmu == 0 && (cfg_x || tlb_x)) {

> +                res->prot |= PAGE_EXEC;

> +            }

> +        } else {

> +            D(dump_tlb(env, mmu));

> +        }

> +    } else {

> +        /* If refill, provide a randomized set.  */

> +        set = env->mmu_rand_lfsr & 3;

> +    }

>  

> -		/*

> -		set_exception_vector(0x04, i_mmu_refill);

> -		set_exception_vector(0x05, i_mmu_invalid);

> -		set_exception_vector(0x06, i_mmu_access);

> -		set_exception_vector(0x07, i_mmu_execute);

> -		set_exception_vector(0x08, d_mmu_refill);

> -		set_exception_vector(0x09, d_mmu_invalid);

> -		set_exception_vector(0x0a, d_mmu_access);

> -		set_exception_vector(0x0b, d_mmu_write);

> -		*/

> -		if (cfg_k && tlb_k && usermode) {

> -			D(printf ("tlb: kernel protected %x lo=%x pc=%x\n", 

> -				  vaddr, lo, env->pc));

> -			match = 0;

> -			res->bf_vec = vect_base + 2;

> -		} else if (rw == 1 && cfg_w && !tlb_w) {

> -			D(printf ("tlb: write protected %x lo=%x pc=%x\n", 

> -				  vaddr, lo, env->pc));

> -			match = 0;

> -			/* write accesses never go through the I mmu.  */

> -			res->bf_vec = vect_base + 3;

> -		} else if (rw == 2 && cfg_x && !tlb_x) {

> -			D(printf ("tlb: exec protected %x lo=%x pc=%x\n", 

> -				 vaddr, lo, env->pc));

> -			match = 0;

> -			res->bf_vec = vect_base + 3;

> -		} else if (cfg_v && !tlb_v) {

> -			D(printf ("tlb: invalid %x\n", vaddr));

> -			match = 0;

> -			res->bf_vec = vect_base + 1;

> -		}

> +    if (!match && !debug) {

> +        cris_mmu_update_rand_lfsr(env);

>  

> -		res->prot = 0;

> -		if (match) {

> -			res->prot |= PAGE_READ;

> -			if (tlb_w)

> -				res->prot |= PAGE_WRITE;

> -			if (mmu == 0 && (cfg_x || tlb_x))

> -				res->prot |= PAGE_EXEC;

> -		}

> -		else

> -			D(dump_tlb(env, mmu));

> -	} else {

> -		/* If refill, provide a randomized set.  */

> -		set = env->mmu_rand_lfsr & 3;

> -	}

> +        /* Compute index.  */

> +        idx = vpage & 15;

>  

> -	if (!match && !debug) {

> -		cris_mmu_update_rand_lfsr(env);

> +        /* Update RW_MM_TLB_SEL.  */

> +        env->sregs[SFR_RW_MM_TLB_SEL] = 0;

> +        set_field(&env->sregs[SFR_RW_MM_TLB_SEL], idx, 0, 4);

> +        set_field(&env->sregs[SFR_RW_MM_TLB_SEL], set, 4, 2);

>  

> -		/* Compute index.  */

> -		idx = vpage & 15;

> +        /* Update RW_MM_CAUSE.  */

> +        set_field(&r_cause, rwcause, 8, 2);

> +        set_field(&r_cause, vpage, 13, 19);

> +        set_field(&r_cause, pid, 0, 8);

> +        env->sregs[SFR_R_MM_CAUSE] = r_cause;

> +        D(printf("refill vaddr=%x pc=%x\n", vaddr, env->pc));

> +    }

>  

> -		/* Update RW_MM_TLB_SEL.  */

> -		env->sregs[SFR_RW_MM_TLB_SEL] = 0;

> -		set_field(&env->sregs[SFR_RW_MM_TLB_SEL], idx, 0, 4);

> -		set_field(&env->sregs[SFR_RW_MM_TLB_SEL], set, 4, 2);

> +    D(printf("%s rw=%d mtch=%d pc=%x va=%x vpn=%x tlbvpn=%x pfn=%x pid=%x"

> +             " %x cause=%x sel=%x sp=%x %x %x\n",

> +             __func__, rw, match, env->pc,

> +             vaddr, vpage,

> +             tlb_vpn, tlb_pfn, tlb_pid,

> +             pid,

> +             r_cause,

> +             env->sregs[SFR_RW_MM_TLB_SEL],

> +             env->regs[R_SP], env->pregs[PR_USP], env->ksp));

>  

> -		/* Update RW_MM_CAUSE.  */

> -		set_field(&r_cause, rwcause, 8, 2);

> -		set_field(&r_cause, vpage, 13, 19);

> -		set_field(&r_cause, pid, 0, 8);

> -		env->sregs[SFR_R_MM_CAUSE] = r_cause;

> -		D(printf("refill vaddr=%x pc=%x\n", vaddr, env->pc));

> -	}

> -

> -	D(printf ("%s rw=%d mtch=%d pc=%x va=%x vpn=%x tlbvpn=%x pfn=%x pid=%x"

> -		  " %x cause=%x sel=%x sp=%x %x %x\n",

> -		  __func__, rw, match, env->pc,

> -		  vaddr, vpage,

> -		  tlb_vpn, tlb_pfn, tlb_pid, 

> -		  pid,

> -		  r_cause,

> -		  env->sregs[SFR_RW_MM_TLB_SEL],

> -		  env->regs[R_SP], env->pregs[PR_USP], env->ksp));

> -

> -	res->phy = tlb_pfn << TARGET_PAGE_BITS;

> -	return !match;

> +    res->phy = tlb_pfn << TARGET_PAGE_BITS;

> +    return !match;

>  }

>  

>  void cris_mmu_flush_pid(CPUCRISState *env, uint32_t pid)

>  {

>      CRISCPU *cpu = cris_env_get_cpu(env);

> -	target_ulong vaddr;

> -	unsigned int idx;

> -	uint32_t lo, hi;

> -	uint32_t tlb_vpn;

> -	int tlb_pid, tlb_g, tlb_v;

> -	unsigned int set;

> -	unsigned int mmu;

> +    target_ulong vaddr;

> +    unsigned int idx;

> +    uint32_t lo, hi;

> +    uint32_t tlb_vpn;

> +    int tlb_pid, tlb_g, tlb_v;

> +    unsigned int set;

> +    unsigned int mmu;

>  

> -	pid &= 0xff;

> -	for (mmu = 0; mmu < 2; mmu++) {

> -		for (set = 0; set < 4; set++)

> -		{

> -			for (idx = 0; idx < 16; idx++) {

> -				lo = env->tlbsets[mmu][set][idx].lo;

> -				hi = env->tlbsets[mmu][set][idx].hi;

> -				

> -				tlb_vpn = EXTRACT_FIELD(hi, 13, 31);

> -				tlb_pid = EXTRACT_FIELD(hi, 0, 7);

> -				tlb_g  = EXTRACT_FIELD(lo, 4, 4);

> -				tlb_v = EXTRACT_FIELD(lo, 3, 3);

> +    pid &= 0xff;

> +    for (mmu = 0; mmu < 2; mmu++) {

> +        for (set = 0; set < 4; set++) {

> +            for (idx = 0; idx < 16; idx++) {

> +                lo = env->tlbsets[mmu][set][idx].lo;

> +                hi = env->tlbsets[mmu][set][idx].hi;

>  

> -				if (tlb_v && !tlb_g && (tlb_pid == pid)) {

> -					vaddr = tlb_vpn << TARGET_PAGE_BITS;

> -					D_LOG("flush pid=%x vaddr=%x\n", 

> -						  pid, vaddr);

> +                tlb_vpn = EXTRACT_FIELD(hi, 13, 31);

> +                tlb_pid = EXTRACT_FIELD(hi, 0, 7);

> +                tlb_g  = EXTRACT_FIELD(lo, 4, 4);

> +                tlb_v = EXTRACT_FIELD(lo, 3, 3);

> +

> +                if (tlb_v && !tlb_g && (tlb_pid == pid)) {

> +                    vaddr = tlb_vpn << TARGET_PAGE_BITS;

> +                    D_LOG("flush pid=%x vaddr=%x\n", pid, vaddr);

>                      tlb_flush_page(CPU(cpu), vaddr);

> -				}

> -			}

> -		}

> -	}

> +                }

> +            }

> +        }

> +    }

>  }

>  

>  int cris_mmu_translate(struct cris_mmu_result *res,

>  		       CPUCRISState *env, uint32_t vaddr,

>  		       int rw, int mmu_idx, int debug)

>  {

> -	int seg;

> -	int miss = 0;

> -	int is_user = mmu_idx == MMU_USER_IDX;

> -	uint32_t old_srs;

> +    int seg;

> +    int miss = 0;

> +    int is_user = mmu_idx == MMU_USER_IDX;

> +    uint32_t old_srs;

>  

> -	old_srs= env->pregs[PR_SRS];

> +    old_srs = env->pregs[PR_SRS];

>  

> -	/* rw == 2 means exec, map the access to the insn mmu.  */

> -	env->pregs[PR_SRS] = rw == 2 ? 1 : 2;

> +    /* rw == 2 means exec, map the access to the insn mmu.  */

> +    env->pregs[PR_SRS] = rw == 2 ? 1 : 2;

>  

> -	if (!cris_mmu_enabled(env->sregs[SFR_RW_GC_CFG])) {

> -		res->phy = vaddr;

> -		res->prot = PAGE_BITS;

> -		goto done;

> -	}

> +    if (!cris_mmu_enabled(env->sregs[SFR_RW_GC_CFG])) {

> +        res->phy = vaddr;

> +        res->prot = PAGE_BITS;

> +        goto done;

> +    }

>  

> -	seg = vaddr >> 28;

> -	if (!is_user && cris_mmu_segmented_addr(seg, env->sregs[SFR_RW_MM_CFG]))

> -	{

> -		uint32_t base;

> +    seg = vaddr >> 28;

> +    if (!is_user && cris_mmu_segmented_addr(seg, env->sregs[SFR_RW_MM_CFG])) {

> +        uint32_t base;

>  

> -		miss = 0;

> -		base = cris_mmu_translate_seg(env, seg);

> -                res->phy = base | (0x0fffffff & vaddr);

> -		res->prot = PAGE_BITS;

> -	} else {

> -		miss = cris_mmu_translate_page(res, env, vaddr, rw,

> -					       is_user, debug);

> -	}

> -  done:

> -	env->pregs[PR_SRS] = old_srs;

> -	return miss;

> +        miss = 0;

> +        base = cris_mmu_translate_seg(env, seg);

> +        res->phy = base | (0x0fffffff & vaddr);

> +        res->prot = PAGE_BITS;

> +    } else {

> +        miss = cris_mmu_translate_page(res, env, vaddr, rw,

> +                                       is_user, debug);

> +    }

> + done:

> +    env->pregs[PR_SRS] = old_srs;

> +    return miss;

>  }

>
Alistair Francis May 9, 2019, 6:01 p.m. UTC | #2
On Tue, May 7, 2019 at 5:13 PM Richard Henderson
<richard.henderson@linaro.org> wrote:
>

> Fix all of the coding style errors in this file at once.

>

> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>


Reviewed-by: Alistair Francis <alistair.francis@wdc.com>


Alistair

> ---

>  target/cris/mmu.c | 479 +++++++++++++++++++++++-----------------------

>  1 file changed, 237 insertions(+), 242 deletions(-)

>

> diff --git a/target/cris/mmu.c b/target/cris/mmu.c

> index b8db908823..9cb73bbfec 100644

> --- a/target/cris/mmu.c

> +++ b/target/cris/mmu.c

> @@ -33,96 +33,99 @@

>

>  void cris_mmu_init(CPUCRISState *env)

>  {

> -       env->mmu_rand_lfsr = 0xcccc;

> +    env->mmu_rand_lfsr = 0xcccc;

>  }

>

>  #define SR_POLYNOM 0x8805

>  static inline unsigned int compute_polynom(unsigned int sr)

>  {

> -       unsigned int i;

> -       unsigned int f;

> +    unsigned int i;

> +    unsigned int f;

>

> -       f = 0;

> -       for (i = 0; i < 16; i++)

> -               f += ((SR_POLYNOM >> i) & 1) & ((sr >> i) & 1);

> +    f = 0;

> +    for (i = 0; i < 16; i++) {

> +        f += ((SR_POLYNOM >> i) & 1) & ((sr >> i) & 1);

> +    }

>

> -       return f;

> +    return f;

>  }

>

>  static void cris_mmu_update_rand_lfsr(CPUCRISState *env)

>  {

> -       unsigned int f;

> +    unsigned int f;

>

> -       /* Update lfsr at every fault.  */

> -       f = compute_polynom(env->mmu_rand_lfsr);

> -       env->mmu_rand_lfsr >>= 1;

> -       env->mmu_rand_lfsr |= (f << 15);

> -       env->mmu_rand_lfsr &= 0xffff;

> +    /* Update lfsr at every fault.  */

> +    f = compute_polynom(env->mmu_rand_lfsr);

> +    env->mmu_rand_lfsr >>= 1;

> +    env->mmu_rand_lfsr |= (f << 15);

> +    env->mmu_rand_lfsr &= 0xffff;

>  }

>

>  static inline int cris_mmu_enabled(uint32_t rw_gc_cfg)

>  {

> -       return (rw_gc_cfg & 12) != 0;

> +    return (rw_gc_cfg & 12) != 0;

>  }

>

>  static inline int cris_mmu_segmented_addr(int seg, uint32_t rw_mm_cfg)

>  {

> -       return (1 << seg) & rw_mm_cfg;

> +    return (1 << seg) & rw_mm_cfg;

>  }

>

>  static uint32_t cris_mmu_translate_seg(CPUCRISState *env, int seg)

>  {

> -       uint32_t base;

> -       int i;

> +    uint32_t base;

> +    int i;

>

> -       if (seg < 8)

> -               base = env->sregs[SFR_RW_MM_KBASE_LO];

> -       else

> -               base = env->sregs[SFR_RW_MM_KBASE_HI];

> +    if (seg < 8) {

> +        base = env->sregs[SFR_RW_MM_KBASE_LO];

> +    } else {

> +        base = env->sregs[SFR_RW_MM_KBASE_HI];

> +    }

>

> -       i = seg & 7;

> -       base >>= i * 4;

> -       base &= 15;

> +    i = seg & 7;

> +    base >>= i * 4;

> +    base &= 15;

>

> -       base <<= 28;

> -       return base;

> +    base <<= 28;

> +    return base;

>  }

> -/* Used by the tlb decoder.  */

> -#define EXTRACT_FIELD(src, start, end) \

> -           (((src) >> start) & ((1 << (end - start + 1)) - 1))

>

> -static inline void set_field(uint32_t *dst, unsigned int val,

> +/* Used by the tlb decoder.  */

> +#define EXTRACT_FIELD(src, start, end)                  \

> +    (((src) >> start) & ((1 << (end - start + 1)) - 1))

> +

> +static inline void set_field(uint32_t *dst, unsigned int val,

>                              unsigned int offset, unsigned int width)

>  {

> -       uint32_t mask;

> +    uint32_t mask;

>

> -       mask = (1 << width) - 1;

> -       mask <<= offset;

> -       val <<= offset;

> +    mask = (1 << width) - 1;

> +    mask <<= offset;

> +    val <<= offset;

>

> -       val &= mask;

> -       *dst &= ~(mask);

> -       *dst |= val;

> +    val &= mask;

> +    *dst &= ~(mask);

> +    *dst |= val;

>  }

>

>  #ifdef DEBUG

>  static void dump_tlb(CPUCRISState *env, int mmu)

>  {

> -       int set;

> -       int idx;

> -       uint32_t hi, lo, tlb_vpn, tlb_pfn;

> +    int set;

> +    int idx;

> +    uint32_t hi, lo, tlb_vpn, tlb_pfn;

>

> -       for (set = 0; set < 4; set++) {

> -               for (idx = 0; idx < 16; idx++) {

> -                       lo = env->tlbsets[mmu][set][idx].lo;

> -                       hi = env->tlbsets[mmu][set][idx].hi;

> -                       tlb_vpn = EXTRACT_FIELD(hi, 13, 31);

> -                       tlb_pfn = EXTRACT_FIELD(lo, 13, 31);

> +    for (set = 0; set < 4; set++) {

> +        for (idx = 0; idx < 16; idx++) {

> +            lo = env->tlbsets[mmu][set][idx].lo;

> +            hi = env->tlbsets[mmu][set][idx].hi;

> +            tlb_vpn = EXTRACT_FIELD(hi, 13, 31);

> +            tlb_pfn = EXTRACT_FIELD(lo, 13, 31);

>

> -                       printf ("TLB: [%d][%d] hi=%x lo=%x v=%x p=%x\n",

> -                                       set, idx, hi, lo, tlb_vpn, tlb_pfn);

> -               }

> -       }

> +            printf("TLB: [%d][%d] hi=%x lo=%x v=%x p=%x\n",

> +                   set, idx, hi, lo, tlb_vpn, tlb_pfn);

> +        }

> +    }

>  }

>  #endif

>

> @@ -131,232 +134,224 @@ static int cris_mmu_translate_page(struct cris_mmu_result *res,

>                                    CPUCRISState *env, uint32_t vaddr,

>                                    int rw, int usermode, int debug)

>  {

> -       unsigned int vpage;

> -       unsigned int idx;

> -       uint32_t pid, lo, hi;

> -       uint32_t tlb_vpn, tlb_pfn = 0;

> -       int tlb_pid, tlb_g, tlb_v, tlb_k, tlb_w, tlb_x;

> -       int cfg_v, cfg_k, cfg_w, cfg_x;

> -       int set, match = 0;

> -       uint32_t r_cause;

> -       uint32_t r_cfg;

> -       int rwcause;

> -       int mmu = 1; /* Data mmu is default.  */

> -       int vect_base;

> +    unsigned int vpage;

> +    unsigned int idx;

> +    uint32_t pid, lo, hi;

> +    uint32_t tlb_vpn, tlb_pfn = 0;

> +    int tlb_pid, tlb_g, tlb_v, tlb_k, tlb_w, tlb_x;

> +    int cfg_v, cfg_k, cfg_w, cfg_x;

> +    int set, match = 0;

> +    uint32_t r_cause;

> +    uint32_t r_cfg;

> +    int rwcause;

> +    int mmu = 1; /* Data mmu is default.  */

> +    int vect_base;

>

> -       r_cause = env->sregs[SFR_R_MM_CAUSE];

> -       r_cfg = env->sregs[SFR_RW_MM_CFG];

> -       pid = env->pregs[PR_PID] & 0xff;

> +    r_cause = env->sregs[SFR_R_MM_CAUSE];

> +    r_cfg = env->sregs[SFR_RW_MM_CFG];

> +    pid = env->pregs[PR_PID] & 0xff;

>

> -       switch (rw) {

> -               case 2: rwcause = CRIS_MMU_ERR_EXEC; mmu = 0; break;

> -               case 1: rwcause = CRIS_MMU_ERR_WRITE; break;

> -               default:

> -               case 0: rwcause = CRIS_MMU_ERR_READ; break;

> -       }

> +    switch (rw) {

> +    case 2:

> +        rwcause = CRIS_MMU_ERR_EXEC;

> +        mmu = 0;

> +        break;

> +    case 1:

> +        rwcause = CRIS_MMU_ERR_WRITE;

> +        break;

> +    default:

> +    case 0:

> +        rwcause = CRIS_MMU_ERR_READ;

> +        break;

> +    }

>

> -       /* I exception vectors 4 - 7, D 8 - 11.  */

> -       vect_base = (mmu + 1) * 4;

> +    /* I exception vectors 4 - 7, D 8 - 11.  */

> +    vect_base = (mmu + 1) * 4;

>

> -       vpage = vaddr >> 13;

> +    vpage = vaddr >> 13;

>

> -       /* We know the index which to check on each set.

> -          Scan both I and D.  */

> -#if 0

> -       for (set = 0; set < 4; set++) {

> -               for (idx = 0; idx < 16; idx++) {

> -                       lo = env->tlbsets[mmu][set][idx].lo;

> -                       hi = env->tlbsets[mmu][set][idx].hi;

> -                       tlb_vpn = EXTRACT_FIELD(hi, 13, 31);

> -                       tlb_pfn = EXTRACT_FIELD(lo, 13, 31);

> +    /*

> +     * We know the index which to check on each set.

> +     * Scan both I and D.

> +     */

> +    idx = vpage & 15;

> +    for (set = 0; set < 4; set++) {

> +        lo = env->tlbsets[mmu][set][idx].lo;

> +        hi = env->tlbsets[mmu][set][idx].hi;

>

> -                       printf ("TLB: [%d][%d] hi=%x lo=%x v=%x p=%x\n",

> -                                       set, idx, hi, lo, tlb_vpn, tlb_pfn);

> -               }

> -       }

> -#endif

> +        tlb_vpn = hi >> 13;

> +        tlb_pid = EXTRACT_FIELD(hi, 0, 7);

> +        tlb_g  = EXTRACT_FIELD(lo, 4, 4);

>

> -       idx = vpage & 15;

> -       for (set = 0; set < 4; set++)

> -       {

> -               lo = env->tlbsets[mmu][set][idx].lo;

> -               hi = env->tlbsets[mmu][set][idx].hi;

> +        D_LOG("TLB[%d][%d][%d] v=%x vpage=%x lo=%x hi=%x\n",

> +              mmu, set, idx, tlb_vpn, vpage, lo, hi);

> +        if ((tlb_g || (tlb_pid == pid)) && tlb_vpn == vpage) {

> +            match = 1;

> +            break;

> +        }

> +    }

>

> -               tlb_vpn = hi >> 13;

> -               tlb_pid = EXTRACT_FIELD(hi, 0, 7);

> -               tlb_g  = EXTRACT_FIELD(lo, 4, 4);

> +    res->bf_vec = vect_base;

> +    if (match) {

> +        cfg_w  = EXTRACT_FIELD(r_cfg, 19, 19);

> +        cfg_k  = EXTRACT_FIELD(r_cfg, 18, 18);

> +        cfg_x  = EXTRACT_FIELD(r_cfg, 17, 17);

> +        cfg_v  = EXTRACT_FIELD(r_cfg, 16, 16);

>

> -               D_LOG("TLB[%d][%d][%d] v=%x vpage=%x lo=%x hi=%x\n",

> -                        mmu, set, idx, tlb_vpn, vpage, lo, hi);

> -               if ((tlb_g || (tlb_pid == pid))

> -                   && tlb_vpn == vpage) {

> -                       match = 1;

> -                       break;

> -               }

> -       }

> +        tlb_pfn = EXTRACT_FIELD(lo, 13, 31);

> +        tlb_v = EXTRACT_FIELD(lo, 3, 3);

> +        tlb_k = EXTRACT_FIELD(lo, 2, 2);

> +        tlb_w = EXTRACT_FIELD(lo, 1, 1);

> +        tlb_x = EXTRACT_FIELD(lo, 0, 0);

>

> -       res->bf_vec = vect_base;

> -       if (match) {

> -               cfg_w  = EXTRACT_FIELD(r_cfg, 19, 19);

> -               cfg_k  = EXTRACT_FIELD(r_cfg, 18, 18);

> -               cfg_x  = EXTRACT_FIELD(r_cfg, 17, 17);

> -               cfg_v  = EXTRACT_FIELD(r_cfg, 16, 16);

> +        /*

> +         * set_exception_vector(0x04, i_mmu_refill);

> +         * set_exception_vector(0x05, i_mmu_invalid);

> +         * set_exception_vector(0x06, i_mmu_access);

> +         * set_exception_vector(0x07, i_mmu_execute);

> +         * set_exception_vector(0x08, d_mmu_refill);

> +         * set_exception_vector(0x09, d_mmu_invalid);

> +         * set_exception_vector(0x0a, d_mmu_access);

> +         * set_exception_vector(0x0b, d_mmu_write);

> +         */

> +        if (cfg_k && tlb_k && usermode) {

> +            D(printf("tlb: kernel protected %x lo=%x pc=%x\n",

> +                     vaddr, lo, env->pc));

> +            match = 0;

> +            res->bf_vec = vect_base + 2;

> +        } else if (rw == 1 && cfg_w && !tlb_w) {

> +            D(printf("tlb: write protected %x lo=%x pc=%x\n",

> +                     vaddr, lo, env->pc));

> +            match = 0;

> +            /* write accesses never go through the I mmu.  */

> +            res->bf_vec = vect_base + 3;

> +        } else if (rw == 2 && cfg_x && !tlb_x) {

> +            D(printf("tlb: exec protected %x lo=%x pc=%x\n",

> +                     vaddr, lo, env->pc));

> +            match = 0;

> +            res->bf_vec = vect_base + 3;

> +        } else if (cfg_v && !tlb_v) {

> +            D(printf("tlb: invalid %x\n", vaddr));

> +            match = 0;

> +            res->bf_vec = vect_base + 1;

> +        }

>

> -               tlb_pfn = EXTRACT_FIELD(lo, 13, 31);

> -               tlb_v = EXTRACT_FIELD(lo, 3, 3);

> -               tlb_k = EXTRACT_FIELD(lo, 2, 2);

> -               tlb_w = EXTRACT_FIELD(lo, 1, 1);

> -               tlb_x = EXTRACT_FIELD(lo, 0, 0);

> +        res->prot = 0;

> +        if (match) {

> +            res->prot |= PAGE_READ;

> +            if (tlb_w) {

> +                res->prot |= PAGE_WRITE;

> +            }

> +            if (mmu == 0 && (cfg_x || tlb_x)) {

> +                res->prot |= PAGE_EXEC;

> +            }

> +        } else {

> +            D(dump_tlb(env, mmu));

> +        }

> +    } else {

> +        /* If refill, provide a randomized set.  */

> +        set = env->mmu_rand_lfsr & 3;

> +    }

>

> -               /*

> -               set_exception_vector(0x04, i_mmu_refill);

> -               set_exception_vector(0x05, i_mmu_invalid);

> -               set_exception_vector(0x06, i_mmu_access);

> -               set_exception_vector(0x07, i_mmu_execute);

> -               set_exception_vector(0x08, d_mmu_refill);

> -               set_exception_vector(0x09, d_mmu_invalid);

> -               set_exception_vector(0x0a, d_mmu_access);

> -               set_exception_vector(0x0b, d_mmu_write);

> -               */

> -               if (cfg_k && tlb_k && usermode) {

> -                       D(printf ("tlb: kernel protected %x lo=%x pc=%x\n",

> -                                 vaddr, lo, env->pc));

> -                       match = 0;

> -                       res->bf_vec = vect_base + 2;

> -               } else if (rw == 1 && cfg_w && !tlb_w) {

> -                       D(printf ("tlb: write protected %x lo=%x pc=%x\n",

> -                                 vaddr, lo, env->pc));

> -                       match = 0;

> -                       /* write accesses never go through the I mmu.  */

> -                       res->bf_vec = vect_base + 3;

> -               } else if (rw == 2 && cfg_x && !tlb_x) {

> -                       D(printf ("tlb: exec protected %x lo=%x pc=%x\n",

> -                                vaddr, lo, env->pc));

> -                       match = 0;

> -                       res->bf_vec = vect_base + 3;

> -               } else if (cfg_v && !tlb_v) {

> -                       D(printf ("tlb: invalid %x\n", vaddr));

> -                       match = 0;

> -                       res->bf_vec = vect_base + 1;

> -               }

> +    if (!match && !debug) {

> +        cris_mmu_update_rand_lfsr(env);

>

> -               res->prot = 0;

> -               if (match) {

> -                       res->prot |= PAGE_READ;

> -                       if (tlb_w)

> -                               res->prot |= PAGE_WRITE;

> -                       if (mmu == 0 && (cfg_x || tlb_x))

> -                               res->prot |= PAGE_EXEC;

> -               }

> -               else

> -                       D(dump_tlb(env, mmu));

> -       } else {

> -               /* If refill, provide a randomized set.  */

> -               set = env->mmu_rand_lfsr & 3;

> -       }

> +        /* Compute index.  */

> +        idx = vpage & 15;

>

> -       if (!match && !debug) {

> -               cris_mmu_update_rand_lfsr(env);

> +        /* Update RW_MM_TLB_SEL.  */

> +        env->sregs[SFR_RW_MM_TLB_SEL] = 0;

> +        set_field(&env->sregs[SFR_RW_MM_TLB_SEL], idx, 0, 4);

> +        set_field(&env->sregs[SFR_RW_MM_TLB_SEL], set, 4, 2);

>

> -               /* Compute index.  */

> -               idx = vpage & 15;

> +        /* Update RW_MM_CAUSE.  */

> +        set_field(&r_cause, rwcause, 8, 2);

> +        set_field(&r_cause, vpage, 13, 19);

> +        set_field(&r_cause, pid, 0, 8);

> +        env->sregs[SFR_R_MM_CAUSE] = r_cause;

> +        D(printf("refill vaddr=%x pc=%x\n", vaddr, env->pc));

> +    }

>

> -               /* Update RW_MM_TLB_SEL.  */

> -               env->sregs[SFR_RW_MM_TLB_SEL] = 0;

> -               set_field(&env->sregs[SFR_RW_MM_TLB_SEL], idx, 0, 4);

> -               set_field(&env->sregs[SFR_RW_MM_TLB_SEL], set, 4, 2);

> +    D(printf("%s rw=%d mtch=%d pc=%x va=%x vpn=%x tlbvpn=%x pfn=%x pid=%x"

> +             " %x cause=%x sel=%x sp=%x %x %x\n",

> +             __func__, rw, match, env->pc,

> +             vaddr, vpage,

> +             tlb_vpn, tlb_pfn, tlb_pid,

> +             pid,

> +             r_cause,

> +             env->sregs[SFR_RW_MM_TLB_SEL],

> +             env->regs[R_SP], env->pregs[PR_USP], env->ksp));

>

> -               /* Update RW_MM_CAUSE.  */

> -               set_field(&r_cause, rwcause, 8, 2);

> -               set_field(&r_cause, vpage, 13, 19);

> -               set_field(&r_cause, pid, 0, 8);

> -               env->sregs[SFR_R_MM_CAUSE] = r_cause;

> -               D(printf("refill vaddr=%x pc=%x\n", vaddr, env->pc));

> -       }

> -

> -       D(printf ("%s rw=%d mtch=%d pc=%x va=%x vpn=%x tlbvpn=%x pfn=%x pid=%x"

> -                 " %x cause=%x sel=%x sp=%x %x %x\n",

> -                 __func__, rw, match, env->pc,

> -                 vaddr, vpage,

> -                 tlb_vpn, tlb_pfn, tlb_pid,

> -                 pid,

> -                 r_cause,

> -                 env->sregs[SFR_RW_MM_TLB_SEL],

> -                 env->regs[R_SP], env->pregs[PR_USP], env->ksp));

> -

> -       res->phy = tlb_pfn << TARGET_PAGE_BITS;

> -       return !match;

> +    res->phy = tlb_pfn << TARGET_PAGE_BITS;

> +    return !match;

>  }

>

>  void cris_mmu_flush_pid(CPUCRISState *env, uint32_t pid)

>  {

>      CRISCPU *cpu = cris_env_get_cpu(env);

> -       target_ulong vaddr;

> -       unsigned int idx;

> -       uint32_t lo, hi;

> -       uint32_t tlb_vpn;

> -       int tlb_pid, tlb_g, tlb_v;

> -       unsigned int set;

> -       unsigned int mmu;

> +    target_ulong vaddr;

> +    unsigned int idx;

> +    uint32_t lo, hi;

> +    uint32_t tlb_vpn;

> +    int tlb_pid, tlb_g, tlb_v;

> +    unsigned int set;

> +    unsigned int mmu;

>

> -       pid &= 0xff;

> -       for (mmu = 0; mmu < 2; mmu++) {

> -               for (set = 0; set < 4; set++)

> -               {

> -                       for (idx = 0; idx < 16; idx++) {

> -                               lo = env->tlbsets[mmu][set][idx].lo;

> -                               hi = env->tlbsets[mmu][set][idx].hi;

> -

> -                               tlb_vpn = EXTRACT_FIELD(hi, 13, 31);

> -                               tlb_pid = EXTRACT_FIELD(hi, 0, 7);

> -                               tlb_g  = EXTRACT_FIELD(lo, 4, 4);

> -                               tlb_v = EXTRACT_FIELD(lo, 3, 3);

> +    pid &= 0xff;

> +    for (mmu = 0; mmu < 2; mmu++) {

> +        for (set = 0; set < 4; set++) {

> +            for (idx = 0; idx < 16; idx++) {

> +                lo = env->tlbsets[mmu][set][idx].lo;

> +                hi = env->tlbsets[mmu][set][idx].hi;

>

> -                               if (tlb_v && !tlb_g && (tlb_pid == pid)) {

> -                                       vaddr = tlb_vpn << TARGET_PAGE_BITS;

> -                                       D_LOG("flush pid=%x vaddr=%x\n",

> -                                                 pid, vaddr);

> +                tlb_vpn = EXTRACT_FIELD(hi, 13, 31);

> +                tlb_pid = EXTRACT_FIELD(hi, 0, 7);

> +                tlb_g  = EXTRACT_FIELD(lo, 4, 4);

> +                tlb_v = EXTRACT_FIELD(lo, 3, 3);

> +

> +                if (tlb_v && !tlb_g && (tlb_pid == pid)) {

> +                    vaddr = tlb_vpn << TARGET_PAGE_BITS;

> +                    D_LOG("flush pid=%x vaddr=%x\n", pid, vaddr);

>                      tlb_flush_page(CPU(cpu), vaddr);

> -                               }

> -                       }

> -               }

> -       }

> +                }

> +            }

> +        }

> +    }

>  }

>

>  int cris_mmu_translate(struct cris_mmu_result *res,

>                        CPUCRISState *env, uint32_t vaddr,

>                        int rw, int mmu_idx, int debug)

>  {

> -       int seg;

> -       int miss = 0;

> -       int is_user = mmu_idx == MMU_USER_IDX;

> -       uint32_t old_srs;

> +    int seg;

> +    int miss = 0;

> +    int is_user = mmu_idx == MMU_USER_IDX;

> +    uint32_t old_srs;

>

> -       old_srs= env->pregs[PR_SRS];

> +    old_srs = env->pregs[PR_SRS];

>

> -       /* rw == 2 means exec, map the access to the insn mmu.  */

> -       env->pregs[PR_SRS] = rw == 2 ? 1 : 2;

> +    /* rw == 2 means exec, map the access to the insn mmu.  */

> +    env->pregs[PR_SRS] = rw == 2 ? 1 : 2;

>

> -       if (!cris_mmu_enabled(env->sregs[SFR_RW_GC_CFG])) {

> -               res->phy = vaddr;

> -               res->prot = PAGE_BITS;

> -               goto done;

> -       }

> +    if (!cris_mmu_enabled(env->sregs[SFR_RW_GC_CFG])) {

> +        res->phy = vaddr;

> +        res->prot = PAGE_BITS;

> +        goto done;

> +    }

>

> -       seg = vaddr >> 28;

> -       if (!is_user && cris_mmu_segmented_addr(seg, env->sregs[SFR_RW_MM_CFG]))

> -       {

> -               uint32_t base;

> +    seg = vaddr >> 28;

> +    if (!is_user && cris_mmu_segmented_addr(seg, env->sregs[SFR_RW_MM_CFG])) {

> +        uint32_t base;

>

> -               miss = 0;

> -               base = cris_mmu_translate_seg(env, seg);

> -                res->phy = base | (0x0fffffff & vaddr);

> -               res->prot = PAGE_BITS;

> -       } else {

> -               miss = cris_mmu_translate_page(res, env, vaddr, rw,

> -                                              is_user, debug);

> -       }

> -  done:

> -       env->pregs[PR_SRS] = old_srs;

> -       return miss;

> +        miss = 0;

> +        base = cris_mmu_translate_seg(env, seg);

> +        res->phy = base | (0x0fffffff & vaddr);

> +        res->prot = PAGE_BITS;

> +    } else {

> +        miss = cris_mmu_translate_page(res, env, vaddr, rw,

> +                                       is_user, debug);

> +    }

> + done:

> +    env->pregs[PR_SRS] = old_srs;

> +    return miss;

>  }

> --

> 2.17.1

>

>
diff mbox series

Patch

diff --git a/target/cris/mmu.c b/target/cris/mmu.c
index b8db908823..9cb73bbfec 100644
--- a/target/cris/mmu.c
+++ b/target/cris/mmu.c
@@ -33,96 +33,99 @@ 
 
 void cris_mmu_init(CPUCRISState *env)
 {
-	env->mmu_rand_lfsr = 0xcccc;
+    env->mmu_rand_lfsr = 0xcccc;
 }
 
 #define SR_POLYNOM 0x8805
 static inline unsigned int compute_polynom(unsigned int sr)
 {
-	unsigned int i;
-	unsigned int f;
+    unsigned int i;
+    unsigned int f;
 
-	f = 0;
-	for (i = 0; i < 16; i++)
-		f += ((SR_POLYNOM >> i) & 1) & ((sr >> i) & 1);
+    f = 0;
+    for (i = 0; i < 16; i++) {
+        f += ((SR_POLYNOM >> i) & 1) & ((sr >> i) & 1);
+    }
 
-	return f;
+    return f;
 }
 
 static void cris_mmu_update_rand_lfsr(CPUCRISState *env)
 {
-	unsigned int f;
+    unsigned int f;
 
-	/* Update lfsr at every fault.  */
-	f = compute_polynom(env->mmu_rand_lfsr);
-	env->mmu_rand_lfsr >>= 1;
-	env->mmu_rand_lfsr |= (f << 15);
-	env->mmu_rand_lfsr &= 0xffff;
+    /* Update lfsr at every fault.  */
+    f = compute_polynom(env->mmu_rand_lfsr);
+    env->mmu_rand_lfsr >>= 1;
+    env->mmu_rand_lfsr |= (f << 15);
+    env->mmu_rand_lfsr &= 0xffff;
 }
 
 static inline int cris_mmu_enabled(uint32_t rw_gc_cfg)
 {
-	return (rw_gc_cfg & 12) != 0;
+    return (rw_gc_cfg & 12) != 0;
 }
 
 static inline int cris_mmu_segmented_addr(int seg, uint32_t rw_mm_cfg)
 {
-	return (1 << seg) & rw_mm_cfg;
+    return (1 << seg) & rw_mm_cfg;
 }
 
 static uint32_t cris_mmu_translate_seg(CPUCRISState *env, int seg)
 {
-	uint32_t base;
-	int i;
+    uint32_t base;
+    int i;
 
-	if (seg < 8)
-		base = env->sregs[SFR_RW_MM_KBASE_LO];
-	else
-		base = env->sregs[SFR_RW_MM_KBASE_HI];
+    if (seg < 8) {
+        base = env->sregs[SFR_RW_MM_KBASE_LO];
+    } else {
+        base = env->sregs[SFR_RW_MM_KBASE_HI];
+    }
 
-	i = seg & 7;
-	base >>= i * 4;
-	base &= 15;
+    i = seg & 7;
+    base >>= i * 4;
+    base &= 15;
 
-	base <<= 28;
-	return base;
+    base <<= 28;
+    return base;
 }
-/* Used by the tlb decoder.  */
-#define EXTRACT_FIELD(src, start, end) \
-	    (((src) >> start) & ((1 << (end - start + 1)) - 1))
 
-static inline void set_field(uint32_t *dst, unsigned int val, 
+/* Used by the tlb decoder.  */
+#define EXTRACT_FIELD(src, start, end)                  \
+    (((src) >> start) & ((1 << (end - start + 1)) - 1))
+
+static inline void set_field(uint32_t *dst, unsigned int val,
 			     unsigned int offset, unsigned int width)
 {
-	uint32_t mask;
+    uint32_t mask;
 
-	mask = (1 << width) - 1;
-	mask <<= offset;
-	val <<= offset;
+    mask = (1 << width) - 1;
+    mask <<= offset;
+    val <<= offset;
 
-	val &= mask;
-	*dst &= ~(mask);
-	*dst |= val;
+    val &= mask;
+    *dst &= ~(mask);
+    *dst |= val;
 }
 
 #ifdef DEBUG
 static void dump_tlb(CPUCRISState *env, int mmu)
 {
-	int set;
-	int idx;
-	uint32_t hi, lo, tlb_vpn, tlb_pfn;
+    int set;
+    int idx;
+    uint32_t hi, lo, tlb_vpn, tlb_pfn;
 
-	for (set = 0; set < 4; set++) {
-		for (idx = 0; idx < 16; idx++) {
-			lo = env->tlbsets[mmu][set][idx].lo;
-			hi = env->tlbsets[mmu][set][idx].hi;
-			tlb_vpn = EXTRACT_FIELD(hi, 13, 31);
-			tlb_pfn = EXTRACT_FIELD(lo, 13, 31);
+    for (set = 0; set < 4; set++) {
+        for (idx = 0; idx < 16; idx++) {
+            lo = env->tlbsets[mmu][set][idx].lo;
+            hi = env->tlbsets[mmu][set][idx].hi;
+            tlb_vpn = EXTRACT_FIELD(hi, 13, 31);
+            tlb_pfn = EXTRACT_FIELD(lo, 13, 31);
 
-			printf ("TLB: [%d][%d] hi=%x lo=%x v=%x p=%x\n", 
-					set, idx, hi, lo, tlb_vpn, tlb_pfn);
-		}
-	}
+            printf("TLB: [%d][%d] hi=%x lo=%x v=%x p=%x\n",
+                   set, idx, hi, lo, tlb_vpn, tlb_pfn);
+        }
+    }
 }
 #endif
 
@@ -131,232 +134,224 @@  static int cris_mmu_translate_page(struct cris_mmu_result *res,
 				   CPUCRISState *env, uint32_t vaddr,
 				   int rw, int usermode, int debug)
 {
-	unsigned int vpage;
-	unsigned int idx;
-	uint32_t pid, lo, hi;
-	uint32_t tlb_vpn, tlb_pfn = 0;
-	int tlb_pid, tlb_g, tlb_v, tlb_k, tlb_w, tlb_x;
-	int cfg_v, cfg_k, cfg_w, cfg_x;	
-	int set, match = 0;
-	uint32_t r_cause;
-	uint32_t r_cfg;
-	int rwcause;
-	int mmu = 1; /* Data mmu is default.  */
-	int vect_base;
+    unsigned int vpage;
+    unsigned int idx;
+    uint32_t pid, lo, hi;
+    uint32_t tlb_vpn, tlb_pfn = 0;
+    int tlb_pid, tlb_g, tlb_v, tlb_k, tlb_w, tlb_x;
+    int cfg_v, cfg_k, cfg_w, cfg_x;
+    int set, match = 0;
+    uint32_t r_cause;
+    uint32_t r_cfg;
+    int rwcause;
+    int mmu = 1; /* Data mmu is default.  */
+    int vect_base;
 
-	r_cause = env->sregs[SFR_R_MM_CAUSE];
-	r_cfg = env->sregs[SFR_RW_MM_CFG];
-	pid = env->pregs[PR_PID] & 0xff;
+    r_cause = env->sregs[SFR_R_MM_CAUSE];
+    r_cfg = env->sregs[SFR_RW_MM_CFG];
+    pid = env->pregs[PR_PID] & 0xff;
 
-	switch (rw) {
-		case 2: rwcause = CRIS_MMU_ERR_EXEC; mmu = 0; break;
-		case 1: rwcause = CRIS_MMU_ERR_WRITE; break;
-		default:
-		case 0: rwcause = CRIS_MMU_ERR_READ; break;
-	}
+    switch (rw) {
+    case 2:
+        rwcause = CRIS_MMU_ERR_EXEC;
+        mmu = 0;
+        break;
+    case 1:
+        rwcause = CRIS_MMU_ERR_WRITE;
+        break;
+    default:
+    case 0:
+        rwcause = CRIS_MMU_ERR_READ;
+        break;
+    }
 
-	/* I exception vectors 4 - 7, D 8 - 11.  */
-	vect_base = (mmu + 1) * 4;
+    /* I exception vectors 4 - 7, D 8 - 11.  */
+    vect_base = (mmu + 1) * 4;
 
-	vpage = vaddr >> 13;
+    vpage = vaddr >> 13;
 
-	/* We know the index which to check on each set.
-	   Scan both I and D.  */
-#if 0
-	for (set = 0; set < 4; set++) {
-		for (idx = 0; idx < 16; idx++) {
-			lo = env->tlbsets[mmu][set][idx].lo;
-			hi = env->tlbsets[mmu][set][idx].hi;
-			tlb_vpn = EXTRACT_FIELD(hi, 13, 31);
-			tlb_pfn = EXTRACT_FIELD(lo, 13, 31);
+    /*
+     * We know the index which to check on each set.
+     * Scan both I and D.
+     */
+    idx = vpage & 15;
+    for (set = 0; set < 4; set++) {
+        lo = env->tlbsets[mmu][set][idx].lo;
+        hi = env->tlbsets[mmu][set][idx].hi;
 
-			printf ("TLB: [%d][%d] hi=%x lo=%x v=%x p=%x\n", 
-					set, idx, hi, lo, tlb_vpn, tlb_pfn);
-		}
-	}
-#endif
+        tlb_vpn = hi >> 13;
+        tlb_pid = EXTRACT_FIELD(hi, 0, 7);
+        tlb_g  = EXTRACT_FIELD(lo, 4, 4);
 
-	idx = vpage & 15;
-	for (set = 0; set < 4; set++)
-	{
-		lo = env->tlbsets[mmu][set][idx].lo;
-		hi = env->tlbsets[mmu][set][idx].hi;
+        D_LOG("TLB[%d][%d][%d] v=%x vpage=%x lo=%x hi=%x\n",
+              mmu, set, idx, tlb_vpn, vpage, lo, hi);
+        if ((tlb_g || (tlb_pid == pid)) && tlb_vpn == vpage) {
+            match = 1;
+            break;
+        }
+    }
 
-		tlb_vpn = hi >> 13;
-		tlb_pid = EXTRACT_FIELD(hi, 0, 7);
-		tlb_g  = EXTRACT_FIELD(lo, 4, 4);
+    res->bf_vec = vect_base;
+    if (match) {
+        cfg_w  = EXTRACT_FIELD(r_cfg, 19, 19);
+        cfg_k  = EXTRACT_FIELD(r_cfg, 18, 18);
+        cfg_x  = EXTRACT_FIELD(r_cfg, 17, 17);
+        cfg_v  = EXTRACT_FIELD(r_cfg, 16, 16);
 
-		D_LOG("TLB[%d][%d][%d] v=%x vpage=%x lo=%x hi=%x\n", 
-			 mmu, set, idx, tlb_vpn, vpage, lo, hi);
-		if ((tlb_g || (tlb_pid == pid))
-		    && tlb_vpn == vpage) {
-			match = 1;
-			break;
-		}
-	}
+        tlb_pfn = EXTRACT_FIELD(lo, 13, 31);
+        tlb_v = EXTRACT_FIELD(lo, 3, 3);
+        tlb_k = EXTRACT_FIELD(lo, 2, 2);
+        tlb_w = EXTRACT_FIELD(lo, 1, 1);
+        tlb_x = EXTRACT_FIELD(lo, 0, 0);
 
-	res->bf_vec = vect_base;
-	if (match) {
-		cfg_w  = EXTRACT_FIELD(r_cfg, 19, 19);
-		cfg_k  = EXTRACT_FIELD(r_cfg, 18, 18);
-		cfg_x  = EXTRACT_FIELD(r_cfg, 17, 17);
-		cfg_v  = EXTRACT_FIELD(r_cfg, 16, 16);
+        /*
+         * set_exception_vector(0x04, i_mmu_refill);
+         * set_exception_vector(0x05, i_mmu_invalid);
+         * set_exception_vector(0x06, i_mmu_access);
+         * set_exception_vector(0x07, i_mmu_execute);
+         * set_exception_vector(0x08, d_mmu_refill);
+         * set_exception_vector(0x09, d_mmu_invalid);
+         * set_exception_vector(0x0a, d_mmu_access);
+         * set_exception_vector(0x0b, d_mmu_write);
+         */
+        if (cfg_k && tlb_k && usermode) {
+            D(printf("tlb: kernel protected %x lo=%x pc=%x\n",
+                     vaddr, lo, env->pc));
+            match = 0;
+            res->bf_vec = vect_base + 2;
+        } else if (rw == 1 && cfg_w && !tlb_w) {
+            D(printf("tlb: write protected %x lo=%x pc=%x\n",
+                     vaddr, lo, env->pc));
+            match = 0;
+            /* write accesses never go through the I mmu.  */
+            res->bf_vec = vect_base + 3;
+        } else if (rw == 2 && cfg_x && !tlb_x) {
+            D(printf("tlb: exec protected %x lo=%x pc=%x\n",
+                     vaddr, lo, env->pc));
+            match = 0;
+            res->bf_vec = vect_base + 3;
+        } else if (cfg_v && !tlb_v) {
+            D(printf("tlb: invalid %x\n", vaddr));
+            match = 0;
+            res->bf_vec = vect_base + 1;
+        }
 
-		tlb_pfn = EXTRACT_FIELD(lo, 13, 31);
-		tlb_v = EXTRACT_FIELD(lo, 3, 3);
-		tlb_k = EXTRACT_FIELD(lo, 2, 2);
-		tlb_w = EXTRACT_FIELD(lo, 1, 1);
-		tlb_x = EXTRACT_FIELD(lo, 0, 0);
+        res->prot = 0;
+        if (match) {
+            res->prot |= PAGE_READ;
+            if (tlb_w) {
+                res->prot |= PAGE_WRITE;
+            }
+            if (mmu == 0 && (cfg_x || tlb_x)) {
+                res->prot |= PAGE_EXEC;
+            }
+        } else {
+            D(dump_tlb(env, mmu));
+        }
+    } else {
+        /* If refill, provide a randomized set.  */
+        set = env->mmu_rand_lfsr & 3;
+    }
 
-		/*
-		set_exception_vector(0x04, i_mmu_refill);
-		set_exception_vector(0x05, i_mmu_invalid);
-		set_exception_vector(0x06, i_mmu_access);
-		set_exception_vector(0x07, i_mmu_execute);
-		set_exception_vector(0x08, d_mmu_refill);
-		set_exception_vector(0x09, d_mmu_invalid);
-		set_exception_vector(0x0a, d_mmu_access);
-		set_exception_vector(0x0b, d_mmu_write);
-		*/
-		if (cfg_k && tlb_k && usermode) {
-			D(printf ("tlb: kernel protected %x lo=%x pc=%x\n", 
-				  vaddr, lo, env->pc));
-			match = 0;
-			res->bf_vec = vect_base + 2;
-		} else if (rw == 1 && cfg_w && !tlb_w) {
-			D(printf ("tlb: write protected %x lo=%x pc=%x\n", 
-				  vaddr, lo, env->pc));
-			match = 0;
-			/* write accesses never go through the I mmu.  */
-			res->bf_vec = vect_base + 3;
-		} else if (rw == 2 && cfg_x && !tlb_x) {
-			D(printf ("tlb: exec protected %x lo=%x pc=%x\n", 
-				 vaddr, lo, env->pc));
-			match = 0;
-			res->bf_vec = vect_base + 3;
-		} else if (cfg_v && !tlb_v) {
-			D(printf ("tlb: invalid %x\n", vaddr));
-			match = 0;
-			res->bf_vec = vect_base + 1;
-		}
+    if (!match && !debug) {
+        cris_mmu_update_rand_lfsr(env);
 
-		res->prot = 0;
-		if (match) {
-			res->prot |= PAGE_READ;
-			if (tlb_w)
-				res->prot |= PAGE_WRITE;
-			if (mmu == 0 && (cfg_x || tlb_x))
-				res->prot |= PAGE_EXEC;
-		}
-		else
-			D(dump_tlb(env, mmu));
-	} else {
-		/* If refill, provide a randomized set.  */
-		set = env->mmu_rand_lfsr & 3;
-	}
+        /* Compute index.  */
+        idx = vpage & 15;
 
-	if (!match && !debug) {
-		cris_mmu_update_rand_lfsr(env);
+        /* Update RW_MM_TLB_SEL.  */
+        env->sregs[SFR_RW_MM_TLB_SEL] = 0;
+        set_field(&env->sregs[SFR_RW_MM_TLB_SEL], idx, 0, 4);
+        set_field(&env->sregs[SFR_RW_MM_TLB_SEL], set, 4, 2);
 
-		/* Compute index.  */
-		idx = vpage & 15;
+        /* Update RW_MM_CAUSE.  */
+        set_field(&r_cause, rwcause, 8, 2);
+        set_field(&r_cause, vpage, 13, 19);
+        set_field(&r_cause, pid, 0, 8);
+        env->sregs[SFR_R_MM_CAUSE] = r_cause;
+        D(printf("refill vaddr=%x pc=%x\n", vaddr, env->pc));
+    }
 
-		/* Update RW_MM_TLB_SEL.  */
-		env->sregs[SFR_RW_MM_TLB_SEL] = 0;
-		set_field(&env->sregs[SFR_RW_MM_TLB_SEL], idx, 0, 4);
-		set_field(&env->sregs[SFR_RW_MM_TLB_SEL], set, 4, 2);
+    D(printf("%s rw=%d mtch=%d pc=%x va=%x vpn=%x tlbvpn=%x pfn=%x pid=%x"
+             " %x cause=%x sel=%x sp=%x %x %x\n",
+             __func__, rw, match, env->pc,
+             vaddr, vpage,
+             tlb_vpn, tlb_pfn, tlb_pid,
+             pid,
+             r_cause,
+             env->sregs[SFR_RW_MM_TLB_SEL],
+             env->regs[R_SP], env->pregs[PR_USP], env->ksp));
 
-		/* Update RW_MM_CAUSE.  */
-		set_field(&r_cause, rwcause, 8, 2);
-		set_field(&r_cause, vpage, 13, 19);
-		set_field(&r_cause, pid, 0, 8);
-		env->sregs[SFR_R_MM_CAUSE] = r_cause;
-		D(printf("refill vaddr=%x pc=%x\n", vaddr, env->pc));
-	}
-
-	D(printf ("%s rw=%d mtch=%d pc=%x va=%x vpn=%x tlbvpn=%x pfn=%x pid=%x"
-		  " %x cause=%x sel=%x sp=%x %x %x\n",
-		  __func__, rw, match, env->pc,
-		  vaddr, vpage,
-		  tlb_vpn, tlb_pfn, tlb_pid, 
-		  pid,
-		  r_cause,
-		  env->sregs[SFR_RW_MM_TLB_SEL],
-		  env->regs[R_SP], env->pregs[PR_USP], env->ksp));
-
-	res->phy = tlb_pfn << TARGET_PAGE_BITS;
-	return !match;
+    res->phy = tlb_pfn << TARGET_PAGE_BITS;
+    return !match;
 }
 
 void cris_mmu_flush_pid(CPUCRISState *env, uint32_t pid)
 {
     CRISCPU *cpu = cris_env_get_cpu(env);
-	target_ulong vaddr;
-	unsigned int idx;
-	uint32_t lo, hi;
-	uint32_t tlb_vpn;
-	int tlb_pid, tlb_g, tlb_v;
-	unsigned int set;
-	unsigned int mmu;
+    target_ulong vaddr;
+    unsigned int idx;
+    uint32_t lo, hi;
+    uint32_t tlb_vpn;
+    int tlb_pid, tlb_g, tlb_v;
+    unsigned int set;
+    unsigned int mmu;
 
-	pid &= 0xff;
-	for (mmu = 0; mmu < 2; mmu++) {
-		for (set = 0; set < 4; set++)
-		{
-			for (idx = 0; idx < 16; idx++) {
-				lo = env->tlbsets[mmu][set][idx].lo;
-				hi = env->tlbsets[mmu][set][idx].hi;
-				
-				tlb_vpn = EXTRACT_FIELD(hi, 13, 31);
-				tlb_pid = EXTRACT_FIELD(hi, 0, 7);
-				tlb_g  = EXTRACT_FIELD(lo, 4, 4);
-				tlb_v = EXTRACT_FIELD(lo, 3, 3);
+    pid &= 0xff;
+    for (mmu = 0; mmu < 2; mmu++) {
+        for (set = 0; set < 4; set++) {
+            for (idx = 0; idx < 16; idx++) {
+                lo = env->tlbsets[mmu][set][idx].lo;
+                hi = env->tlbsets[mmu][set][idx].hi;
 
-				if (tlb_v && !tlb_g && (tlb_pid == pid)) {
-					vaddr = tlb_vpn << TARGET_PAGE_BITS;
-					D_LOG("flush pid=%x vaddr=%x\n", 
-						  pid, vaddr);
+                tlb_vpn = EXTRACT_FIELD(hi, 13, 31);
+                tlb_pid = EXTRACT_FIELD(hi, 0, 7);
+                tlb_g  = EXTRACT_FIELD(lo, 4, 4);
+                tlb_v = EXTRACT_FIELD(lo, 3, 3);
+
+                if (tlb_v && !tlb_g && (tlb_pid == pid)) {
+                    vaddr = tlb_vpn << TARGET_PAGE_BITS;
+                    D_LOG("flush pid=%x vaddr=%x\n", pid, vaddr);
                     tlb_flush_page(CPU(cpu), vaddr);
-				}
-			}
-		}
-	}
+                }
+            }
+        }
+    }
 }
 
 int cris_mmu_translate(struct cris_mmu_result *res,
 		       CPUCRISState *env, uint32_t vaddr,
 		       int rw, int mmu_idx, int debug)
 {
-	int seg;
-	int miss = 0;
-	int is_user = mmu_idx == MMU_USER_IDX;
-	uint32_t old_srs;
+    int seg;
+    int miss = 0;
+    int is_user = mmu_idx == MMU_USER_IDX;
+    uint32_t old_srs;
 
-	old_srs= env->pregs[PR_SRS];
+    old_srs = env->pregs[PR_SRS];
 
-	/* rw == 2 means exec, map the access to the insn mmu.  */
-	env->pregs[PR_SRS] = rw == 2 ? 1 : 2;
+    /* rw == 2 means exec, map the access to the insn mmu.  */
+    env->pregs[PR_SRS] = rw == 2 ? 1 : 2;
 
-	if (!cris_mmu_enabled(env->sregs[SFR_RW_GC_CFG])) {
-		res->phy = vaddr;
-		res->prot = PAGE_BITS;
-		goto done;
-	}
+    if (!cris_mmu_enabled(env->sregs[SFR_RW_GC_CFG])) {
+        res->phy = vaddr;
+        res->prot = PAGE_BITS;
+        goto done;
+    }
 
-	seg = vaddr >> 28;
-	if (!is_user && cris_mmu_segmented_addr(seg, env->sregs[SFR_RW_MM_CFG]))
-	{
-		uint32_t base;
+    seg = vaddr >> 28;
+    if (!is_user && cris_mmu_segmented_addr(seg, env->sregs[SFR_RW_MM_CFG])) {
+        uint32_t base;
 
-		miss = 0;
-		base = cris_mmu_translate_seg(env, seg);
-                res->phy = base | (0x0fffffff & vaddr);
-		res->prot = PAGE_BITS;
-	} else {
-		miss = cris_mmu_translate_page(res, env, vaddr, rw,
-					       is_user, debug);
-	}
-  done:
-	env->pregs[PR_SRS] = old_srs;
-	return miss;
+        miss = 0;
+        base = cris_mmu_translate_seg(env, seg);
+        res->phy = base | (0x0fffffff & vaddr);
+        res->prot = PAGE_BITS;
+    } else {
+        miss = cris_mmu_translate_page(res, env, vaddr, rw,
+                                       is_user, debug);
+    }
+ done:
+    env->pregs[PR_SRS] = old_srs;
+    return miss;
 }