Subject: Re: [PATCH] Consolidate mm_context_t definition in mmu.h

From: Christoph Hellwig <[email-masked]>
Date: Wed, 11 Jul 2007 12:33:08 +0200

On Tue, Jul 10, 2007 at 10:01:49AM -0500, Josh Boyer wrote:
> +
> +#ifdef CONFIG_PPC64
> +typedef unsigned long mm_context_id_t;
> +
> +typedef struct {
> +	mm_context_id_t id;
> +	u16 user_psize;		/* page size index */
> +
> +#ifdef CONFIG_PPC_MM_SLICES
> +	u64 low_slices_psize;	/* SLB page size encodings */
> +	u64 high_slices_psize;  /* 4 bits per slice for now */
> +#else
> +	u16 sllp;		/* SLB page size encoding */
> +#endif
> +	unsigned long vdso_base;
> +} mm_context_t;
> +
> +#else /* !CONFIG_PPC64 */
> +
> +typedef struct {
> +	unsigned long id;
> +	unsigned long vdso_base;
> +} mm_context_t;

mm_context_id_t isn't actually used anywhere but in te mm_context_t
definition.  So if you kill it you have two common fields and a bunch
of additional ones for PPC64 leading to a defintion like:

typedef struct {
	unsigned long id;

#ifdef CONFIG_PPC64
	u16 user_psize;		/* page size index */

#ifdef CONFIG_PPC_MM_SLICES
	u64 low_slices_psize;	/* SLB page size encodings */
	u64 high_slices_psize;  /* 4 bits per slice for now */
#else
	u16 sllp;		/* SLB page size encoding */
#endif
#endif

	unsigned long vdso_base;
} mm_context_t;