Add BlockIO support to the emulator, still needs testing. Also update Emulator start code to only pass 2 args in place of 3. The 3rd argument is not needed. Still need a function as the BaseLib functoin does not have the correct calling conventions. Cleanup build script for binary shell case.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@11718 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
1053
InOsEmuPkg/Unix/Sec/BlockIo.c
Normal file
1053
InOsEmuPkg/Unix/Sec/BlockIo.c
Normal file
File diff suppressed because it is too large
Load Diff
@@ -458,7 +458,6 @@ SecLoadFromCore (
|
||||
(SWITCH_STACK_ENTRY_POINT) (UINTN) PeiCoreEntryPoint,
|
||||
SecCoreData,
|
||||
(VOID *)gPpiList,
|
||||
NULL,
|
||||
TopOfStack
|
||||
);
|
||||
//
|
||||
|
@@ -283,7 +283,6 @@ PeiSwitchStacks (
|
||||
IN SWITCH_STACK_ENTRY_POINT EntryPoint,
|
||||
IN VOID *Context1, OPTIONAL
|
||||
IN VOID *Context2, OPTIONAL
|
||||
IN VOID *Context3, OPTIONAL
|
||||
IN VOID *NewStack
|
||||
);
|
||||
|
||||
|
@@ -16,7 +16,7 @@
|
||||
#------------------------------------------------------------------------------
|
||||
# Routine Description:
|
||||
#
|
||||
# Routine for switching stacks with 3 parameters EFI ABI
|
||||
# Routine for switching stacks with 2 parameters EFI ABI
|
||||
# Convert UNIX to EFI ABI
|
||||
#
|
||||
# Arguments:
|
||||
@@ -24,8 +24,7 @@
|
||||
# (rdi) EntryPoint - Entry point with new stack.
|
||||
# (rsi) Context1 - Parameter1 for entry point. (rcx)
|
||||
# (rdx) Context2 - Parameter2 for entry point. (rdx)
|
||||
# (rcx) Context3 - Parameter3 for entry point. (r8)
|
||||
# (r8) NewStack - The pointer to new stack.
|
||||
# (rcx) NewStack - The pointer to new stack.
|
||||
#
|
||||
# Returns:
|
||||
#
|
||||
@@ -37,11 +36,11 @@ ASM_PFX(PeiSwitchStacks):
|
||||
pushq $0 // tells gdb to stop unwinding frame
|
||||
movq %rsp, %rbp
|
||||
|
||||
movq %r8, %rsp
|
||||
movq %rcx, %rsp // update stack pointer
|
||||
|
||||
movq %rdi, %rax
|
||||
movq %rsi, %rcx
|
||||
movq %rcx, %r8
|
||||
movq %rdi, %rax // entry point to %rax
|
||||
movq %rsi, %rcx // Adjust Context1
|
||||
// Context2 already in the rigth spot
|
||||
|
||||
#
|
||||
# Reserve space for register parameters (rcx, rdx, r8 & r9) on the stack,
|
||||
|
@@ -356,9 +356,9 @@
|
||||
InOsEmuPkg/EmuBusDriverDxe/EmuBusDriverDxe.inf
|
||||
InOsEmuPkg/EmuGopDxe/EmuGopDxe.inf
|
||||
InOsEmuPkg/EmuSimpleFileSystemDxe/EmuSimpleFileSystemDxe.inf
|
||||
InOsEmuPkg/EmuBlockIoDxe/EmuBlockIoDxe.inf
|
||||
|
||||
!if $(0)
|
||||
UnixPkg/UnixBlockIoDxe/UnixBlockIo.inf
|
||||
UnixPkg/UnixSerialIoDxe/UnixSerialIo.inf
|
||||
UnixPkg/UnixConsoleDxe/UnixConsole.inf
|
||||
UnixPkg/UnixSimpleFileSystemDxe/UnixSimpleFileSystem.inf
|
||||
|
@@ -253,24 +253,18 @@ INF MdeModulePkg/Universal/Network/Udp4Dxe/Udp4Dxe.inf
|
||||
INF FatPkg/EnhancedFatDxe/Fat.inf
|
||||
!else
|
||||
# Used checked in Visual Studio binaries
|
||||
INF RuleOverride = BINARY USE = X64 FatBinPkg/EnhancedFatDxe/Fat.inf
|
||||
FILE DRIVER = 961578FE-B6B7-44c3-AF35-6BC705CD2B1F {
|
||||
SECTION PE32 = FatBinPkg/EnhancedFatDxe/X64/Fat.efi
|
||||
}
|
||||
!endif
|
||||
|
||||
!if $(BUILD_NEW_SHELL)
|
||||
INF ShellPkg/Application/Shell/Shell.inf
|
||||
!else
|
||||
!if $(USE_NEW_SHELL)
|
||||
INF ShellBinPkg/UefiShell/UefiShell.inf
|
||||
!else
|
||||
FILE APPLICATION = PCD(gEfiIntelFrameworkModulePkgTokenSpaceGuid.PcdShellFile) {
|
||||
!if $(BUILD_OLD_SHELL)
|
||||
SECTION PE32 = Build/GccShellPkg/DEBUG_XCLANG/X64/ShellFull.efi
|
||||
!else
|
||||
SECTION PE32 = EdkShellBinPkg/FullShell/X64/Shell_Full.efi
|
||||
!endif
|
||||
SECTION UI = "Shell"
|
||||
}
|
||||
!endif
|
||||
# Used checked in Visual Studio binaries
|
||||
FILE APPLICATION = PCD(gEfiIntelFrameworkModulePkgTokenSpaceGuid.PcdShellFile) {
|
||||
SECTION PE32 = EdkShellBinPkg/FullShell/X64/Shell_Full.efi
|
||||
}
|
||||
!endif
|
||||
|
||||
FILE FREEFORM = PCD(gEfiIntelFrameworkModulePkgTokenSpaceGuid.PcdLogoFile) {
|
||||
|
@@ -43,7 +43,8 @@ fi
|
||||
TARGET_TOOLS=MYTOOLS
|
||||
UNIXPKG_TOOLS=GCC44
|
||||
NETWORK_SUPPORT=
|
||||
COMPILE_BINS=
|
||||
BUILD_NEW_SHELL=
|
||||
BUILD_FAT=
|
||||
case `uname` in
|
||||
CYGWIN*) echo Cygwin not fully supported yet. ;;
|
||||
Darwin*)
|
||||
@@ -56,8 +57,9 @@ case `uname` in
|
||||
TARGET_TOOLS=XCODE32
|
||||
UNIXPKG_TOOLS=XCLANG
|
||||
fi
|
||||
NETWORK_SUPPORT="-D NETWORK_SUPPORT"
|
||||
COMPILE_BINS="-D COMPILE_BINS"
|
||||
# NETWORK_SUPPORT="-D NETWORK_SUPPORT"
|
||||
# BUILD_NEW_SHELL="-D BUILD_NEW_SHELL"
|
||||
# BUILD_FAT="-D BUILD_FAT"
|
||||
;;
|
||||
Linux*) TARGET_TOOLS=ELFGCC ;;
|
||||
|
||||
@@ -112,11 +114,6 @@ do
|
||||
exit $?
|
||||
fi
|
||||
|
||||
if [[ $arg == shell ]]; then
|
||||
build -p $WORKSPACE/ShellPkg/ShellPkg.dsc -a X64 -t $UNIXPKG_TOOLS -n 3 $2 $3 $4 $5 $6 $7 $8
|
||||
cp Build/Shell/DEBUG_$UNIXPKG_TOOLS/X64/Shell.efi ShellBinPkg/UefiShell/X64/Shell.efi
|
||||
exit $?
|
||||
fi
|
||||
done
|
||||
|
||||
|
||||
@@ -126,7 +123,7 @@ done
|
||||
echo $PATH
|
||||
echo `which build`
|
||||
build -p $WORKSPACE/InOsEmuPkg/Unix/UnixX64.dsc -a X64 -t $TARGET_TOOLS -D SEC_ONLY -n 3 $1 $2 $3 $4 $5 $6 $7 $8 modules
|
||||
build -p $WORKSPACE/InOsEmuPkg/Unix/UnixX64.dsc -a X64 -t $UNIXPKG_TOOLS $NETWORK_SUPPORT -n 3 $1 $2 $3 $4 $5 $6 $7 $8
|
||||
build -p $WORKSPACE/InOsEmuPkg/Unix/UnixX64.dsc -a X64 -t $UNIXPKG_TOOLS $NETWORK_SUPPORT $BUILD_NEW_SHELL $BUILD_FAT -n 3 $1 $2 $3 $4 $5 $6 $7 $8
|
||||
cp $WORKSPACE/Build/EmuUnixX64/DEBUG_"$TARGET_TOOLS"/X64/SecMain $WORKSPACE/Build/EmuUnixX64/DEBUG_"$UNIXPKG_TOOLS"/X64
|
||||
exit $?
|
||||
|
||||
|
Reference in New Issue
Block a user