uefi64kos: Fix stack alignment on function calls.

It is a formal requirement of UEFI spec that the stack is to be aligned
on 16 bytes on all calls to service routines. I changed eficall macro to
fstcall one in my previous commit. Due to differences in macro logic
that change broke UEFI boot on some platforms that do care about stack
alignment. This commit should fix the issue.

git-svn-id: svn://kolibrios.org@9253 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
Ivan Baravy 2021-11-05 02:17:31 +00:00
parent 7454368c78
commit e44770ac18
3 changed files with 279 additions and 465 deletions

View File

@ -20,36 +20,39 @@ EFIERR = 0x80000000
struct EFI_SYSTEM_TABLE
Hdr EFI_TABLE_HEADER
FirmwareVendor dd ?
FirmwareVendor DN ?
FirmwareRevision dd ?
ConsoleInHandle dd ?
ConIn dd ?
ConsoleOutHandle dd ?
ConOut dd ?
StandardErrorHandle dd ?
StdErr dd ?
RuntimeServices dd ?
BootServices dd ?
NumberOfTableEntries dd ?
ConfigurationTable dd ?
ConsoleInHandle DN ?
ConIn DN ?
ConsoleOutHandle DN ?
ConOut DN ?
StandardErrorHandle DN ?
StdErr DN ?
RuntimeServices DN ?
BootServices DN ?
NumberOfTableEntries DN ?
ConfigurationTable DN ?
ends
struct EFI_CONFIGURATION_TABLE
VendorGUID rd 4
VendorTable dd ?
VendorTable DN ?
ends
struct EFI_LOADED_IMAGE_PROTOCOL
Revision dd ?
ParentHandle dd ?
SystemTable dd ?
DeviceHandle dd ?
FilePath dd ?
Reserved dd ?
ParentHandle DN ?
SystemTable DN ?
DeviceHandle DN ?
FilePath DN ?
Reserved DN ?
LoadOptionsSize dd ?
ImageBase dd ?
ImageBase DN ?
ImageSize DQ ?
ImageCodeType dd ?
ImageDataType dd ?
UnLoad dd ?
UnLoad DN ?
ends

View File

@ -20,34 +20,39 @@ EFIERR = 0x8000000000000000
struct EFI_SYSTEM_TABLE
Hdr EFI_TABLE_HEADER
FirmwareVendor dq ?
FirmwareVendor DN ?
FirmwareRevision dd ?
dd ?
ConsoleInHandle dq ?
ConIn dq ?
ConsoleOutHandle dq ?
ConOut dq ?
StandardErrorHandle dq ?
StdErr dq ?
RuntimeServices dq ?
BootServices dq ?
NumberOfTableEntries dq ?
ConfigurationTable dq ?
ConsoleInHandle DN ?
ConIn DN ?
ConsoleOutHandle DN ?
ConOut DN ?
StandardErrorHandle DN ?
StdErr DN ?
RuntimeServices DN ?
BootServices DN ?
NumberOfTableEntries DN ?
ConfigurationTable DN ?
ends
struct EFI_CONFIGURATION_TABLE
VendorGUID rd 4
VendorTable DN ?
ends
struct EFI_LOADED_IMAGE_PROTOCOL
Revision dd ?
dd ?
ParentHandle dq ?
SystemTable dq ?
DeviceHandle dq ?
FilePath dq ?
Reserved dq ?
ParentHandle DN ?
SystemTable DN ?
DeviceHandle DN ?
FilePath DN ?
Reserved DN ?
LoadOptionsSize dd ?
dd ?
ImageBase dq ?
ImageBase DN ?
ImageSize dq ?
ImageCodeType dd ?
ImageDataType dd ?
UnLoad dq ?
UnLoad DN ?
ends

File diff suppressed because it is too large Load Diff