diff options
-rw-r--r-- | sys/boot/efi/loader/main.c | 7 | ||||
-rw-r--r-- | sys/boot/ia64/efi/main.c | 7 | ||||
-rw-r--r-- | sys/ia64/ia64/pmap.c | 12 | ||||
-rw-r--r-- | sys/ia64/include/pte.h | 17 |
4 files changed, 20 insertions, 23 deletions
diff --git a/sys/boot/efi/loader/main.c b/sys/boot/efi/loader/main.c index 6491683..69b6387 100644 --- a/sys/boot/efi/loader/main.c +++ b/sys/boot/efi/loader/main.c @@ -388,7 +388,7 @@ print_trs(int type) int i, maxtr; struct { pt_entry_t pte; - struct ia64_itir itir; + uint64_t itir; uint64_t ifa; struct ia64_rr rr; } buf; @@ -445,7 +445,8 @@ print_trs(int type) buf.pte &= ~PTE_MA_MASK; sprintf(lbuf, "%03d %06x %013lx %013lx %4s %d %d %d %d %d " "%-3s %d %06x\n", i, buf.rr.rr_rid, buf.ifa >> 12, - (buf.pte & PTE_PPN_MASK) >> 12, psnames[buf.itir.ps], + (buf.pte & PTE_PPN_MASK) >> 12, + psnames[(buf.itir & ITIR_PS_MASK) >> 2], (buf.pte & PTE_ED) ? 1 : 0, (int)(buf.pte & PTE_AR_MASK) >> 9, (int)(buf.pte & PTE_PL_MASK) >> 7, @@ -453,7 +454,7 @@ print_trs(int type) (buf.pte & PTE_ACCESSED) ? 1 : 0, manames[(buf.pte & PTE_MA_MASK) >> 2], (buf.pte & PTE_PRESENT) ? 1 : 0, - buf.itir.key); + (int)((buf.itir & ITIR_KEY_MASK) >> 8)); pager_output(lbuf); } pager_close(); diff --git a/sys/boot/ia64/efi/main.c b/sys/boot/ia64/efi/main.c index 6491683..69b6387 100644 --- a/sys/boot/ia64/efi/main.c +++ b/sys/boot/ia64/efi/main.c @@ -388,7 +388,7 @@ print_trs(int type) int i, maxtr; struct { pt_entry_t pte; - struct ia64_itir itir; + uint64_t itir; uint64_t ifa; struct ia64_rr rr; } buf; @@ -445,7 +445,8 @@ print_trs(int type) buf.pte &= ~PTE_MA_MASK; sprintf(lbuf, "%03d %06x %013lx %013lx %4s %d %d %d %d %d " "%-3s %d %06x\n", i, buf.rr.rr_rid, buf.ifa >> 12, - (buf.pte & PTE_PPN_MASK) >> 12, psnames[buf.itir.ps], + (buf.pte & PTE_PPN_MASK) >> 12, + psnames[(buf.itir & ITIR_PS_MASK) >> 2], (buf.pte & PTE_ED) ? 1 : 0, (int)(buf.pte & PTE_AR_MASK) >> 9, (int)(buf.pte & PTE_PL_MASK) >> 7, @@ -453,7 +454,7 @@ print_trs(int type) (buf.pte & PTE_ACCESSED) ? 1 : 0, manames[(buf.pte & PTE_MA_MASK) >> 2], (buf.pte & PTE_PRESENT) ? 1 : 0, - buf.itir.key); + (int)((buf.itir & ITIR_KEY_MASK) >> 8)); pager_output(lbuf); } pager_close(); diff --git a/sys/ia64/ia64/pmap.c b/sys/ia64/ia64/pmap.c index 15ade60..ab37b87 100644 --- a/sys/ia64/ia64/pmap.c +++ b/sys/ia64/ia64/pmap.c @@ -1093,8 +1093,7 @@ pmap_set_pte(struct ia64_lpte *pte, vm_offset_t va, vm_offset_t pa, pte->pte |= (wired) ? PTE_WIRED : 0; pte->pte |= pa & PTE_PPN_MASK; - pte->itir.ps = PAGE_SHIFT; - pte->itir.key = 0; + pte->itir = PAGE_SHIFT << 2; pte->tag = ia64_ttag(va); @@ -2250,9 +2249,9 @@ print_trs(int type) struct ia64_pal_result res; int i, maxtr; struct { - uint64_t ifa; - struct ia64_itir itir; pt_entry_t pte; + uint64_t itir; + uint64_t ifa; struct ia64_rr rr; } buf; static const char *manames[] = { @@ -2287,14 +2286,15 @@ print_trs(int type) db_printf("%d %06x %013lx %013lx %4s %d %d %d %d %d %-3s " "%d %06x\n", (int)buf.ifa & 1, buf.rr.rr_rid, buf.ifa >> 12, (buf.pte & PTE_PPN_MASK) >> 12, - psnames[buf.itir.ps], (buf.pte & PTE_ED) ? 1 : 0, + psnames[(buf.itir & ITIR_PS_MASK) >> 2], + (buf.pte & PTE_ED) ? 1 : 0, (int)(buf.pte & PTE_AR_MASK) >> 9, (int)(buf.pte & PTE_PL_MASK) >> 7, (pmap_lpte_dirty(&buf)) ? 1 : 0, (pmap_lpte_accessed(&buf)) ? 1 : 0, manames[(buf.pte & PTE_MA_MASK) >> 2], (pmap_lpte_present(&buf)) ? 1 : 0, - buf.itir.key); + (int)((buf.itir & ITIR_KEY_MASK) >> 8)); } } diff --git a/sys/ia64/include/pte.h b/sys/ia64/include/pte.h index 20c5042..f57cb4d 100644 --- a/sys/ia64/include/pte.h +++ b/sys/ia64/include/pte.h @@ -59,6 +59,11 @@ #define PTE_MANAGED 0x0040000000000000 #define PTE_PROT_MASK 0x0700000000000000 +#define ITIR__RV1_ 0x0000000000000003 +#define ITIR_PS_MASK 0x00000000000000FC +#define ITIR_KEY_MASK 0x00000000FFFFFF00 +#define ITIR__RV2_ 0xFFFFFFFF00000000 + #ifndef LOCORE typedef uint64_t pt_entry_t; @@ -76,21 +81,11 @@ pte_atomic_set(pt_entry_t *ptep, uint64_t val) } /* - * Layout of cr.itir. - */ -struct ia64_itir { - uint64_t __rv1__ :2; /* bits 0..1 */ - uint64_t ps :6; /* bits 2..7 */ - uint64_t key :24; /* bits 8..31 */ - uint64_t __rv2__ :32; /* bits 32..63 */ -}; - -/* * A long-format VHPT entry. */ struct ia64_lpte { pt_entry_t pte; - struct ia64_itir itir; + uint64_t itir; uint64_t tag; /* includes ti */ uint64_t chain; /* pa of collision chain */ }; |