安騰(R) 處理器主題移動控制暫存器指令

mov cr

字型慣例

格式

(qp)movr 1 = cr 3 from_form M33

(qp)movcr 3 = r2 to_form M32


說明

源運算元複製到目標暫存器。

對於 from_form,將讀取 cr3 指定的控制暫存器,並將值複製到 r1

對於 to_form,將讀取 GR r2,並將值複製到 CRcr3

控制暫存器只能在最高特權級別訪問。PSR.ic 位等於一時,讀取或寫入中斷控制暫存器 (CR16-CR25) 將導致“非法操作”錯誤。

操作

if (PR[qp]) {

if (is_reserved_reg(CR_TYPE, cr 3 )

|| to_form && is_read_only_reg(CR_TYPE, cr 3 )

|| PSR.ic && is_interruption_cr(cr 3 ))

{

illegal_operation_fault();

}

if (from_form)

check_target_register(r 1 );

if (PSR.cpl != 0)

privileged_operation_fault(0);

if (from_form) {

if (cr 3 == IVR)

check_interrupt_request();

if (cr 3 == ITIR)

GR[r 1 ] = impl_itir_cwi_mask(CR[ITIR]);

else

GR[r 1 ] = CR[cr 3 ];

GR[r 1 ].nat = 0;

} else { // to_form

if (GR[r 2 ].nat)

register_nat_consumption_fault(0);

if (is_reserved_field(CR_TYPE, cr 3 , GR[r 2 ]))

reserved_register_field_fault();

if (cr 3 == EOI)

end_of_interrupt();

tmp_val = ignored_field_mask(CR_TYPE, cr 3 , GR[r 2 ]);

CR[cr 3 ] = tmp_val;

if (cr 3 == IIPA)

last_IP = tmp_val;

}

}

中斷

 

序列化

控制暫存器的讀數反映以前的所有指令組與中斷的結果。

一般情況下,對控制暫存器的寫入不立即影響隨後的指令。在相關指令使用修改過的資源之前,軟體必須發出序列化操作。控制暫存器寫入不隱式地與相應的控制暫存器讀取同步,因此需要進行數據序列化。