Ring3: Fixed missing Ring3Call result.

This commit is contained in:
Mikhail Krichanov 2024-02-26 11:37:39 +03:00
parent 1836c35027
commit d704a3c6e7
2 changed files with 9 additions and 7 deletions

View File

@ -122,6 +122,7 @@ Ring3Call (
IN RING3_CALL_DATA *Data IN RING3_CALL_DATA *Data
) )
{ {
EFI_STATUS Status;
FUNCTION_0 Function0; FUNCTION_0 Function0;
FUNCTION_1 Function1; FUNCTION_1 Function1;
FUNCTION_2 Function2; FUNCTION_2 Function2;
@ -132,33 +133,33 @@ Ring3Call (
switch (Data->NumberOfArguments) { switch (Data->NumberOfArguments) {
case 0: case 0:
Function0 = (FUNCTION_0)Data->EntryPoint; Function0 = (FUNCTION_0)Data->EntryPoint;
Function0 (); Status = Function0 ();
break; break;
case 1: case 1:
Function1 = (FUNCTION_1)Data->EntryPoint; Function1 = (FUNCTION_1)Data->EntryPoint;
Function1 (Data->Arguments[0]); Status = Function1 (Data->Arguments[0]);
break; break;
case 2: case 2:
Function2 = (FUNCTION_2)Data->EntryPoint; Function2 = (FUNCTION_2)Data->EntryPoint;
Function2 (Data->Arguments[0], Data->Arguments[1]); Status = Function2 (Data->Arguments[0], Data->Arguments[1]);
break; break;
case 3: case 3:
Function3 = (FUNCTION_3)Data->EntryPoint; Function3 = (FUNCTION_3)Data->EntryPoint;
Function3 (Data->Arguments[0], Data->Arguments[1], Data->Arguments[2]); Status = Function3 (Data->Arguments[0], Data->Arguments[1], Data->Arguments[2]);
break; break;
case 4: case 4:
Function4 = (FUNCTION_4)Data->EntryPoint; Function4 = (FUNCTION_4)Data->EntryPoint;
Function4 (Data->Arguments[0], Data->Arguments[1], Data->Arguments[2], Data->Arguments[3]); Status = Function4 (Data->Arguments[0], Data->Arguments[1], Data->Arguments[2], Data->Arguments[3]);
break; break;
case 5: case 5:
Function5 = (FUNCTION_5)Data->EntryPoint; Function5 = (FUNCTION_5)Data->EntryPoint;
Function5 (Data->Arguments[0], Data->Arguments[1], Data->Arguments[2], Data->Arguments[3], Data->Arguments[4]); Status = Function5 (Data->Arguments[0], Data->Arguments[1], Data->Arguments[2], Data->Arguments[3], Data->Arguments[4]);
break; break;
default: default:
break; break;
} }
SysCall (SysCallReturnToCore); SysCall (SysCallReturnToCore, Status);
} }
EFI_STATUS EFI_STATUS

View File

@ -223,6 +223,7 @@ o64 sysret
coreReturnAddress: coreReturnAddress:
mov rsp, [ASM_PFX(CoreRsp)] mov rsp, [ASM_PFX(CoreRsp)]
mov rbp, [ASM_PFX(CoreRbp)] mov rbp, [ASM_PFX(CoreRbp)]
mov rax, rdx
ret ret
SECTION .data SECTION .data