diff options
author | grehan <grehan@FreeBSD.org> | 2005-11-11 12:03:28 +0000 |
---|---|---|
committer | grehan <grehan@FreeBSD.org> | 2005-11-11 12:03:28 +0000 |
commit | 24afcaae818a704f924f89cd18fcd660e2a72204 (patch) | |
tree | c0a823e47474a971f57104524e1c272ddc167f45 /sys/powerpc/include | |
parent | 679cff6ef7b052a28621079e0148a60ab7568357 (diff) | |
download | FreeBSD-src-24afcaae818a704f924f89cd18fcd660e2a72204.zip FreeBSD-src-24afcaae818a704f924f89cd18fcd660e2a72204.tar.gz |
Add definitions for 64-bit PTEs
Diffstat (limited to 'sys/powerpc/include')
-rw-r--r-- | sys/powerpc/include/pte.h | 57 |
1 files changed, 47 insertions, 10 deletions
diff --git a/sys/powerpc/include/pte.h b/sys/powerpc/include/pte.h index 3e9ac4f..391c82e 100644 --- a/sys/powerpc/include/pte.h +++ b/sys/powerpc/include/pte.h @@ -39,17 +39,31 @@ * Page Table Entries */ #ifndef LOCORE -#include <sys/queue.h> +/* 32-bit PTE */ struct pte { - u_int pte_hi; - u_int pte_lo; + u_int32_t pte_hi; + u_int32_t pte_lo; }; struct pteg { struct pte pt[8]; }; + +/* 64-bit (long) PTE */ +struct lpte { + u_int64_t pte_hi; + u_int64_t pte_lo; +}; + +struct lpteg { + struct lpte pt[8]; +}; + #endif /* LOCORE */ + +/* 32-bit PTE definitions */ + /* High word: */ #define PTE_VALID 0x80000000 #define PTE_VSID_SHFT 7 @@ -74,8 +88,38 @@ struct pteg { #define PTE_EXEC 0x00000200 /* pseudo bit in attrs; page is exec */ +/* 64-bit PTE definitions */ + +/* High quadword: */ +#define LPTE_VSID_SHIFT 12 +#define LPTE_API 0x0000000000000F80ULL +#define LPTE_BIG 0x0000000000000004ULL /* 4kb/16Mb page */ +#define LPTE_HID 0x0000000000000002ULL +#define LPTE_VALID 0x0000000000000001ULL + +/* Low quadword: */ +#define EXTEND_PTE(x) UINT64_C(x) /* make constants 64-bit */ +#define LPTE_RPGN 0xfffffffffffff000ULL +#define LPTE_REF EXTEND_PTE( PTE_REF ) +#define LPTE_CHG EXTEND_PTE( PTE_CHG ) +#define LPTE_WIMG EXTEND_PTE( PTE_WIMG ) +#define LPTE_W EXTEND_PTE( PTE_W ) +#define LPTE_I EXTEND_PTE( PTE_I ) +#define LPTE_M EXTEND_PTE( PTE_M ) +#define LPTE_G EXTEND_PTE( PTE_G ) +#define LPTE_NOEXEC 0x0000000000000004ULL +#define LPTE_PP EXTEND_PTE( PTE_PP ) + +#define LPTE_SO EXTEND_PTE( PTE_SO ) /* Super. Only */ +#define LPTE_SW EXTEND_PTE( PTE_SW ) /* Super. Write-Only */ +#define LPTE_BW EXTEND_PTE( PTE_BW ) /* Supervisor */ +#define LPTE_BR EXTEND_PTE( PTE_BR ) /* Both Read Only */ +#define LPTE_RW LPTE_BW +#define LPTE_RO LPTE_BR + #ifndef LOCORE typedef struct pte pte_t; +typedef struct lpte lpte_t; #endif /* LOCORE */ /* @@ -87,13 +131,6 @@ typedef struct pte pte_t; #define ADDR_API_SHFT 22 #define ADDR_POFF 0x00000fff -#ifndef LOCORE -#ifdef _KERNEL -extern pte_t *ptable; -extern int ptab_cnt; -#endif /* _KERNEL */ -#endif /* LOCORE */ - /* * Bits in DSISR: */ |