lfetch Operation Font Conventions
if
(PR[qp]) {
itype = READ|NON_ACCESS;
itype |= (lftype == ‘fault') ? LFETCH_FAULT : LFETCH;
if (reg_base_update_form || imm_base_update_form)
check_target_register(r3);
if (lftype == ‘fault') { // faulting form
if (
GR[r3].nat
&& !PSR.ed) // fault on NaT address
register_nat_consumption_fault(itype);
}
excl_hint = (exclusive_form) ? EXCLUSIVE : 0;
if
(!GR[r3].nat && !PSR.ed) {// faulting form already faulted if
r3 is nat paddr =
tlb_translate(GR[r3],
1, itype, PSR.cpl, &mattr, &defer);
if (!defer)
mem_promote(paddr,
mattr, lfhint | excl_hint);
}
if (imm_base_update_form) {
GR[r3] = GR[r3] +
sign_ext(imm9,
9);
GR[r3].nat = GR[r3].nat;
} else if (reg_base_update_form) {
GR[r3] = GR[r3] + GR[r2];
GR[r3].nat = GR[r2].nat || GR[r3].nat;
}
if ((reg_base_update_form || imm_base_update_form) && !GR[r3].nat)
mem_implicit_prefetch(GR[r3],lfhint
|excl_hint, itype);
}