[PATCH -V3 11/11] arch/powerpc: Add 64TB support

Aneesh Kumar K.V aneesh.kumar at linux.vnet.ibm.com
Wed Jul 25 05:50:51 EST 2012


"Aneesh Kumar K.V" <aneesh.kumar at linux.vnet.ibm.com> writes:

......

>  /* Returns the segment size indicator for a user address */
> @@ -534,11 +544,17 @@ static inline int user_segment_size(unsigned long addr)
>  static inline unsigned long get_vsid(unsigned long context, unsigned long ea,
>  				     int ssize)
>  {
> -	if (ssize == MMU_SEGSIZE_256M)
> -		return vsid_scramble((context << USER_ESID_BITS)
> -				     | (ea >> SID_SHIFT), 256M);
> -	return vsid_scramble((context << USER_ESID_BITS_1T)
> -			     | (ea >> SID_SHIFT_1T), 1T);
> +	unsigned long proto_vsid;
> +	if (ssize == MMU_SEGSIZE_256M) {
> +		proto_vsid = ((context << USER_ESID_BITS) |(ea >> SID_SHIFT));
> +		/* truncate this to 37 bits */
> +		proto_vsid &= (1UL << (CONTEXT_BITS + USER_ESID_BITS)) - 1;
> +		return vsid_scramble(proto_vsid, 256M);
> +	}
> +	proto_vsid = ((context << USER_ESID_BITS_1T) | (ea >> SID_SHIFT_1T));
> +	/* truncate this to 25 bits */
> +	proto_vsid &= (1UL << (CONTEXT_BITS + USER_ESID_BITS_1T)) - 1;
> +	return vsid_scramble( proto_vsid, 1T);
>  }

I guess we can drop this hunk and related asm, because context is
guaranteed to be  <= CONTEXT_BITS (via MAX_CONTEXTS )

-aneesh



More information about the Linuxppc-dev mailing list