mirror of https://github.com/acidanthera/audk.git
2nd wave of r11105 checkin.2nd wave of r11105 checkin.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@11106 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
parent
2ff79f2eda
commit
d0c3acd4c4
|
@ -1,7 +1,7 @@
|
||||||
/*++
|
/*++
|
||||||
|
|
||||||
Copyright (c) 2006 - 2009, Intel Corporation. All rights reserved.<BR>
|
Copyright (c) 2006 - 2009, Intel Corporation. All rights reserved.<BR>
|
||||||
Portions copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR>
|
Portions copyright (c) 2008 - 2010, Apple Inc. All rights reserved.<BR>
|
||||||
This program and the accompanying materials
|
This program and the accompanying materials
|
||||||
are licensed and made available under the terms and conditions of the BSD License
|
are licensed and made available under the terms and conditions of the BSD License
|
||||||
which accompanies this distribution. The full text of the license may be found at
|
which accompanies this distribution. The full text of the license may be found at
|
||||||
|
@ -20,21 +20,164 @@ Abstract:
|
||||||
|
|
||||||
#ifndef __UNIX_INCLUDE_H__
|
#ifndef __UNIX_INCLUDE_H__
|
||||||
#define __UNIX_INCLUDE_H__
|
#define __UNIX_INCLUDE_H__
|
||||||
|
|
||||||
|
// #include <sys/poll.h>
|
||||||
|
// #include <dirent.h>
|
||||||
|
|
||||||
|
//
|
||||||
|
// Name mangle to prevent build errors. I.e conflicts between EFI and OS
|
||||||
|
//
|
||||||
|
#define NTOHL _UNIX_EFI_NAME_MANGLE_NTOHL_
|
||||||
|
#define HTONL _UNIX_EFI_NAME_MANGLE_HTONL_
|
||||||
|
#define NTOHS _UNIX_EFI_NAME_MANGLE_NTOHS_
|
||||||
|
#define HTONS _UNIX_EFI_NAME_MANGLE_HTOHS_
|
||||||
|
#define B0 _UNIX_EFI_NAME_MANGLE_B0_
|
||||||
|
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
#include <sys/stat.h>
|
#include <sys/stat.h>
|
||||||
|
#include <sys/termios.h>
|
||||||
|
#include <sys/time.h>
|
||||||
|
|
||||||
|
#if __CYGWIN__
|
||||||
|
#include <sys/dirent.h>
|
||||||
|
#else
|
||||||
|
#include <sys/dir.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <poll.h>
|
||||||
|
#include <fcntl.h>
|
||||||
|
#include <time.h>
|
||||||
|
#include <signal.h>
|
||||||
|
#include <errno.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <sys/ioctl.h>
|
||||||
|
|
||||||
|
#include <sys/socket.h>
|
||||||
|
#include <netdb.h>
|
||||||
|
#include <netinet/in.h>
|
||||||
|
#include <net/if.h>
|
||||||
|
#include <net/if_dl.h>
|
||||||
|
#include <ifaddrs.h>
|
||||||
|
#include <net/bpf.h>
|
||||||
|
|
||||||
#ifdef __APPLE__
|
#ifdef __APPLE__
|
||||||
#include <sys/param.h>
|
#include <sys/param.h>
|
||||||
#include <sys/mount.h>
|
#include <sys/mount.h>
|
||||||
|
#define _XOPEN_SOURCE
|
||||||
|
#ifndef _Bool
|
||||||
|
#define _Bool char // for clang debug
|
||||||
|
#endif
|
||||||
#else
|
#else
|
||||||
|
#include <termio.h>
|
||||||
#include <sys/vfs.h>
|
#include <sys/vfs.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <sys/poll.h>
|
|
||||||
#include <dirent.h>
|
|
||||||
#include <errno.h>
|
|
||||||
#include <fcntl.h>
|
|
||||||
#include <time.h>
|
|
||||||
#include <utime.h>
|
#include <utime.h>
|
||||||
#include <unistd.h>
|
|
||||||
|
#if __APPLE__
|
||||||
|
//
|
||||||
|
// EFI packing is not compatible witht he default OS packing for struct stat.
|
||||||
|
// st_size is 64-bit but starts on a 32-bit offset in the structure. The compiler
|
||||||
|
// flags used to produce compatible EFI images, break struct stat
|
||||||
|
//
|
||||||
|
#ifdef MDE_CPU_IA32
|
||||||
|
#pragma pack(4)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined(__DARWIN_64_BIT_INO_T)
|
||||||
|
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
UINTN tv_sec; /* seconds */
|
||||||
|
UINTN tv_nsec; /* and nanoseconds */
|
||||||
|
} EFI_timespec;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
typedef struct stat_fix { \
|
||||||
|
dev_t st_dev; /* [XSI] ID of device containing file */
|
||||||
|
mode_t st_mode; /* [XSI] Mode of file (see below) */
|
||||||
|
nlink_t st_nlink; /* [XSI] Number of hard links */
|
||||||
|
__darwin_ino64_t st_ino; /* [XSI] File serial number */
|
||||||
|
uid_t st_uid; /* [XSI] User ID of the file */
|
||||||
|
gid_t st_gid; /* [XSI] Group ID of the file */
|
||||||
|
dev_t st_rdev; /* [XSI] Device ID */
|
||||||
|
|
||||||
|
// clang for X64 ABI follows Windows and a long is 32-bits
|
||||||
|
// this breaks system inlcude files so that is why we need
|
||||||
|
// to redefine timespec as EFI_timespec
|
||||||
|
EFI_timespec st_atimespec;
|
||||||
|
EFI_timespec st_mtimespec;
|
||||||
|
EFI_timespec st_ctimespec;
|
||||||
|
EFI_timespec st_birthtimespec;
|
||||||
|
|
||||||
|
off_t st_size; /* [XSI] file size, in bytes */
|
||||||
|
blkcnt_t st_blocks; /* [XSI] blocks allocated for file */
|
||||||
|
blksize_t st_blksize; /* [XSI] optimal blocksize for I/O */
|
||||||
|
__uint32_t st_flags; /* user defined flags for file */
|
||||||
|
__uint32_t st_gen; /* file generation number */
|
||||||
|
__int32_t st_lspare; /* RESERVED: DO NOT USE! */
|
||||||
|
__int64_t st_qspare[2]; /* RESERVED: DO NOT USE! */
|
||||||
|
} STAT_FIX;
|
||||||
|
|
||||||
|
#else /* !__DARWIN_64_BIT_INO_T */
|
||||||
|
|
||||||
|
typedef struct stat_fix {
|
||||||
|
dev_t st_dev; /* [XSI] ID of device containing file */
|
||||||
|
ino_t st_ino; /* [XSI] File serial number */
|
||||||
|
mode_t st_mode; /* [XSI] Mode of file (see below) */
|
||||||
|
nlink_t st_nlink; /* [XSI] Number of hard links */
|
||||||
|
uid_t st_uid; /* [XSI] User ID of the file */
|
||||||
|
gid_t st_gid; /* [XSI] Group ID of the file */
|
||||||
|
dev_t st_rdev; /* [XSI] Device ID */
|
||||||
|
#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
|
||||||
|
struct timespec st_atimespec; /* time of last access */
|
||||||
|
struct timespec st_mtimespec; /* time of last data modification */
|
||||||
|
struct timespec st_ctimespec; /* time of last status change */
|
||||||
|
#else
|
||||||
|
time_t st_atime; /* [XSI] Time of last access */
|
||||||
|
long st_atimensec; /* nsec of last access */
|
||||||
|
time_t st_mtime; /* [XSI] Last data modification time */
|
||||||
|
long st_mtimensec; /* last data modification nsec */
|
||||||
|
time_t st_ctime; /* [XSI] Time of last status change */
|
||||||
|
long st_ctimensec; /* nsec of last status change */
|
||||||
|
#endif
|
||||||
|
off_t st_size; /* [XSI] file size, in bytes */
|
||||||
|
blkcnt_t st_blocks; /* [XSI] blocks allocated for file */
|
||||||
|
blksize_t st_blksize; /* [XSI] optimal blocksize for I/O */
|
||||||
|
__uint32_t st_flags; /* user defined flags for file */
|
||||||
|
__uint32_t st_gen; /* file generation number */
|
||||||
|
__int32_t st_lspare; /* RESERVED: DO NOT USE! */
|
||||||
|
__int64_t st_qspare[2]; /* RESERVED: DO NOT USE! */
|
||||||
|
} STAT_FIX;
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef MDE_CPU_IA32
|
||||||
|
#pragma pack(4)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
typedef struct stat STAT_FIX;
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// Undo name mangling
|
||||||
|
//
|
||||||
|
#undef NTOHL
|
||||||
|
#undef HTONL
|
||||||
|
#undef NTOHS
|
||||||
|
#undef HTONS
|
||||||
|
#undef B0
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -29,142 +29,12 @@ Abstract:
|
||||||
#ifndef _UNIX_THUNK_H_
|
#ifndef _UNIX_THUNK_H_
|
||||||
#define _UNIX_THUNK_H_
|
#define _UNIX_THUNK_H_
|
||||||
|
|
||||||
#include <sys/termios.h>
|
#include <Common/UnixInclude.h>
|
||||||
#include <stdio.h>
|
|
||||||
#include <sys/time.h>
|
|
||||||
|
|
||||||
#if __CYGWIN__
|
|
||||||
#include <sys/dirent.h>
|
|
||||||
#else
|
|
||||||
#include <sys/dir.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <unistd.h>
|
|
||||||
#include <poll.h>
|
|
||||||
#include <sys/types.h>
|
|
||||||
#include <sys/stat.h>
|
|
||||||
#include <fcntl.h>
|
|
||||||
#include <time.h>
|
|
||||||
#include <signal.h>
|
|
||||||
#include <errno.h>
|
|
||||||
#include <string.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <sys/ioctl.h>
|
|
||||||
|
|
||||||
#include <sys/socket.h>
|
|
||||||
#include <netdb.h>
|
|
||||||
#include <netinet/in.h>
|
|
||||||
#include <net/if.h>
|
|
||||||
#include <net/if_dl.h>
|
|
||||||
#include <ifaddrs.h>
|
|
||||||
#include <net/bpf.h>
|
|
||||||
|
|
||||||
#ifdef __APPLE__
|
|
||||||
#include <sys/param.h>
|
|
||||||
#include <sys/mount.h>
|
|
||||||
#define _XOPEN_SOURCE
|
|
||||||
#ifndef _Bool
|
|
||||||
#define _Bool char // for clang debug
|
|
||||||
#endif
|
|
||||||
#else
|
|
||||||
#include <termio.h>
|
|
||||||
#include <sys/vfs.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <utime.h>
|
|
||||||
|
|
||||||
#include <Base.h>
|
#include <Base.h>
|
||||||
#include <Library/PeCoffLib.h>
|
#include <Library/PeCoffLib.h>
|
||||||
|
|
||||||
|
|
||||||
#if __APPLE__
|
|
||||||
//
|
|
||||||
// EFI packing is not compatible witht he default OS packing for struct stat.
|
|
||||||
// st_size is 64-bit but starts on a 32-bit offset in the structure. The compiler
|
|
||||||
// flags used to produce compatible EFI images, break struct stat
|
|
||||||
//
|
|
||||||
#ifdef MDE_CPU_IA32
|
|
||||||
#pragma pack(4)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(__DARWIN_64_BIT_INO_T)
|
|
||||||
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
UINTN tv_sec; /* seconds */
|
|
||||||
UINTN tv_nsec; /* and nanoseconds */
|
|
||||||
} EFI_timespec;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
typedef struct stat_fix { \
|
|
||||||
dev_t st_dev; /* [XSI] ID of device containing file */
|
|
||||||
mode_t st_mode; /* [XSI] Mode of file (see below) */
|
|
||||||
nlink_t st_nlink; /* [XSI] Number of hard links */
|
|
||||||
__darwin_ino64_t st_ino; /* [XSI] File serial number */
|
|
||||||
uid_t st_uid; /* [XSI] User ID of the file */
|
|
||||||
gid_t st_gid; /* [XSI] Group ID of the file */
|
|
||||||
dev_t st_rdev; /* [XSI] Device ID */
|
|
||||||
|
|
||||||
// clang for X64 ABI follows Windows and a long is 32-bits
|
|
||||||
// this breaks system inlcude files so that is why we need
|
|
||||||
// to redefine timespec as EFI_timespec
|
|
||||||
EFI_timespec st_atimespec;
|
|
||||||
EFI_timespec st_mtimespec;
|
|
||||||
EFI_timespec st_ctimespec;
|
|
||||||
EFI_timespec st_birthtimespec;
|
|
||||||
|
|
||||||
off_t st_size; /* [XSI] file size, in bytes */
|
|
||||||
blkcnt_t st_blocks; /* [XSI] blocks allocated for file */
|
|
||||||
blksize_t st_blksize; /* [XSI] optimal blocksize for I/O */
|
|
||||||
__uint32_t st_flags; /* user defined flags for file */
|
|
||||||
__uint32_t st_gen; /* file generation number */
|
|
||||||
__int32_t st_lspare; /* RESERVED: DO NOT USE! */
|
|
||||||
__int64_t st_qspare[2]; /* RESERVED: DO NOT USE! */
|
|
||||||
} STAT_FIX;
|
|
||||||
|
|
||||||
#else /* !__DARWIN_64_BIT_INO_T */
|
|
||||||
|
|
||||||
typedef struct stat_fix {
|
|
||||||
dev_t st_dev; /* [XSI] ID of device containing file */
|
|
||||||
ino_t st_ino; /* [XSI] File serial number */
|
|
||||||
mode_t st_mode; /* [XSI] Mode of file (see below) */
|
|
||||||
nlink_t st_nlink; /* [XSI] Number of hard links */
|
|
||||||
uid_t st_uid; /* [XSI] User ID of the file */
|
|
||||||
gid_t st_gid; /* [XSI] Group ID of the file */
|
|
||||||
dev_t st_rdev; /* [XSI] Device ID */
|
|
||||||
#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
|
|
||||||
struct timespec st_atimespec; /* time of last access */
|
|
||||||
struct timespec st_mtimespec; /* time of last data modification */
|
|
||||||
struct timespec st_ctimespec; /* time of last status change */
|
|
||||||
#else
|
|
||||||
time_t st_atime; /* [XSI] Time of last access */
|
|
||||||
long st_atimensec; /* nsec of last access */
|
|
||||||
time_t st_mtime; /* [XSI] Last data modification time */
|
|
||||||
long st_mtimensec; /* last data modification nsec */
|
|
||||||
time_t st_ctime; /* [XSI] Time of last status change */
|
|
||||||
long st_ctimensec; /* nsec of last status change */
|
|
||||||
#endif
|
|
||||||
off_t st_size; /* [XSI] file size, in bytes */
|
|
||||||
blkcnt_t st_blocks; /* [XSI] blocks allocated for file */
|
|
||||||
blksize_t st_blksize; /* [XSI] optimal blocksize for I/O */
|
|
||||||
__uint32_t st_flags; /* user defined flags for file */
|
|
||||||
__uint32_t st_gen; /* file generation number */
|
|
||||||
__int32_t st_lspare; /* RESERVED: DO NOT USE! */
|
|
||||||
__int64_t st_qspare[2]; /* RESERVED: DO NOT USE! */
|
|
||||||
} STAT_FIX;
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef MDE_CPU_IA32
|
|
||||||
#pragma pack(4)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#else
|
|
||||||
|
|
||||||
typedef struct stat STAT_FIX;
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define EFI_UNIX_THUNK_PROTOCOL_GUID \
|
#define EFI_UNIX_THUNK_PROTOCOL_GUID \
|
||||||
{ \
|
{ \
|
||||||
|
|
|
@ -30,31 +30,37 @@ ASM_GLOBAL ASM_PFX(mTransition)
|
||||||
ASM_GLOBAL ASM_PFX(InternalAsmThunk16)
|
ASM_GLOBAL ASM_PFX(InternalAsmThunk16)
|
||||||
|
|
||||||
# define the structure of IA32_REGS
|
# define the structure of IA32_REGS
|
||||||
.set _EDI, 0 #size 4
|
#define _EDI 0 // size 4
|
||||||
.set _ESI, 4 #size 4
|
#define _ESI 4 // size 4
|
||||||
.set _EBP, 8 #size 4
|
#define _EBP 8 // size 4
|
||||||
.set _ESP, 12 #size 4
|
#define _ESP 12 // size 4
|
||||||
.set _EBX, 16 #size 4
|
#define _EBX 16 // size 4
|
||||||
.set _EDX, 20 #size 4
|
#define _EDX 20 // size 4
|
||||||
.set _ECX, 24 #size 4
|
#define _ECX 24 // size 4
|
||||||
.set _EAX, 28 #size 4
|
#define _EAX 28 // size 4
|
||||||
.set _DS, 32 #size 2
|
#define _DS 32 // size 2
|
||||||
.set _ES, 34 #size 2
|
#define _ES 34 // size 2
|
||||||
.set _FS, 36 #size 2
|
#define _FS 36 // size 2
|
||||||
.set _GS, 38 #size 2
|
#define _GS 38 // size 2
|
||||||
.set _EFLAGS, 40 #size 8
|
#define _EFLAGS 40 // size 8
|
||||||
.set _EIP, 48 #size 4
|
#define _EIP 48 // size 4
|
||||||
.set _CS, 52 #size 2
|
#define _CS 52 // size 2
|
||||||
.set _SS, 54 #size 2
|
#define _SS 54 // size 2
|
||||||
.set IA32_REGS_SIZE, 56
|
#define IA32_REGS_SIZE 56
|
||||||
|
|
||||||
.data
|
.data
|
||||||
|
|
||||||
ASM_PFX(m16Size): .word ASM_PFX(InternalAsmThunk16) - ASM_PFX(m16Start)
|
.set L_m16SizeSym, ASM_PFX(InternalAsmThunk16) - ASM_PFX(m16Start)
|
||||||
ASM_PFX(mThunk16Attr): .word _ThunkAttr - ASM_PFX(m16Start)
|
.set L_mThunk16AttrSym, _ThunkAttr - ASM_PFX(m16Start)
|
||||||
ASM_PFX(m16Gdt): .word ASM_PFX(NullSeg) - ASM_PFX(m16Start)
|
.set L_m16GdtSym, ASM_PFX(NullSeg) - ASM_PFX(m16Start)
|
||||||
ASM_PFX(m16GdtrBase): .word _16GdtrBase - ASM_PFX(m16Start)
|
.set L_m16GdtrBaseSym, _16GdtrBase - ASM_PFX(m16Start)
|
||||||
ASM_PFX(mTransition): .word _EntryPoint - ASM_PFX(m16Start)
|
.set L_mTransitionSym, _EntryPoint - ASM_PFX(m16Start)
|
||||||
|
|
||||||
|
ASM_PFX(m16Size): .word L_m16SizeSym
|
||||||
|
ASM_PFX(mThunk16Attr): .word L_mThunk16AttrSym
|
||||||
|
ASM_PFX(m16Gdt): .word L_m16GdtSym
|
||||||
|
ASM_PFX(m16GdtrBase): .word L_m16GdtrBaseSym
|
||||||
|
ASM_PFX(mTransition): .word L_mTransitionSym
|
||||||
|
|
||||||
.text
|
.text
|
||||||
|
|
||||||
|
@ -118,7 +124,8 @@ L_2:
|
||||||
shlw $4,%ax
|
shlw $4,%ax
|
||||||
lea (L_64BitCode - L_Base)(%ebx, %eax), %ax
|
lea (L_64BitCode - L_Base)(%ebx, %eax), %ax
|
||||||
.byte 0x66,0x2e,0x89,0x87 # mov cs:[bx + (L_64Eip - L_Base)], eax
|
.byte 0x66,0x2e,0x89,0x87 # mov cs:[bx + (L_64Eip - L_Base)], eax
|
||||||
.word L_64Eip - L_Base
|
.set EipOffset, L_64Eip - L_Base
|
||||||
|
.word EipOffset
|
||||||
.byte 0x66,0xb8 # mov eax, imm32
|
.byte 0x66,0xb8 # mov eax, imm32
|
||||||
SavedCr4: .space 4
|
SavedCr4: .space 4
|
||||||
movq %rax, %cr4
|
movq %rax, %cr4
|
||||||
|
@ -147,7 +154,7 @@ SavedSp: .space 4 # restore stack
|
||||||
|
|
||||||
_EntryPoint: .long ASM_PFX(ToUserCode) - ASM_PFX(m16Start)
|
_EntryPoint: .long ASM_PFX(ToUserCode) - ASM_PFX(m16Start)
|
||||||
.word CODE16
|
.word CODE16
|
||||||
_16Gdtr: .word GDT_SIZE - 1
|
_16Gdtr: .word L_GDT_SIZE - 1
|
||||||
_16GdtrBase: .quad ASM_PFX(NullSeg)
|
_16GdtrBase: .quad ASM_PFX(NullSeg)
|
||||||
_16Idtr: .word 0x3ff
|
_16Idtr: .word 0x3ff
|
||||||
.long 0
|
.long 0
|
||||||
|
@ -220,7 +227,7 @@ ASM_PFX(_32Data):
|
||||||
.byte 0xcf # 16-bit segment, 4GB limit
|
.byte 0xcf # 16-bit segment, 4GB limit
|
||||||
.byte 0
|
.byte 0
|
||||||
|
|
||||||
.set GDT_SIZE, . - ASM_PFX(NullSeg)
|
.set L_GDT_SIZE, . - ASM_PFX(NullSeg)
|
||||||
|
|
||||||
#------------------------------------------------------------------------------
|
#------------------------------------------------------------------------------
|
||||||
# IA32_REGISTER_SET *
|
# IA32_REGISTER_SET *
|
||||||
|
@ -301,7 +308,8 @@ ASM_PFX(InternalAsmThunk16):
|
||||||
movw %r8w, (SavedCs - SavedCr4)(%rcx)
|
movw %r8w, (SavedCs - SavedCr4)(%rcx)
|
||||||
movl %esp, (SavedSp - SavedCr4)(%rcx)
|
movl %esp, (SavedSp - SavedCr4)(%rcx)
|
||||||
.byte 0xff, 0x69 # jmp (_EntryPoint - SavedCr4)(%rcx)
|
.byte 0xff, 0x69 # jmp (_EntryPoint - SavedCr4)(%rcx)
|
||||||
.byte _EntryPoint - SavedCr4
|
.set EntryPointSavedCr4Offset, _EntryPoint - SavedCr4
|
||||||
|
.byte EntryPointSavedCr4Offset
|
||||||
L_RetFromRealMode:
|
L_RetFromRealMode:
|
||||||
popfq
|
popfq
|
||||||
lgdt 0x60(%rsp) # restore protected mode GDTR
|
lgdt 0x60(%rsp) # restore protected mode GDTR
|
||||||
|
|
|
@ -11,11 +11,10 @@ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||||
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||||
|
|
||||||
--*/
|
--*/
|
||||||
|
#include <Common/UnixInclude.h>
|
||||||
|
|
||||||
#include <sys/ipc.h>
|
#include <sys/ipc.h>
|
||||||
#include <sys/shm.h>
|
#include <sys/shm.h>
|
||||||
#include <stdio.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
|
|
||||||
#include <PiPei.h>
|
#include <PiPei.h>
|
||||||
#include <Protocol/SimplePointer.h>
|
#include <Protocol/SimplePointer.h>
|
||||||
|
|
|
@ -108,7 +108,8 @@ ConvertBaud2Unix (
|
||||||
{
|
{
|
||||||
switch (BaudRate) {
|
switch (BaudRate) {
|
||||||
case 0:
|
case 0:
|
||||||
return B0;
|
return 0; // Don't use B0 as it is also used in EFI #includes as a name so termios.h #define
|
||||||
|
// can break the build.
|
||||||
case 50:
|
case 50:
|
||||||
return B50;
|
return B50;
|
||||||
case 75:
|
case 75:
|
||||||
|
|
|
@ -21,20 +21,10 @@ Abstract:
|
||||||
|
|
||||||
#ifndef _UNIXPKG_SERIAL_IO_
|
#ifndef _UNIXPKG_SERIAL_IO_
|
||||||
#define _UNIXPKG_SERIAL_IO_
|
#define _UNIXPKG_SERIAL_IO_
|
||||||
#include <sys/types.h>
|
|
||||||
#include <sys/stat.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
|
|
||||||
#ifdef __APPLE__
|
#include <Common/UnixInclude.h>
|
||||||
#else
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <termio.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <fcntl.h>
|
#include <Uefi.h>
|
||||||
#include <errno.h>
|
|
||||||
|
|
||||||
#include "Uefi.h"
|
|
||||||
#include <Protocol/SerialIo.h>
|
#include <Protocol/SerialIo.h>
|
||||||
#include <Protocol/DevicePath.h>
|
#include <Protocol/DevicePath.h>
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue