mirror of
https://github.com/acidanthera/audk.git
synced 2025-07-23 05:34:31 +02:00
Get BlockIo mapping interfaces working. Still need to work on detecting block size of devices, but you can map a .dmg file no problem at this point.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@11724 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
parent
26fab514ee
commit
033d0e5ff6
@ -232,7 +232,7 @@ EmuBlockIoReset (
|
|||||||
EMU_BLOCK_IO_PRIVATE *Private;
|
EMU_BLOCK_IO_PRIVATE *Private;
|
||||||
EFI_TPL OldTpl;
|
EFI_TPL OldTpl;
|
||||||
|
|
||||||
Private = EMU_BLOCK_IO2_PRIVATE_DATA_FROM_THIS (This);
|
Private = EMU_BLOCK_IO_PRIVATE_DATA_FROM_THIS (This);
|
||||||
|
|
||||||
OldTpl = gBS->RaiseTPL (TPL_CALLBACK);
|
OldTpl = gBS->RaiseTPL (TPL_CALLBACK);
|
||||||
|
|
||||||
@ -264,8 +264,7 @@ EmuBlockIoReset (
|
|||||||
**/
|
**/
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
EFIAPI
|
EFIAPI
|
||||||
EmuBlockIoReadBlocks
|
EmuBlockIoReadBlocks (
|
||||||
(
|
|
||||||
IN EFI_BLOCK_IO_PROTOCOL *This,
|
IN EFI_BLOCK_IO_PROTOCOL *This,
|
||||||
IN UINT32 MediaId,
|
IN UINT32 MediaId,
|
||||||
IN EFI_LBA Lba,
|
IN EFI_LBA Lba,
|
||||||
@ -278,7 +277,7 @@ EmuBlockIoReadBlocks
|
|||||||
EFI_TPL OldTpl;
|
EFI_TPL OldTpl;
|
||||||
EFI_BLOCK_IO2_TOKEN Token;
|
EFI_BLOCK_IO2_TOKEN Token;
|
||||||
|
|
||||||
Private = EMU_BLOCK_IO2_PRIVATE_DATA_FROM_THIS (This);
|
Private = EMU_BLOCK_IO_PRIVATE_DATA_FROM_THIS (This);
|
||||||
|
|
||||||
OldTpl = gBS->RaiseTPL (TPL_CALLBACK);
|
OldTpl = gBS->RaiseTPL (TPL_CALLBACK);
|
||||||
|
|
||||||
@ -325,7 +324,7 @@ EmuBlockIoWriteBlocks (
|
|||||||
EFI_TPL OldTpl;
|
EFI_TPL OldTpl;
|
||||||
EFI_BLOCK_IO2_TOKEN Token;
|
EFI_BLOCK_IO2_TOKEN Token;
|
||||||
|
|
||||||
Private = EMU_BLOCK_IO2_PRIVATE_DATA_FROM_THIS (This);
|
Private = EMU_BLOCK_IO_PRIVATE_DATA_FROM_THIS (This);
|
||||||
|
|
||||||
OldTpl = gBS->RaiseTPL (TPL_CALLBACK);
|
OldTpl = gBS->RaiseTPL (TPL_CALLBACK);
|
||||||
|
|
||||||
@ -357,7 +356,7 @@ EmuBlockIoFlushBlocks (
|
|||||||
EFI_TPL OldTpl;
|
EFI_TPL OldTpl;
|
||||||
EFI_BLOCK_IO2_TOKEN Token;
|
EFI_BLOCK_IO2_TOKEN Token;
|
||||||
|
|
||||||
Private = EMU_BLOCK_IO2_PRIVATE_DATA_FROM_THIS (This);
|
Private = EMU_BLOCK_IO_PRIVATE_DATA_FROM_THIS (This);
|
||||||
|
|
||||||
OldTpl = gBS->RaiseTPL (TPL_CALLBACK);
|
OldTpl = gBS->RaiseTPL (TPL_CALLBACK);
|
||||||
|
|
||||||
@ -442,7 +441,7 @@ EmuBlockIoDriverBindingSupported (
|
|||||||
// Make sure GUID is for a File System handle.
|
// Make sure GUID is for a File System handle.
|
||||||
//
|
//
|
||||||
Status = EFI_UNSUPPORTED;
|
Status = EFI_UNSUPPORTED;
|
||||||
if (CompareGuid (EmuIoThunk->Protocol, &gEmuVirtualDisksGuid)) {
|
if (CompareGuid (EmuIoThunk->Protocol, &gEmuBlockIoProtocolGuid)) {
|
||||||
Status = EFI_SUCCESS;
|
Status = EFI_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -524,7 +523,7 @@ EmuBlockIoDriverBindingStart (
|
|||||||
//
|
//
|
||||||
// Set DiskType
|
// Set DiskType
|
||||||
//
|
//
|
||||||
if (!CompareGuid (EmuIoThunk->Protocol, &gEmuVirtualDisksGuid)) {
|
if (!CompareGuid (EmuIoThunk->Protocol, &gEmuBlockIoProtocolGuid)) {
|
||||||
Status = EFI_UNSUPPORTED;
|
Status = EFI_UNSUPPORTED;
|
||||||
goto Done;
|
goto Done;
|
||||||
}
|
}
|
||||||
@ -542,6 +541,7 @@ EmuBlockIoDriverBindingStart (
|
|||||||
Private->Signature = EMU_BLOCK_IO_PRIVATE_SIGNATURE;
|
Private->Signature = EMU_BLOCK_IO_PRIVATE_SIGNATURE;
|
||||||
Private->IoThunk = EmuIoThunk;
|
Private->IoThunk = EmuIoThunk;
|
||||||
Private->Io = EmuIoThunk->Interface;
|
Private->Io = EmuIoThunk->Interface;
|
||||||
|
Private->EfiHandle = Handle;
|
||||||
|
|
||||||
Private->BlockIo.Revision = EFI_BLOCK_IO_PROTOCOL_REVISION2;
|
Private->BlockIo.Revision = EFI_BLOCK_IO_PROTOCOL_REVISION2;
|
||||||
Private->BlockIo.Media = &Private->Media;
|
Private->BlockIo.Media = &Private->Media;
|
||||||
|
@ -66,4 +66,4 @@
|
|||||||
gEfiBlockIoProtocolGuid # PROTOCOL BY_START
|
gEfiBlockIoProtocolGuid # PROTOCOL BY_START
|
||||||
gEfiBlockIo2ProtocolGuid # PROTOCOL BY_START
|
gEfiBlockIo2ProtocolGuid # PROTOCOL BY_START
|
||||||
gEmuIoThunkProtocolGuid # PROTOCOL TO_START
|
gEmuIoThunkProtocolGuid # PROTOCOL TO_START
|
||||||
|
gEmuBlockIoProtocolGuid # PROTOCOL BY_START
|
||||||
|
@ -36,6 +36,7 @@
|
|||||||
gEmuIoThunkProtocolGuid = { 0x453368F6, 0x7C85, 0x434A, { 0xA9, 0x8A, 0x72, 0xD1, 0xB7, 0xFF, 0xA9, 0x26 } }
|
gEmuIoThunkProtocolGuid = { 0x453368F6, 0x7C85, 0x434A, { 0xA9, 0x8A, 0x72, 0xD1, 0xB7, 0xFF, 0xA9, 0x26 } }
|
||||||
gEmuGraphicsWindowProtocolGuid = { 0x30FD316A, 0x6728, 0x2E41, { 0xA6, 0x90, 0x0D, 0x13, 0x33, 0xD8, 0xCA, 0xC1 } }
|
gEmuGraphicsWindowProtocolGuid = { 0x30FD316A, 0x6728, 0x2E41, { 0xA6, 0x90, 0x0D, 0x13, 0x33, 0xD8, 0xCA, 0xC1 } }
|
||||||
gEmuThreadThunkProtocolGuid = { 0x3B1E4B7C, 0x09D8, 0x944F, { 0xA4, 0x08, 0x13, 0x09, 0xEB, 0x8B, 0x44, 0x27 } }
|
gEmuThreadThunkProtocolGuid = { 0x3B1E4B7C, 0x09D8, 0x944F, { 0xA4, 0x08, 0x13, 0x09, 0xEB, 0x8B, 0x44, 0x27 } }
|
||||||
|
gEmuBlockIoProtocolGuid = { 0x6888A4AE, 0xAFCE, 0xE84B, { 0x91, 0x02, 0xF7, 0xB9, 0xDA, 0xE6, 0xA0, 0x30 } }
|
||||||
|
|
||||||
[Ppis]
|
[Ppis]
|
||||||
gEmuThunkPpiGuid = { 0xE113F896, 0x75CF, 0xF640, { 0x81, 0x7F, 0xC8, 0x5A, 0x79, 0xE8, 0xAE, 0x67 } }
|
gEmuThunkPpiGuid = { 0xE113F896, 0x75CF, 0xF640, { 0x81, 0x7F, 0xC8, 0x5A, 0x79, 0xE8, 0xAE, 0x67 } }
|
||||||
|
@ -23,7 +23,7 @@
|
|||||||
#include <Protocol/BlockIo2.h>
|
#include <Protocol/BlockIo2.h>
|
||||||
|
|
||||||
#define EMU_BLOCK_IO_PROTOCOL_GUID \
|
#define EMU_BLOCK_IO_PROTOCOL_GUID \
|
||||||
{ 0x3EC5F7E0, 0x1124, 0xDF45, { 0x9F, 0x96, 0x7D, 0xD6, 0x63, 0xC0, 0xAF, 0xE7 } }
|
{ 0x6888A4AE, 0xAFCE, 0xE84B, { 0x91, 0x02, 0xF7, 0xB9, 0xDA, 0xE6, 0xA0, 0x30 } }
|
||||||
|
|
||||||
typedef struct _EMU_BLOCK_IO_PROTOCOL EMU_BLOCK_IO_PROTOCOL;
|
typedef struct _EMU_BLOCK_IO_PROTOCOL EMU_BLOCK_IO_PROTOCOL;
|
||||||
|
|
||||||
@ -90,7 +90,7 @@ EFI_STATUS
|
|||||||
IN EFI_LBA LBA,
|
IN EFI_LBA LBA,
|
||||||
IN OUT EFI_BLOCK_IO2_TOKEN *Token,
|
IN OUT EFI_BLOCK_IO2_TOKEN *Token,
|
||||||
IN UINTN BufferSize,
|
IN UINTN BufferSize,
|
||||||
OUT VOID *Buffer
|
OUT VOID *Buffer
|
||||||
);
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -127,7 +127,7 @@ EFI_STATUS
|
|||||||
typedef
|
typedef
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
(EFIAPI *EMU_BLOCK_WRITE) (
|
(EFIAPI *EMU_BLOCK_WRITE) (
|
||||||
IN EMU_BLOCK_IO_PROTOCOL *This,
|
IN EMU_BLOCK_IO_PROTOCOL *This,
|
||||||
IN UINT32 MediaId,
|
IN UINT32 MediaId,
|
||||||
IN EFI_LBA LBA,
|
IN EFI_LBA LBA,
|
||||||
IN OUT EFI_BLOCK_IO2_TOKEN *Token,
|
IN OUT EFI_BLOCK_IO2_TOKEN *Token,
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -405,8 +405,58 @@ GasketPosixFileSystmeThunkClose (
|
|||||||
IN EMU_IO_THUNK_PROTOCOL *This
|
IN EMU_IO_THUNK_PROTOCOL *This
|
||||||
);
|
);
|
||||||
|
|
||||||
|
EFI_STATUS
|
||||||
|
EFIAPI
|
||||||
|
GasketEmuBlockIoReset (
|
||||||
|
IN EMU_BLOCK_IO_PROTOCOL *This,
|
||||||
|
IN BOOLEAN ExtendedVerification
|
||||||
|
);
|
||||||
|
|
||||||
|
EFI_STATUS
|
||||||
|
GasketEmuBlockIoReadBlocks (
|
||||||
|
IN EMU_BLOCK_IO_PROTOCOL *This,
|
||||||
|
IN UINT32 MediaId,
|
||||||
|
IN EFI_LBA LBA,
|
||||||
|
IN OUT EFI_BLOCK_IO2_TOKEN *Token,
|
||||||
|
IN UINTN BufferSize,
|
||||||
|
OUT VOID *Buffer
|
||||||
|
);
|
||||||
|
|
||||||
|
EFI_STATUS
|
||||||
|
EFIAPI
|
||||||
|
GasketEmuBlockIoWriteBlocks (
|
||||||
|
IN EMU_BLOCK_IO_PROTOCOL *This,
|
||||||
|
IN UINT32 MediaId,
|
||||||
|
IN EFI_LBA LBA,
|
||||||
|
IN OUT EFI_BLOCK_IO2_TOKEN *Token,
|
||||||
|
IN UINTN BufferSize,
|
||||||
|
IN VOID *Buffer
|
||||||
|
);
|
||||||
|
|
||||||
|
EFI_STATUS
|
||||||
|
GasketEmuBlockIoFlushBlocks (
|
||||||
|
IN EMU_BLOCK_IO_PROTOCOL *This,
|
||||||
|
IN OUT EFI_BLOCK_IO2_TOKEN *Token
|
||||||
|
);
|
||||||
|
|
||||||
|
EFI_STATUS
|
||||||
|
GasketEmuBlockIoCreateMapping (
|
||||||
|
IN EMU_BLOCK_IO_PROTOCOL *This,
|
||||||
|
IN EFI_BLOCK_IO_MEDIA *Media
|
||||||
|
);
|
||||||
|
|
||||||
|
EFI_STATUS
|
||||||
|
EFIAPI
|
||||||
|
GasketBlockIoThunkOpen (
|
||||||
|
IN EMU_IO_THUNK_PROTOCOL *This
|
||||||
|
);
|
||||||
|
|
||||||
|
EFI_STATUS
|
||||||
|
EFIAPI
|
||||||
|
GasketBlockIoThunkClose (
|
||||||
|
IN EMU_IO_THUNK_PROTOCOL *This
|
||||||
|
);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
@ -1533,7 +1533,7 @@ PosixFileSystmeThunkClose (
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (This->Private != NULL) {
|
if (This->Private != NULL) {
|
||||||
if (Private->VolumeLabel == NULL) {
|
if (Private->VolumeLabel != NULL) {
|
||||||
free (Private->VolumeLabel);
|
free (Private->VolumeLabel);
|
||||||
}
|
}
|
||||||
free (This->Private);
|
free (This->Private);
|
||||||
|
@ -116,7 +116,10 @@ main (
|
|||||||
//
|
//
|
||||||
AddThunkProtocol (&gX11ThunkIo, (CHAR16 *)PcdGetPtr (PcdEmuGop), TRUE);
|
AddThunkProtocol (&gX11ThunkIo, (CHAR16 *)PcdGetPtr (PcdEmuGop), TRUE);
|
||||||
AddThunkProtocol (&gPosixFileSystemThunkIo, (CHAR16 *)PcdGetPtr (PcdEmuFileSystem), TRUE);
|
AddThunkProtocol (&gPosixFileSystemThunkIo, (CHAR16 *)PcdGetPtr (PcdEmuFileSystem), TRUE);
|
||||||
|
AddThunkProtocol (&gBlockIoThunkIo, (CHAR16 *)PcdGetPtr (PcdEmuVirtualDisk), TRUE);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// Emulator other Thunks
|
// Emulator other Thunks
|
||||||
//
|
//
|
||||||
|
@ -46,6 +46,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
|||||||
#include <Protocol/EmuIoThunk.h>
|
#include <Protocol/EmuIoThunk.h>
|
||||||
#include <Protocol/EmuGraphicsWindow.h>
|
#include <Protocol/EmuGraphicsWindow.h>
|
||||||
#include <Protocol/EmuThread.h>
|
#include <Protocol/EmuThread.h>
|
||||||
|
#include <Protocol/EmuBlockIo.h>
|
||||||
|
|
||||||
#include <Guid/FileInfo.h>
|
#include <Guid/FileInfo.h>
|
||||||
#include <Guid/FileSystemInfo.h>
|
#include <Guid/FileSystemInfo.h>
|
||||||
@ -318,6 +319,6 @@ extern EMU_THUNK_PROTOCOL gEmuThunkProtocol;
|
|||||||
extern EMU_IO_THUNK_PROTOCOL gX11ThunkIo;
|
extern EMU_IO_THUNK_PROTOCOL gX11ThunkIo;
|
||||||
extern EMU_IO_THUNK_PROTOCOL gPosixFileSystemThunkIo;
|
extern EMU_IO_THUNK_PROTOCOL gPosixFileSystemThunkIo;
|
||||||
extern EMU_IO_THUNK_PROTOCOL gPthreadThunkIo;
|
extern EMU_IO_THUNK_PROTOCOL gPthreadThunkIo;
|
||||||
|
extern EMU_IO_THUNK_PROTOCOL gBlockIoThunkIo;
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -35,6 +35,7 @@
|
|||||||
X11GraphicsWindow.c
|
X11GraphicsWindow.c
|
||||||
Pthreads.c
|
Pthreads.c
|
||||||
PosixFileSystem.c
|
PosixFileSystem.c
|
||||||
|
BlockIo.c
|
||||||
|
|
||||||
[Sources.X64]
|
[Sources.X64]
|
||||||
X64/Gasket.S # convert between Emu x86_64 ABI and EFI X64 ABI
|
X64/Gasket.S # convert between Emu x86_64 ABI and EFI X64 ABI
|
||||||
@ -68,8 +69,8 @@
|
|||||||
gEmuIoThunkProtocolGuid
|
gEmuIoThunkProtocolGuid
|
||||||
gEmuGraphicsWindowProtocolGuid
|
gEmuGraphicsWindowProtocolGuid
|
||||||
gEmuThreadThunkProtocolGuid
|
gEmuThreadThunkProtocolGuid
|
||||||
|
gEmuBlockIoProtocolGuid
|
||||||
gEfiSimpleFileSystemProtocolGuid
|
gEfiSimpleFileSystemProtocolGuid
|
||||||
|
|
||||||
|
|
||||||
[Guids]
|
[Guids]
|
||||||
gEfiFileSystemVolumeLabelInfoIdGuid # SOMETIMES_CONSUMED
|
gEfiFileSystemVolumeLabelInfoIdGuid # SOMETIMES_CONSUMED
|
||||||
|
@ -1022,9 +1022,143 @@ ASM_PFX(GasketPosixFileSystmeThunkClose):
|
|||||||
popq %rbp
|
popq %rbp
|
||||||
ret
|
ret
|
||||||
|
|
||||||
|
ASM_GLOBAL ASM_PFX(GasketEmuBlockIoReset)
|
||||||
|
ASM_PFX(GasketEmuBlockIoReset):
|
||||||
|
pushq %rbp // stack frame is for the debugger
|
||||||
|
movq %rsp, %rbp
|
||||||
|
|
||||||
|
pushq %rsi // %rsi & %rdi are volatile in Unix and callee-save in EFI ABI
|
||||||
|
pushq %rdi
|
||||||
|
|
||||||
|
movq %rcx, %rdi // Swizzle args
|
||||||
|
movq %rdx, %rsi
|
||||||
|
|
||||||
|
call ASM_PFX(EmuBlockIoReset)
|
||||||
|
|
||||||
|
popq %rdi // restore state
|
||||||
|
popq %rsi
|
||||||
|
popq %rbp
|
||||||
|
ret
|
||||||
|
|
||||||
|
|
||||||
|
ASM_GLOBAL ASM_PFX(GasketEmuBlockIoReadBlocks)
|
||||||
|
ASM_PFX(GasketEmuBlockIoReadBlocks):
|
||||||
|
pushq %rbp // stack frame is for the debugger
|
||||||
|
movq %rsp, %rbp
|
||||||
|
|
||||||
|
pushq %rsi // %rsi & %rdi are volatile in Unix and callee-save in EFI ABI
|
||||||
|
pushq %rdi
|
||||||
|
|
||||||
|
movq %rcx, %rdi // Swizzle args
|
||||||
|
movq %rdx, %rsi
|
||||||
|
movq %r8, %rdx
|
||||||
|
movq %r9, %rcx
|
||||||
|
movq 0x30(%rbp), %r8
|
||||||
|
movq 0x38(%rbp), %r9
|
||||||
|
|
||||||
|
call ASM_PFX(EmuBlockIoReadBlocks)
|
||||||
|
|
||||||
|
popq %rdi // restore state
|
||||||
|
popq %rsi
|
||||||
|
popq %rbp
|
||||||
|
ret
|
||||||
|
|
||||||
|
|
||||||
|
ASM_GLOBAL ASM_PFX(GasketEmuBlockIoWriteBlocks)
|
||||||
|
ASM_PFX(GasketEmuBlockIoWriteBlocks):
|
||||||
|
pushq %rbp // stack frame is for the debugger
|
||||||
|
movq %rsp, %rbp
|
||||||
|
|
||||||
|
pushq %rsi // %rsi & %rdi are volatile in Unix and callee-save in EFI ABI
|
||||||
|
pushq %rdi
|
||||||
|
|
||||||
|
movq %rcx, %rdi // Swizzle args
|
||||||
|
movq %rdx, %rsi
|
||||||
|
movq %r8, %rdx
|
||||||
|
movq %r9, %rcx
|
||||||
|
movq 0x30(%rbp), %r8
|
||||||
|
movq 0x38(%rbp), %r9
|
||||||
|
|
||||||
|
call ASM_PFX(EmuBlockIoWriteBlocks)
|
||||||
|
|
||||||
|
popq %rdi // restore state
|
||||||
|
popq %rsi
|
||||||
|
popq %rbp
|
||||||
|
ret
|
||||||
|
|
||||||
|
|
||||||
|
ASM_GLOBAL ASM_PFX(GasketEmuBlockIoFlushBlocks)
|
||||||
|
ASM_PFX(GasketEmuBlockIoFlushBlocks):
|
||||||
|
pushq %rbp // stack frame is for the debugger
|
||||||
|
movq %rsp, %rbp
|
||||||
|
|
||||||
|
pushq %rsi // %rsi & %rdi are volatile in Unix and callee-save in EFI ABI
|
||||||
|
pushq %rdi
|
||||||
|
|
||||||
|
movq %rcx, %rdi // Swizzle args
|
||||||
|
movq %rdx, %rsi
|
||||||
|
|
||||||
|
call ASM_PFX(EmuBlockIoFlushBlocks)
|
||||||
|
|
||||||
|
popq %rdi // restore state
|
||||||
|
popq %rsi
|
||||||
|
popq %rbp
|
||||||
|
ret
|
||||||
|
|
||||||
|
|
||||||
|
ASM_GLOBAL ASM_PFX(GasketEmuBlockIoCreateMapping)
|
||||||
|
ASM_PFX(GasketEmuBlockIoCreateMapping):
|
||||||
|
pushq %rbp // stack frame is for the debugger
|
||||||
|
movq %rsp, %rbp
|
||||||
|
|
||||||
|
pushq %rsi // %rsi & %rdi are volatile in Unix and callee-save in EFI ABI
|
||||||
|
pushq %rdi
|
||||||
|
|
||||||
|
movq %rcx, %rdi // Swizzle args
|
||||||
|
movq %rdx, %rsi
|
||||||
|
|
||||||
|
call ASM_PFX(EmuBlockIoCreateMapping)
|
||||||
|
|
||||||
|
popq %rdi // restore state
|
||||||
|
popq %rsi
|
||||||
|
popq %rbp
|
||||||
|
ret
|
||||||
|
|
||||||
|
|
||||||
|
ASM_GLOBAL ASM_PFX(GasketBlockIoThunkOpen)
|
||||||
|
ASM_PFX(GasketBlockIoThunkOpen):
|
||||||
|
pushq %rbp // stack frame is for the debugger
|
||||||
|
movq %rsp, %rbp
|
||||||
|
|
||||||
|
pushq %rsi // %rsi & %rdi are volatile in Unix and callee-save in EFI ABI
|
||||||
|
pushq %rdi
|
||||||
|
|
||||||
|
movq %rcx, %rdi // Swizzle args
|
||||||
|
|
||||||
|
call ASM_PFX(EmuBlockIoThunkOpen)
|
||||||
|
|
||||||
|
popq %rdi // restore state
|
||||||
|
popq %rsi
|
||||||
|
popq %rbp
|
||||||
|
ret
|
||||||
|
|
||||||
|
|
||||||
|
ASM_GLOBAL ASM_PFX(GasketBlockIoThunkClose)
|
||||||
|
ASM_PFX(GasketBlockIoThunkClose):
|
||||||
|
pushq %rbp // stack frame is for the debugger
|
||||||
|
movq %rsp, %rbp
|
||||||
|
|
||||||
|
pushq %rsi // %rsi & %rdi are volatile in Unix and callee-save in EFI ABI
|
||||||
|
pushq %rdi
|
||||||
|
|
||||||
|
movq %rcx, %rdi // Swizzle args
|
||||||
|
|
||||||
|
call ASM_PFX(EmuBlockIoThunkClose)
|
||||||
|
|
||||||
|
popq %rdi // restore state
|
||||||
|
popq %rsi
|
||||||
|
popq %rbp
|
||||||
|
ret
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -220,8 +220,7 @@
|
|||||||
|
|
||||||
gInOsEmuPkgTokenSpaceGuid.PcdEmuApCount|L"1"
|
gInOsEmuPkgTokenSpaceGuid.PcdEmuApCount|L"1"
|
||||||
|
|
||||||
gInOsEmuPkgTokenSpaceGuid.PcdEmuPhysicalDisk|L"E:RW;245760;512"
|
gInOsEmuPkgTokenSpaceGuid.PcdEmuVirtualDisk|L"disk.dmg:FW"
|
||||||
gInOsEmuPkgTokenSpaceGuid.PcdEmuVirtualDisk|L"FW;40960;512"
|
|
||||||
gInOsEmuPkgTokenSpaceGuid.PcdEmuGop|L"GOP Window"
|
gInOsEmuPkgTokenSpaceGuid.PcdEmuGop|L"GOP Window"
|
||||||
gInOsEmuPkgTokenSpaceGuid.PcdEmuFileSystem|L".!../../../../EdkShellBinPkg/Bin"
|
gInOsEmuPkgTokenSpaceGuid.PcdEmuFileSystem|L".!../../../../EdkShellBinPkg/Bin"
|
||||||
gInOsEmuPkgTokenSpaceGuid.PcdEmuSerialPort|L"/dev/ttyS0"
|
gInOsEmuPkgTokenSpaceGuid.PcdEmuSerialPort|L"/dev/ttyS0"
|
||||||
@ -358,20 +357,13 @@
|
|||||||
InOsEmuPkg/EmuSimpleFileSystemDxe/EmuSimpleFileSystemDxe.inf
|
InOsEmuPkg/EmuSimpleFileSystemDxe/EmuSimpleFileSystemDxe.inf
|
||||||
InOsEmuPkg/EmuBlockIoDxe/EmuBlockIoDxe.inf
|
InOsEmuPkg/EmuBlockIoDxe/EmuBlockIoDxe.inf
|
||||||
|
|
||||||
!if $(0)
|
|
||||||
UnixPkg/UnixSerialIoDxe/UnixSerialIo.inf
|
|
||||||
UnixPkg/UnixConsoleDxe/UnixConsole.inf
|
|
||||||
UnixPkg/UnixSimpleFileSystemDxe/UnixSimpleFileSystem.inf
|
|
||||||
!endif
|
|
||||||
|
|
||||||
MdeModulePkg/Application/HelloWorld/HelloWorld.inf
|
MdeModulePkg/Application/HelloWorld/HelloWorld.inf
|
||||||
|
|
||||||
#
|
#
|
||||||
# Network stack drivers
|
# Network stack drivers
|
||||||
#
|
#
|
||||||
##!if $(NETWORK_SUPPORT) & $(0)
|
!if $(NETWORK_SUPPORT)
|
||||||
!if $(0)
|
InOsEmuPkg/EmuSnpDxe/EmuSnpDxe.inf
|
||||||
UnixPkg/UnixSnpDxe/UnixSnpDxe.inf
|
|
||||||
!endif
|
!endif
|
||||||
MdeModulePkg/Universal/Network/DpcDxe/DpcDxe.inf
|
MdeModulePkg/Universal/Network/DpcDxe/DpcDxe.inf
|
||||||
MdeModulePkg/Universal/Network/ArpDxe/ArpDxe.inf
|
MdeModulePkg/Universal/Network/ArpDxe/ArpDxe.inf
|
||||||
|
@ -221,9 +221,8 @@ INF MdeModulePkg/Universal/SmbiosDxe/SmbiosDxe.inf
|
|||||||
INF InOsEmuPkg/EmuBusDriverDxe/EmuBusDriverDxe.inf
|
INF InOsEmuPkg/EmuBusDriverDxe/EmuBusDriverDxe.inf
|
||||||
INF InOsEmuPkg/EmuGopDxe/EmuGopDxe.inf
|
INF InOsEmuPkg/EmuGopDxe/EmuGopDxe.inf
|
||||||
INF InOsEmuPkg/EmuSimpleFileSystemDxe/EmuSimpleFileSystemDxe.inf
|
INF InOsEmuPkg/EmuSimpleFileSystemDxe/EmuSimpleFileSystemDxe.inf
|
||||||
|
INF InOsEmuPkg/EmuBlockIoDxe/EmuBlockIoDxe.inf
|
||||||
|
|
||||||
#INF UnixPkg/UnixBlockIoDxe/UnixBlockIo.inf
|
|
||||||
#INF UnixPkg/UnixSerialIoDxe/UnixSerialIo.inf
|
|
||||||
INF MdeModulePkg/Universal/HiiDatabaseDxe/HiiDatabaseDxe.inf
|
INF MdeModulePkg/Universal/HiiDatabaseDxe/HiiDatabaseDxe.inf
|
||||||
INF MdeModulePkg/Universal/SetupBrowserDxe/SetupBrowserDxe.inf
|
INF MdeModulePkg/Universal/SetupBrowserDxe/SetupBrowserDxe.inf
|
||||||
INF MdeModulePkg/Universal/PrintDxe/PrintDxe.inf
|
INF MdeModulePkg/Universal/PrintDxe/PrintDxe.inf
|
||||||
@ -235,7 +234,7 @@ INF MdeModulePkg/Application/HelloWorld/HelloWorld.inf
|
|||||||
# Network stack drivers
|
# Network stack drivers
|
||||||
#
|
#
|
||||||
!if $(NETWORK_SUPPORT)
|
!if $(NETWORK_SUPPORT)
|
||||||
#INF UnixPkg/UnixSnpDxe/UnixSnpDxe.inf
|
INF InOsEmuPkg/EmuSnpDxe/EmuSnpDxe.inf
|
||||||
!endif
|
!endif
|
||||||
INF MdeModulePkg/Universal/Network/DpcDxe/DpcDxe.inf
|
INF MdeModulePkg/Universal/Network/DpcDxe/DpcDxe.inf
|
||||||
INF MdeModulePkg/Universal/Network/ArpDxe/ArpDxe.inf
|
INF MdeModulePkg/Universal/Network/ArpDxe/ArpDxe.inf
|
||||||
|
@ -58,8 +58,8 @@ case `uname` in
|
|||||||
UNIXPKG_TOOLS=XCLANG
|
UNIXPKG_TOOLS=XCLANG
|
||||||
fi
|
fi
|
||||||
# NETWORK_SUPPORT="-D NETWORK_SUPPORT"
|
# NETWORK_SUPPORT="-D NETWORK_SUPPORT"
|
||||||
# BUILD_NEW_SHELL="-D BUILD_NEW_SHELL"
|
BUILD_NEW_SHELL="-D BUILD_NEW_SHELL"
|
||||||
# BUILD_FAT="-D BUILD_FAT"
|
BUILD_FAT="-D BUILD_FAT"
|
||||||
;;
|
;;
|
||||||
Linux*) TARGET_TOOLS=ELFGCC ;;
|
Linux*) TARGET_TOOLS=ELFGCC ;;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user