diff options
author | andrewfish <andrewfish@6f19259b-4bc3-4df7-8a09-765794883524> | 2010-07-22 21:21:38 +0000 |
---|---|---|
committer | andrewfish <andrewfish@6f19259b-4bc3-4df7-8a09-765794883524> | 2010-07-22 21:21:38 +0000 |
commit | b9c8e50e2054fc21c2029db309f813d03ccd6082 (patch) | |
tree | 63828888a832dc738d34a430be7e592baf4ee65d /UnixPkg/Include/Protocol | |
parent | 92a4f6f3c7898c4d4bc54cdd0fa6734b1a352269 (diff) | |
download | edk2-platforms-b9c8e50e2054fc21c2029db309f813d03ccd6082.tar.xz |
Port UnixPkg to also support X64. Currently only supports Unix x86_64 ABI. In the future we can make Sec support x86_64 ABI and the rest of the code support X64 EFI ABI. This will require assembly gaskets to fix the calling convention differences. I currently have noop gaskets in place for x86_64 ABI. This has only been tested on OS X 10.6.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@10685 6f19259b-4bc3-4df7-8a09-765794883524
Diffstat (limited to 'UnixPkg/Include/Protocol')
-rw-r--r-- | UnixPkg/Include/Protocol/UnixThunk.h | 93 | ||||
-rw-r--r-- | UnixPkg/Include/Protocol/UnixUgaIo.h | 31 |
2 files changed, 86 insertions, 38 deletions
diff --git a/UnixPkg/Include/Protocol/UnixThunk.h b/UnixPkg/Include/Protocol/UnixThunk.h index 4141d35662..7b4630bb0b 100644 --- a/UnixPkg/Include/Protocol/UnixThunk.h +++ b/UnixPkg/Include/Protocol/UnixThunk.h @@ -74,7 +74,9 @@ Abstract: // 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 __DARWIN_64_BIT_INO_T @@ -128,7 +130,10 @@ typedef struct stat_fix { } STAT_FIX; #endif -#pragma pack() + +#ifdef MDE_CPU_IA32 +#pragma pack(4) +#endif #else @@ -155,40 +160,75 @@ VOID typedef VOID -(*UnixSetTimer) (UINT64 PeriodMs, VOID (*CallBack)(UINT64 DeltaMs)); +(*UnixSetTimer) ( + UINT64 PeriodMs, + VOID (*CallBack)(UINT64 DeltaMs) + ); + typedef VOID -(*UnixGetLocalTime) (EFI_TIME *Time); +(*UnixGetLocalTime) ( + EFI_TIME *Time + ); + typedef struct tm * -(*UnixGmTime)(const time_t *timep); +(*UnixGmTime)( + const time_t *timep + ); + typedef long -(*UnixGetTimeZone)(void); +(*UnixGetTimeZone)( + void + ); + typedef int -(*UnixGetDayLight)(void); +(*UnixGetDayLight)( + void + ); + typedef int -(*UnixPoll)(struct pollfd *pfd, int nfds, int timeout); +(*UnixPoll)( + struct pollfd *pfd, + unsigned int nfds, + int timeout + ); + typedef -int -(*UnixRead) (int fd, void *buf, int count); +long +(*UnixRead) ( + int fd, + void *buf, + int count + ); + typedef -int -(*UnixWrite) (int fd, const void *buf, int count); +long +(*UnixWrite) ( + int fd, + const void *buf, + int count + ); + typedef char * (*UnixGetenv) (const char *var); + typedef int (*UnixOpen) (const char *name, int flags, int mode); + typedef off_t (*UnixSeek) (int fd, off_t off, int whence); + typedef int (*UnixFtruncate) (int fd, long int len); + typedef int (*UnixClose) (int fd); @@ -196,45 +236,59 @@ int typedef int (*UnixMkdir)(const char *pathname, mode_t mode); + typedef int (*UnixRmDir)(const char *pathname); + typedef int (*UnixUnLink)(const char *pathname); + typedef int (*UnixGetErrno)(VOID); + typedef DIR * (*UnixOpenDir)(const char *pathname); + typedef void (*UnixRewindDir)(DIR *dir); + typedef struct dirent * (*UnixReadDir)(DIR *dir); + typedef int (*UnixCloseDir)(DIR *dir); + typedef int (*UnixStat)(const char *path, STAT_FIX *buf); + typedef int (*UnixStatFs)(const char *path, struct statfs *buf); + typedef int (*UnixRename)(const char *oldpath, const char *newpath); + typedef time_t (*UnixMkTime)(struct tm *tm); + typedef int (*UnixFSync)(int fd); + typedef int (*UnixChmod)(const char *path, mode_t mode); + typedef int (*UnixUTime)(const char *filename, const struct utimbuf *buf); @@ -282,21 +336,9 @@ int (*UnixTcsetattr) (int __fd, int __optional_actions, __const struct termios *__termios_p); -typedef -VOID * -(*UnixDlopen) (const char *FileName, int Flag); - -typedef -char * -(*UnixDlerror) (VOID); - -typedef -VOID * -(*UnixDlsym) (VOID* Handle, const char* Symbol); - // -// Work functions to enable source level debug in the emulator +// Worker functions to enable source level debug in the emulator // typedef @@ -364,9 +406,6 @@ typedef struct _EFI_UNIX_THUNK_PROTOCOL { UnixCfsetospeed Cfsetospeed; UnixTcgetattr Tcgetattr; UnixTcsetattr Tcsetattr; - UnixDlopen Dlopen; - UnixDlerror Dlerror; - UnixDlsym Dlsym; UnixPeCoffGetEntryPoint PeCoffGetEntryPoint; UnixPeCoffRelocateImageExtraAction PeCoffRelocateImageExtraAction; UnixPeCoffLoaderUnloadImageExtraAction PeCoffUnloadImageExtraAction; diff --git a/UnixPkg/Include/Protocol/UnixUgaIo.h b/UnixPkg/Include/Protocol/UnixUgaIo.h index 4a4798234c..75923f34b9 100644 --- a/UnixPkg/Include/Protocol/UnixUgaIo.h +++ b/UnixPkg/Include/Protocol/UnixUgaIo.h @@ -20,33 +20,41 @@ Abstract: #ifndef _UNIX_UGA_IO_H_ #define _UNIX_UGA_IO_H_ -#define EFI_UNIX_UGA_IO_PROTOCOL_GUID \ - { \ - 0xf2e5e2c6, 0x8985, 0x11db, {0xa1, 0x91, 0x00, 0x40, 0xd0, 0x2b, 0x18, 0x35 } \ - } +#define EFI_UNIX_UGA_IO_PROTOCOL_GUID {0xf2e5e2c6, 0x8985, 0x11db, {0xa1, 0x91, 0x00, 0x40, 0xd0, 0x2b, 0x18, 0x35 } } -struct _EFI_UNIX_UGA_IO_PROTOCOL; typedef struct _EFI_UNIX_UGA_IO_PROTOCOL EFI_UNIX_UGA_IO_PROTOCOL; typedef EFI_STATUS -(*UGAClose)(EFI_UNIX_UGA_IO_PROTOCOL *Uga); +(*UGAClose)( + EFI_UNIX_UGA_IO_PROTOCOL *Uga + ); typedef EFI_STATUS -(*UGASize)(EFI_UNIX_UGA_IO_PROTOCOL *Uga, UINT32 Width, UINT32 Height); +(*UGASize)( + EFI_UNIX_UGA_IO_PROTOCOL *Uga, + UINT32 Width, + UINT32 Height + ); typedef EFI_STATUS -(*UGACheckKey)(EFI_UNIX_UGA_IO_PROTOCOL *Uga); +(*UGACheckKey)( + EFI_UNIX_UGA_IO_PROTOCOL *Uga + ); typedef EFI_STATUS -(*UGAGetKey)(EFI_UNIX_UGA_IO_PROTOCOL *Uga, EFI_INPUT_KEY *key); +(*UGAGetKey)( + EFI_UNIX_UGA_IO_PROTOCOL *Uga, + EFI_INPUT_KEY *key + ); typedef EFI_STATUS -(*UGABlt)(EFI_UNIX_UGA_IO_PROTOCOL *Uga, +(*UGABlt)( + IN EFI_UNIX_UGA_IO_PROTOCOL *Uga, IN EFI_UGA_PIXEL *BltBuffer OPTIONAL, IN EFI_UGA_BLT_OPERATION BltOperation, IN UINTN SourceX, @@ -55,7 +63,8 @@ EFI_STATUS IN UINTN DestinationY, IN UINTN Width, IN UINTN Height, - IN UINTN Delta OPTIONAL); + IN UINTN Delta OPTIONAL + ); struct _EFI_UNIX_UGA_IO_PROTOCOL { VOID *Private; |