Main routines for the EBC interpreter. Includes the initialization and\r
main interpreter routines.\r
\r
-Copyright (c) 2006, Intel Corporation\r
+Copyright (c) 2006 - 2008, Intel Corporation. <BR>\r
All rights reserved. This program and the accompanying materials\r
are licensed and made available under the terms and conditions of the BSD License\r
which accompanies this distribution. The full text of the license may be found at\r
#define _EBC_INT_H_\r
\r
\r
-#include <PiDxe.h>\r
+#include <Uefi.h>\r
\r
#include <Protocol/DebugSupport.h>\r
#include <Protocol/Ebc.h>\r
typedef UINT32 EXCEPTION_FLAGS;\r
\r
typedef struct {\r
- VM_REGISTER R[8]; // General purpose registers.\r
- UINT64 Flags; // Flags register:\r
- // 0 Set to 1 if the result of the last compare was true\r
- // 1 Set to 1 if stepping\r
- // 2..63 Reserved.\r
+ VM_REGISTER R[8]; // General purpose registers.\r
+ UINT64 Flags; // Flags register:\r
+ // 0 Set to 1 if the result of the last compare was true\r
+ // 1 Set to 1 if stepping\r
+ // 2..63 Reserved.\r
VMIP Ip; // Instruction pointer.\r
UINTN LastException; //\r
EXCEPTION_FLAGS ExceptionFlags; // to keep track of exceptions\r
IN EFI_HANDLE ImageHandle,\r
IN VOID *EbcEntryPoint,\r
OUT VOID **Thunk,\r
- IN UINT32 Flags\r
- )\r
-;\r
+ IN UINT32 Flags\r
+ );\r
\r
/**\r
Add a thunk to our list of thunks for a given image handle.\r
**/\r
EFI_STATUS\r
EbcAddImageThunk (\r
- IN EFI_HANDLE ImageHandle,\r
- IN VOID *ThunkBuffer,\r
- IN UINT32 ThunkSize\r
- )\r
-;\r
+ IN EFI_HANDLE ImageHandle,\r
+ IN VOID *ThunkBuffer,\r
+ IN UINT32 ThunkSize\r
+ );\r
\r
//\r
// The interpreter calls these when an exception is detected,\r
The VM interpreter calls this function when an exception is detected.\r
\r
@param ExceptionType Specifies the processor exception detected.\r
- @param ExceptionFlags Specifies the exception context. \r
+ @param ExceptionFlags Specifies the exception context.\r
@param VmPtr Pointer to a VM context for passing info to the\r
EFI debugger.\r
\r
**/\r
EFI_STATUS\r
EbcDebugSignalException (\r
- IN EFI_EXCEPTION_TYPE ExceptionType,\r
- IN EXCEPTION_FLAGS ExceptionFlags,\r
- IN VM_CONTEXT *VmPtr\r
- )\r
-;\r
+ IN EFI_EXCEPTION_TYPE ExceptionType,\r
+ IN EXCEPTION_FLAGS ExceptionFlags,\r
+ IN VM_CONTEXT *VmPtr\r
+ );\r
\r
//\r
// Define a constant of how often to call the debugger periodic callback\r
\r
//\r
// External low level functions that are native-processor dependent\r
-// \r
-/** \r
- The VM thunk code stuffs an EBC entry point into a processor \r
+//\r
+/**\r
+ The VM thunk code stuffs an EBC entry point into a processor\r
register. Since we can't use inline assembly to get it from\r
the interpreter C code, stuff it into the return value\r
register and return.\r
- \r
+\r
@return The contents of the register in which the entry point is passed.\r
- \r
-**/ \r
+\r
+**/\r
UINTN\r
EFIAPI\r
EbcLLGetEbcEntryPoint (\r
VOID\r
- )\r
-;\r
+ );\r
\r
/**\r
Returns the caller's value of the stack pointer.\r
We adjust it by 4 here because when they called us, the return address\r
is put on the stack, thereby lowering it by 4 bytes.\r
\r
- @return The current value of the stack pointer for the caller. \r
+ @return The current value of the stack pointer for the caller.\r
\r
**/\r
UINTN\r
EFIAPI\r
EbcLLGetStackPointer (\r
VOID\r
- )\r
-;\r
+ );\r
\r
/**\r
This function is called to execute an EBC CALLEX instruction.\r
This instruction requires that we thunk out to external native\r
- code. For x64, we switch stacks, copy the arguments to the stack \r
+ code. For x64, we switch stacks, copy the arguments to the stack\r
and jump to the specified function.\r
On return, we restore the stack pointer to its original location.\r
Destroys no working registers.\r
@param CallAddr The function address.\r
@param EbcSp The new EBC stack pointer.\r
@param FramePtr The frame pointer.\r
- \r
+\r
**/\r
VOID\r
EFIAPI\r
IN UINTN CallAddr,\r
IN UINTN EbcSp,\r
IN VOID *FramePtr\r
- )\r
-;\r
+ );\r
\r
/**\r
This function is called to execute an EBC CALLEX instruction.\r
IN UINTN NewStackPointer,\r
IN VOID *FramePtr,\r
IN UINT8 Size\r
- )\r
-;\r
+ );\r
\r
/**\r
When EBC calls native, on return the VM has to stuff the return\r
in the register, so simply return and the caller should get the\r
return result properly.\r
\r
- @return The unmodified value returned by the native code. \r
+ @return The unmodified value returned by the native code.\r
\r
**/\r
INT64\r
EFIAPI\r
EbcLLGetReturnValue (\r
VOID\r
- )\r
-;\r
+ );\r
\r
/**\r
Returns the stack index and buffer assosicated with the Handle parameter.\r
\r
- @param Handle The EFI handle as the index to the EBC stack. \r
+ @param Handle The EFI handle as the index to the EBC stack.\r
@param StackBuffer A pointer to hold the returned stack buffer.\r
@param BufferIndex A pointer to hold the returned stack index.\r
- \r
+\r
@retval EFI_OUT_OF_RESOURCES The Handle parameter does not correspond to any\r
existing EBC stack.\r
@retval EFI_SUCCESS The stack index and buffer were found and\r
);\r
\r
/**\r
- Returns from the EBC stack by stack Index. \r
- \r
+ Returns from the EBC stack by stack Index.\r
+\r
@param Index Specifies which EBC stack to return from.\r
- \r
+\r
@retval EFI_SUCCESS The function completed successfully.\r
\r
**/\r
/**\r
Allocates memory to hold all the EBC stacks.\r
\r
- @retval EFI_SUCCESS The EBC stacks were allocated successfully. \r
+ @retval EFI_SUCCESS The EBC stacks were allocated successfully.\r
@retval EFI_OUT_OF_RESOURCES Not enough memory available for EBC stacks.\r
\r
**/\r
);\r
\r
/**\r
- Returns from the EBC stack associated with the Handle parameter. \r
- \r
+ Returns from the EBC stack associated with the Handle parameter.\r
+\r
@param Handle Specifies the EFI handle to find the EBC stack with.\r
- \r
+\r
@retval EFI_SUCCESS The function completed successfully.\r
\r
**/\r
ReturnEBCStackByHandle(\r
IN EFI_HANDLE Handle\r
);\r
+\r
+\r
//\r
// Defines for a simple EBC debugger interface\r
//\r
typedef\r
EFI_STATUS\r
(*EBC_DEBUGGER_SIGNAL_EXCEPTION) (\r
- IN EFI_EBC_SIMPLE_DEBUGGER_PROTOCOL * This,\r
- IN VM_CONTEXT * VmPtr,\r
+ IN EFI_EBC_SIMPLE_DEBUGGER_PROTOCOL *This,\r
+ IN VM_CONTEXT *VmPtr,\r
IN EFI_EXCEPTION_TYPE ExceptionType\r
);\r
\r
typedef\r
VOID\r
(*EBC_DEBUGGER_DEBUG) (\r
- IN EFI_EBC_SIMPLE_DEBUGGER_PROTOCOL * This,\r
- IN VM_CONTEXT * VmPtr\r
+ IN EFI_EBC_SIMPLE_DEBUGGER_PROTOCOL *This,\r
+ IN VM_CONTEXT *VmPtr\r
);\r
\r
typedef\r
UINT32\r
(*EBC_DEBUGGER_DASM) (\r
- IN EFI_EBC_SIMPLE_DEBUGGER_PROTOCOL * This,\r
- IN VM_CONTEXT * VmPtr,\r
+ IN EFI_EBC_SIMPLE_DEBUGGER_PROTOCOL *This,\r
+ IN VM_CONTEXT *VmPtr,\r
IN UINT16 *DasmString OPTIONAL,\r
IN UINT32 DasmStringSize\r
);\r
typedef\r
EFI_STATUS\r
(*EBC_DEBUGGER_CONFIGURE) (\r
- IN EFI_EBC_SIMPLE_DEBUGGER_PROTOCOL * This,\r
+ IN EFI_EBC_SIMPLE_DEBUGGER_PROTOCOL *This,\r
IN UINT32 ConfigId,\r
IN UINTN ConfigValue\r
);\r
VM_CONTEXT VmContext;\r
} EFI_EBC_THUNK_DATA;\r
\r
-#define EBC_PROTOCOL_PRIVATE_DATA_SIGNATURE EFI_SIGNATURE_32 ('e', 'b', 'c', 'p')\r
+#define EBC_PROTOCOL_PRIVATE_DATA_SIGNATURE SIGNATURE_32 ('e', 'b', 'c', 'p')\r
\r
\r
#define EBC_PROTOCOL_PRIVATE_DATA_FROM_THIS(a) \\r