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/UnixThunk.h | |
parent | 92a4f6f3c7898c4d4bc54cdd0fa6734b1a352269 (diff) | |
download | edk2-b9c8e50e2054fc21c2029db309f813d03ccd6082.tar.gz edk2-b9c8e50e2054fc21c2029db309f813d03ccd6082.tar.bz2 edk2-b9c8e50e2054fc21c2029db309f813d03ccd6082.zip |
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/UnixThunk.h')
-rw-r--r-- | UnixPkg/Include/Protocol/UnixThunk.h | 93 |
1 files changed, 66 insertions, 27 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; |