2007-06-13 08:52:54 +04:00
# ifndef _ASM_POWERPC_MMU_HASH32_H_
# define _ASM_POWERPC_MMU_HASH32_H_
/*
* 32 - bit hash table MMU support
*/
/*
* BATs
*/
/* Block size masks */
# define BL_128K 0x000
# define BL_256K 0x001
# define BL_512K 0x003
# define BL_1M 0x007
# define BL_2M 0x00F
# define BL_4M 0x01F
# define BL_8M 0x03F
# define BL_16M 0x07F
# define BL_32M 0x0FF
# define BL_64M 0x1FF
# define BL_128M 0x3FF
# define BL_256M 0x7FF
/* BAT Access Protection */
# define BPP_XX 0x00 /* No access */
# define BPP_RX 0x01 /* Read only */
# define BPP_RW 0x02 /* Read/write */
# ifndef __ASSEMBLY__
2007-06-13 08:52:56 +04:00
struct ppc_bat {
2007-06-13 08:52:54 +04:00
struct {
unsigned long bepi : 15 ; /* Effective page index (virtual address) */
unsigned long : 4 ; /* Unused */
unsigned long bl : 11 ; /* Block size mask */
unsigned long vs : 1 ; /* Supervisor valid */
unsigned long vp : 1 ; /* User valid */
} batu ; /* Upper register */
struct {
unsigned long brpn : 15 ; /* Real page index (physical address) */
unsigned long : 10 ; /* Unused */
unsigned long w : 1 ; /* Write-thru cache */
unsigned long i : 1 ; /* Cache inhibit */
unsigned long m : 1 ; /* Memory coherence */
unsigned long g : 1 ; /* Guarded (MBZ in IBAT) */
unsigned long : 1 ; /* Unused */
unsigned long pp : 2 ; /* Page access protections */
} batl ; /* Lower register */
2007-06-13 08:52:56 +04:00
} ;
2007-06-13 08:52:54 +04:00
# endif /* !__ASSEMBLY__ */
/*
* Hash table
*/
/* Values for PP (assumes Ks=0, Kp=1) */
# define PP_RWXX 0 /* Supervisor read/write, User none */
# define PP_RWRX 1 /* Supervisor read/write, User read */
# define PP_RWRW 2 /* Supervisor read/write, User read/write */
# define PP_RXRX 3 /* Supervisor read, User read */
# ifndef __ASSEMBLY__
/* Hardware Page Table Entry */
2007-06-13 08:52:56 +04:00
struct hash_pte {
2007-06-13 08:52:54 +04:00
unsigned long v : 1 ; /* Entry is valid */
unsigned long vsid : 24 ; /* Virtual segment identifier */
unsigned long h : 1 ; /* Hash algorithm indicator */
unsigned long api : 6 ; /* Abbreviated page index */
unsigned long rpn : 20 ; /* Real (physical) page number */
unsigned long : 3 ; /* Unused */
unsigned long r : 1 ; /* Referenced */
unsigned long c : 1 ; /* Changed */
unsigned long w : 1 ; /* Write-thru cache mode */
unsigned long i : 1 ; /* Cache inhibited */
unsigned long m : 1 ; /* Memory coherence */
unsigned long g : 1 ; /* Guarded */
unsigned long : 1 ; /* Unused */
unsigned long pp : 2 ; /* Page protection */
2007-06-13 08:52:56 +04:00
} ;
2007-06-13 08:52:54 +04:00
typedef struct {
unsigned long id ;
unsigned long vdso_base ;
} mm_context_t ;
typedef unsigned long phys_addr_t ;
# endif /* !__ASSEMBLY__ */
# endif /* _ASM_POWERPC_MMU_HASH32_H_ */