HvCallSetVpRegisters
HvCallSetVpRegisters 하이퍼콜은 가상 프로세서의 상태를 씁니다.
인터페이스
HV_STATUS
HvCallSetVpRegisters(
_In_ HV_PARTITION_ID PartitionId,
_In_ HV_VP_INDEX VpIndex,
_In_ HV_INPUT_VTL InputVtl,
_Inout_ PUINT32 RegisterCount,
_In_reads(RegisterCount) PCHV_REGISTER_NAME RegisterNameList,
_In_reads(RegisterCount) PCHV_REGISTER_VALUE RegisterValueList
);
상태는 각각 입력으로 제공된 레지스터 이름에 해당하는 일련의 레지스터 값으로 작성됩니다.
레지스터 값이 수정될 때 최소 오류 검사가 수행됩니다. 특히 하이퍼바이저는 레지스터의 예약된 비트가 0으로 설정되고, 항상 0 또는 1을 포함하는 것으로 아키텍처적으로 정의된 비트가 적절하게 설정되고, 레지스터의 아키텍처 크기를 초과하는 지정된 비트가 0으로 설정되어 있는지 확인합니다.
이 호출은 읽기 전용 레지스터의 값을 수정하는 데 사용할 수 없습니다.
레지스터 수정의 부작용은 수행되지 않습니다. 여기에는 예외 생성, 파이프라인 동기화, TLB 플러시 등이 포함됩니다.
제한
- 호출자는 PartitionId로 지정된 파티션의 부모이거나 지정된 파티션이 "self"여야 하며 파티션에 AccessVpRegisters 권한이 있어야 합니다.
호출 코드
0x0051
(Rep)
입력 매개 변수
이름 | Offset | 크기 | 제공된 정보 |
---|---|---|---|
PartitionId |
0 | 8 | 파티션 ID를 지정합니다. |
VpIndex |
8 | 4 | 가상 프로세서의 인덱스를 지정합니다. |
TargetVtl |
12 | 1 | 는 대상 VTL을 지정합니다. |
RsvdZ | 13 | 3 |
입력 목록 요소
이름 | Offset | 크기 | 제공된 정보 |
---|---|---|---|
RegisterName |
0 | 4 | 수정할 레지스터의 이름을 지정합니다. |
RsvdZ | 4 | 12 | |
RegisterValue |
16 | 16 | 지정된 레지스터의 새 값을 지정합니다. |