]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Include/Protocol/EbcVmTest.h
BaseTools/GenFw: recognize MM file types as EFI Boot Service Drivers.
[mirror_edk2.git] / MdeModulePkg / Include / Protocol / EbcVmTest.h
index a9bbb3a0a6e39b98bf84ae733cd0fb50d14818af..9eedca1906a2848f1195fd2f3b24c0a158e18bce 100644 (file)
@@ -30,6 +30,55 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 //\r
 typedef struct _EFI_EBC_VM_TEST_PROTOCOL EFI_EBC_VM_TEST_PROTOCOL;\r
 \r
+//\r
+// VM major/minor version\r
+//\r
+#define VM_MAJOR_VERSION  1\r
+#define VM_MINOR_VERSION  0\r
+\r
+//\r
+// Bits in the VM->StopFlags field\r
+//\r
+#define STOPFLAG_APP_DONE         0x0001\r
+#define STOPFLAG_BREAKPOINT       0x0002\r
+#define STOPFLAG_INVALID_BREAK    0x0004\r
+#define STOPFLAG_BREAK_ON_CALLEX  0x0008\r
+\r
+//\r
+// Masks for working with the VM flags register\r
+//\r
+#define VMFLAGS_CC        0x0001  // condition flag\r
+#define VMFLAGS_STEP      0x0002  // step instruction mode\r
+#define VMFLAGS_ALL_VALID (VMFLAGS_CC | VMFLAGS_STEP)\r
+\r
+//\r
+// Macros for operating on the VM flags register\r
+//\r
+#define VMFLAG_SET(pVM, Flag)   (pVM->Flags |= (Flag))\r
+#define VMFLAG_ISSET(pVM, Flag) ((pVM->Flags & (Flag)) ? 1 : 0)\r
+#define VMFLAG_CLEAR(pVM, Flag) (pVM->Flags &= ~(Flag))\r
+\r
+//\r
+// Define a macro to get the operand. Then we can change it to be either a\r
+// direct read or have it call a function to read memory.\r
+//\r
+#define GETOPERANDS(pVM)  (UINT8) (*(UINT8 *) (pVM->Ip + 1))\r
+#define GETOPCODE(pVM)    (UINT8) (*(UINT8 *) pVM->Ip)\r
+\r
+//\r
+// Macros for operating on the VM GP registers\r
+//\r
+#define OPERAND1_REGDATA(pVM, Op) pVM->Gpr[OPERAND1_REGNUM (Op)]\r
+#define OPERAND2_REGDATA(pVM, Op) pVM->Gpr[OPERAND2_REGNUM (Op)]\r
+\r
+//\r
+// Bits of exception flags field of VM context\r
+//\r
+#define EXCEPTION_FLAG_FATAL    0x80000000  // can't continue\r
+#define EXCEPTION_FLAG_ERROR    0x40000000  // bad, but try to continue\r
+#define EXCEPTION_FLAG_WARNING  0x20000000  // harmless problem\r
+#define EXCEPTION_FLAG_NONE     0x00000000  // for normal return\r
+\r
 ///\r
 /// instruction pointer for the VM\r
 ///\r