| 655 | } |
| 656 | |
| 657 | static bool |
| 658 | trap_is_pti(struct trapframe *frame) |
| 659 | { |
| 660 | |
| 661 | return (PCPU_GET(curpmap)->pm_ucr3 != PMAP_NO_CR3 && |
| 662 | pg_nx != 0 && (frame->tf_err & (PGEX_P | PGEX_W | |
| 663 | PGEX_U | PGEX_I)) == (PGEX_P | PGEX_U | PGEX_I) && |
| 664 | (curpcb->pcb_saved_ucr3 & ~CR3_PCID_MASK) == |
| 665 | (PCPU_GET(curpmap)->pm_cr3 & ~CR3_PCID_MASK)); |
| 666 | } |
| 667 | |
| 668 | /* |
| 669 | * Handle all details of a page fault. |