]> git.proxmox.com Git - mirror_edk2.git/blame - OvmfPkg/Include/IndustryStandard/InstructionParsing.h
UefiCpuPkg: Move AsmRelocateApLoopStart from Mpfuncs.nasm to AmdSev.nasm
[mirror_edk2.git] / OvmfPkg / Include / IndustryStandard / InstructionParsing.h
CommitLineData
fb040cce
TL
1/** @file\r
2 Instruction parsing support definitions.\r
3\r
4 Copyright (C) 2020, Advanced Micro Devices, Inc. All rights reserved.<BR>\r
5 SPDX-License-Identifier: BSD-2-Clause-Patent\r
6\r
7**/\r
8\r
9#ifndef __INSTRUCTION_PARSING_H__\r
10#define __INSTRUCTION_PARSING_H__\r
11\r
12#include <Base.h>\r
13#include <Uefi.h>\r
14\r
15//\r
16// Instruction REX prefix definition\r
17//\r
18typedef union {\r
19 struct {\r
ac0a286f
MK
20 UINT8 BitB : 1;\r
21 UINT8 BitX : 1;\r
22 UINT8 BitR : 1;\r
23 UINT8 BitW : 1;\r
24 UINT8 Rex : 4;\r
fb040cce
TL
25 } Bits;\r
26\r
ac0a286f 27 UINT8 Uint8;\r
fb040cce
TL
28} INSTRUCTION_REX_PREFIX;\r
29\r
30//\r
31// Instruction ModRM definition\r
32//\r
33typedef union {\r
34 struct {\r
ac0a286f
MK
35 UINT8 Rm : 3;\r
36 UINT8 Reg : 3;\r
37 UINT8 Mod : 2;\r
fb040cce
TL
38 } Bits;\r
39\r
ac0a286f 40 UINT8 Uint8;\r
fb040cce
TL
41} INSTRUCTION_MODRM;\r
42\r
43//\r
44// Instruction SIB definition\r
45//\r
46typedef union {\r
47 struct {\r
ac0a286f
MK
48 UINT8 Base : 3;\r
49 UINT8 Index : 3;\r
50 UINT8 Scale : 2;\r
fb040cce
TL
51 } Bits;\r
52\r
ac0a286f 53 UINT8 Uint8;\r
fb040cce
TL
54} INSTRUCTION_SIB;\r
55\r
56//\r
57// Legacy Instruction Prefixes\r
58//\r
ac0a286f
MK
59#define OVERRIDE_SEGMENT_CS 0x2E\r
60#define OVERRIDE_SEGMENT_DS 0x3E\r
61#define OVERRIDE_SEGMENT_ES 0x26\r
62#define OVERRIDE_SEGMENT_SS 0x36\r
63#define OVERRIDE_SEGMENT_FS 0x64\r
64#define OVERRIDE_SEGMENT_GS 0x65\r
65#define OVERRIDE_OPERAND_SIZE 0x66\r
66#define OVERRIDE_ADDRESS_SIZE 0x67\r
67#define LOCK_PREFIX 0xF0\r
68#define REPNZ_PREFIX 0xF2\r
69#define REPZ_PREFIX 0xF3\r
fb040cce
TL
70\r
71//\r
72// REX Prefixes\r
73//\r
74#define REX_PREFIX_START 0x40\r
75#define REX_PREFIX_STOP 0x4F\r
76#define REX_64BIT_OPERAND_SIZE_MASK 0x08\r
77\r
78//\r
79// Two-byte Opcode Flag\r
80//\r
ac0a286f 81#define TWO_BYTE_OPCODE_ESCAPE 0x0F\r
fb040cce
TL
82\r
83#endif\r