| 680 | } |
| 681 | |
| 682 | static pt_entry_t |
| 683 | pmap_pte_prot(pmap_t pmap, vm_prot_t prot) |
| 684 | { |
| 685 | pt_entry_t val; |
| 686 | |
| 687 | val = 0; |
| 688 | if (pmap->pm_stage == PM_STAGE1) { |
| 689 | if ((prot & VM_PROT_EXECUTE) == 0) |
| 690 | val |= ATTR_S1_XN; |
| 691 | if ((prot & VM_PROT_WRITE) == 0) |
| 692 | val |= ATTR_S1_AP(ATTR_S1_AP_RO); |
| 693 | } else { |
| 694 | if ((prot & VM_PROT_WRITE) != 0) |
| 695 | val |= ATTR_S2_S2AP(ATTR_S2_S2AP_WRITE); |
| 696 | if ((prot & VM_PROT_READ) != 0) |
| 697 | val |= ATTR_S2_S2AP(ATTR_S2_S2AP_READ); |
| 698 | if ((prot & VM_PROT_EXECUTE) == 0) |
| 699 | val |= ATTR_S2_XN(ATTR_S2_XN_ALL); |
| 700 | } |
| 701 | |
| 702 | return (val); |
| 703 | } |
| 704 | |
| 705 | /* |
| 706 | * Checks if the PTE is dirty. |