On 01/20/2012 10:15 PM, Alexander Graf wrote:
> +/* returns bitmap of supported page sizes for a given TLB */
> +static inline uint32_t booke206_tlbnps(CPUState *env, const int tlbn)
> +{
> +    bool mav2 = false;
> +    uint32_t ret = 0;
> +
> +    if (mav2) {
> +        ret = env->spr[SPR_BOOKE_TLB0PS + tlbn];
> +    } else {
> +        uint32_t tlbncfg = env->spr[SPR_BOOKE_TLB0CFG + tlbn];
> +        uint32_t min = (tlbncfg & TLBnCFG_MINSIZE) >> TLBnCFG_MINSIZE_SHIFT;
> +        uint32_t max = (tlbncfg & TLBnCFG_MAXSIZE) >> TLBnCFG_MAXSIZE_SHIFT;
> +        int i;
> +        for (i = min; i <= max; i++) {
> +            ret |= (1 << (i << 1));
> +        }
> +    }

For mav1 only the even sizes are supported.

-Scott


Reply via email to