PROBE Instruction

Purpose:To verify that arguments can be accessed
Format:opcode mode.rd, len.rw, base.ab
Operation:
If mode<1:0> GTRU PSL<PMD> then
probe-mode <- mode<1:0>
else
probe-mode <- PSL<PMD>
if accessible(base) and accessible(base + zero-extended(len) - 1)
Z = 1;
else
Z = 0;
Condition
Codes:
N <- 0;
Z <- If both accessible then 1 else 0;
V <- 0;
C <- 0;
Exceptions:Translation not valid
Opcodes:
0CPROBERProbe Read accessibility
0DPROBEWProbe Write accessibility
Description: The Probe instruction checks the read or write accessibility of the first and last bytes specified by the base and zero-extended length operands. Note that the bytes in between are not checked. System software must check all pages between the two end bytes if they are to be accessed.

The protection is checked against the mode specified in bits 1:0 of the mode operand that is restricted from being more priviledged than the previous access mode field of the PSL. Note that probing with a mode operand of 0 is equivalent to probing the mode specified in the PSL<PMD>.

Probing an address only returns the accessibility of the page(s) and has no affect on their residency. However, probing a process address may cause a page fault in the system address space on the per-process page tables.

Notes:
1.
On the probe of a process virtual address, if the valid bit of the system page table entry is zero, then translation not valid fault occurs. This allows for the demand paging of the process page tables.
2.
On the probe of a process virtual address, if the protection field of the system page table entry indicates no-access, then a status of not-accessible is given. One no-access page table entry in the system map is equivalent to 128 no access page table entries in the process map.