diff options
author | jchandra <jchandra@FreeBSD.org> | 2010-07-12 07:42:42 +0000 |
---|---|---|
committer | jchandra <jchandra@FreeBSD.org> | 2010-07-12 07:42:42 +0000 |
commit | 36766638b52a58c48fe67d94f0f71749a704b3a9 (patch) | |
tree | 7faff131885ab9e969d3944aadeaf930753dc899 | |
parent | 4379fd4275011ffae23b10a7f5db8363eaa15d52 (diff) | |
download | FreeBSD-src-36766638b52a58c48fe67d94f0f71749a704b3a9.zip FreeBSD-src-36766638b52a58c48fe67d94f0f71749a704b3a9.tar.gz |
Merge jmallett@'s n64 work into HEAD
64 bit TLB definitions in pte.h
Reviewed by: imp
Obtained from: jmallett (http://svn.freebsd.org/base/user/jmallett/octeon)
-rw-r--r-- | sys/mips/include/pte.h | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/sys/mips/include/pte.h b/sys/mips/include/pte.h index a767b04..813d9f8 100644 --- a/sys/mips/include/pte.h +++ b/sys/mips/include/pte.h @@ -82,8 +82,24 @@ typedef pt_entry_t *pd_entry_t; * Note that in FreeBSD, we map 2 TLB pages is equal to 1 VM page. */ #define TLBHI_ASID_MASK (0xff) +#if defined(__mips_n64) +#define TLBHI_R_SHIFT 62 +#define TLBHI_R_USER (0x00UL << TLBHI_R_SHIFT) +#define TLBHI_R_SUPERVISOR (0x01UL << TLBHI_R_SHIFT) +#define TLBHI_R_KERNEL (0x03UL << TLBHI_R_SHIFT) +#define TLBHI_R_MASK (0x03UL << TLBHI_R_SHIFT) +#define TLBHI_VA_R(va) ((va) & TLBHI_R_MASK) +#define TLBHI_FILL_SHIFT 40 +#define TLBHI_VPN2_SHIFT (TLB_PAGE_SHIFT + 1) +#define TLBHI_VPN2_MASK (((~((1UL << TLBHI_VPN2_SHIFT) - 1)) << (63 - TLBHI_FILL_SHIFT)) >> (63 - TLBHI_FILL_SHIFT)) +#define TLBHI_VA_TO_VPN2(va) ((va) & TLBHI_VPN2_MASK) +#define TLBHI_ENTRY(va, asid) ((TLBHI_VA_R((va))) /* Region. */ | \ + (TLBHI_VA_TO_VPN2((va))) /* VPN2. */ | \ + ((asid) & TLBHI_ASID_MASK)) +#else #define TLBHI_PAGE_MASK (2 * PAGE_SIZE - 1) #define TLBHI_ENTRY(va, asid) (((va) & ~TLBHI_PAGE_MASK) | ((asid) & TLBHI_ASID_MASK)) +#endif /* * TLB flags managed in hardware: |