1) Fix GCC version EBC interpreter bug.

Add missing EFIPAI for EbcInterpret and ExecuteEbcImageEntryPoint().
	Get return value in EbcLLCALLEXNative(), remove EbcLLGetReturnValue().

2) Fix IA32 EBC interpreter bug on MOVsnw and MOVsnd.

3) Some cleanup
	Add missing ReturnEBCStack() for IA32 build.
	Remove unnecessary EbcLLGetStackPointer() for X64 and IPF build.
	Remove deadcode EbcLLGetStackPointer() and EbcLLGetReturnValue() in IA32/X64/IPF ASM code.
	Dump more info in CommonEbcExceptionHandler().

Signed-off-by: jyao1
Reviewed-by: Elvinli

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@12745 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
jyao1
2011-11-21 08:35:14 +00:00
parent ea71453f72
commit fa97cbf4ef
11 changed files with 96 additions and 241 deletions

View File

@@ -145,21 +145,6 @@ EbcLLGetEbcEntryPoint (
VOID
);
/**
Returns the caller's value of the stack pointer.
We adjust it by 4 here because when they called us, the return address
is put on the stack, thereby lowering it by 4 bytes.
@return The current value of the stack pointer for the caller.
**/
UINTN
EFIAPI
EbcLLGetStackPointer (
VOID
);
/**
This function is called to execute an EBC CALLEX instruction.
This instruction requires that we thunk out to external native
@@ -172,8 +157,10 @@ EbcLLGetStackPointer (
@param EbcSp The new EBC stack pointer.
@param FramePtr The frame pointer.
@return The unmodified value returned by the native code.
**/
VOID
INT64
EFIAPI
EbcLLCALLEXNative (
IN UINTN CallAddr,
@@ -205,21 +192,6 @@ EbcLLCALLEX (
IN UINT8 Size
);
/**
When EBC calls native, on return the VM has to stuff the return
value into a VM register. It's assumed here that the value is still
in the register, so simply return and the caller should get the
return result properly.
@return The unmodified value returned by the native code.
**/
INT64
EFIAPI
EbcLLGetReturnValue (
VOID
);
/**
Returns the stack index and buffer assosicated with the Handle parameter.