mov ar Operation Font Conventions
if
(PR[qp]) {
tmp_type = (i_form ? AR_I_TYPE : AR_M_TYPE);
if (
is_reserved_reg(tmp_type,
ar3))
illegal_operation_fault();
if (from_form) {
check_target_register;
if (((ar3 == BSPSTORE) || (ar3 == RNAT)) && (
AR[RSC].mode
!= 0))
illegal_operation_fault();
if (ar3 ==
ITC
&& PSR.si && PSR.cpl != 0)
privileged_register_fault();
GR[r1]
= (
is_ignored_reg(ar3))
? 0 : AR[ar3];
GR[r1].nat = 0;
} else { // to_form
tmp_val = (register_form) ? GR[r2] :
sign_ext(imm8,
8);
if (is_read_only_register(AR_TYPE, ar3) ||
(((ar3
== BSPSTORE) || (ar3 == RNAT)) && (AR[RSC].mode != 0))) illegal_operation_fault();
if (register_form && GR[r2].nat)
register_nat_consumption_fault(0);
if (
is_reserved_field(AR_TYPE,
ar3, tmp_val))
reserved_register_field_fault();
if ((
is_kernel_reg(ar3)
|| ar3 == ITC) && (PSR.cpl != 0))
privileged_register_fault();
if (!
is_ignored_reg(ar3))
{
tmp_val =
ignored_field_mask(AR_TYPE,
ar3, tmp_val);
// check for illegal promotion
if (ar3 == RSC && tmp_val{3:2} u< PSR.cpl)
tmp_val{3:2} = PSR.cpl;
AR[ar3]
= tmp_val;
if (ar3 == BSPSTORE) {
AR[BSP] =
rse_update_internal_stack_pointers(tmp_val);
AR[RNAT] = undefined();
}
}
}
}