Port UnixPkg to also support X64. Currently only supports Unix x86_64 ABI. In the...
authorandrewfish <andrewfish@6f19259b-4bc3-4df7-8a09-765794883524>
Thu, 22 Jul 2010 21:21:38 +0000 (21:21 +0000)
committerandrewfish <andrewfish@6f19259b-4bc3-4df7-8a09-765794883524>
Thu, 22 Jul 2010 21:21:38 +0000 (21:21 +0000)
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@10685 6f19259b-4bc3-4df7-8a09-765794883524

22 files changed:
UnixPkg/Include/Protocol/UnixThunk.h
UnixPkg/Include/Protocol/UnixUgaIo.h
UnixPkg/Sec/Gasket.c
UnixPkg/Sec/Gasket.h
UnixPkg/Sec/Ia32/Gasket.S
UnixPkg/Sec/Ia32/GasketTemplate.c
UnixPkg/Sec/SecMain.c
UnixPkg/Sec/UgaX11.c
UnixPkg/Sec/UnixThunk.c
UnixPkg/Sec/X64/Gasket.S
UnixPkg/Sec/X64/GasketTemplate.c [new file with mode: 0644]
UnixPkg/UnixFirmwareVolumePei/UnixFwh.c
UnixPkg/UnixFlashMapPei/FlashMap.c
UnixPkg/UnixFlashMapPei/FlashMap.inf
UnixPkg/UnixPkg.dec
UnixPkg/UnixPkg.dsc
UnixPkg/UnixPkg.fdf
UnixPkg/UnixPkgX64.dsc [new file with mode: 0644]
UnixPkg/UnixPkgX64.fdf [new file with mode: 0644]
UnixPkg/Xcode/xcode_project64/xcode_project.xcodeproj/default.pbxuser
UnixPkg/build.sh
UnixPkg/build64.sh

index 4141d35..7b4630b 100644 (file)
@@ -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;
index 4a47982..75923f3 100644 (file)
@@ -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;
index 9dd5bb2..3d5db3b 100644 (file)
@@ -74,20 +74,20 @@ GasketGetDayLight (void)
 \r
 \r
 int \r
-Gasketpoll (struct pollfd *pfd, int nfds, int timeout)\r
+Gasketpoll (struct pollfd *pfd, unsigned int nfds, int timeout)\r
 {\r
   return GasketUintnUintnUintn (poll, (UINTN)pfd, nfds, timeout);\r
 }\r
 \r
 \r
-int \r
+long\r
 Gasketread (int fd, void *buf, int count)\r
 {\r
   return  GasketUintnUintnUintn (read, fd, (UINTN)buf, count);\r
 }\r
 \r
 \r
-int \r
+long\r
 Gasketwrite (int fd, const void *buf, int count)\r
 {\r
   return  GasketUintnUintnUintn (write, fd, (UINTN)buf, count);\r
@@ -168,10 +168,11 @@ Gasketopendir (const char *pathname)
 }\r
 \r
 \r
-void *\r
+void \r
 Gasketrewinddir (DIR *dir)\r
 {\r
-  return (void *)(UINTN)GasketUintn (rewinddir, (UINTN)dir);\r
+  GasketUintn (rewinddir, (UINTN)dir);\r
+  return;\r
 }\r
 \r
 \r
@@ -372,7 +373,7 @@ GasketUnixPeCoffRelocateImageExtraAction (
 \r
 \r
 VOID\r
-GasketPeCoffLoaderUnloadImageExtraAction (\r
+GasketUnixPeCoffUnloadImageExtraAction (\r
   IN OUT PE_COFF_LOADER_IMAGE_CONTEXT  *ImageContext\r
   )\r
 {\r
index f46a663..de3cfdf 100644 (file)
@@ -33,9 +33,9 @@ void GasketGetLocalTime (EFI_TIME *Time);
 struct tm *Gasketgmtime (const time_t *clock);\r
 long GasketGetTimeZone (void);\r
 int GasketGetDayLight (void);\r
-int Gasketpoll (struct pollfd *pfd, int nfds, int timeout);\r
-int Gasketread (int fd, void *buf, int count);\r
-int Gasketwrite (int fd, const void *buf, int count);\r
+int Gasketpoll (struct pollfd *pfd, unsigned int nfds, int timeout);\r
+long Gasketread (int fd, void *buf, int count);\r
+long Gasketwrite (int fd, const void *buf, int count);\r
 char *Gasketgetenv (const char *name);\r
 int Gasketopen (const char *name, int flags, int mode);\r
 off_t Gasketlseek (int fd, off_t off, int whence);\r
@@ -46,7 +46,7 @@ int Gasketrmdir (const char *pathname);
 int Gasketunlink (const char *pathname);\r
 int GasketGetErrno (void);\r
 DIR *Gasketopendir (const char *pathname);\r
-void *Gasketrewinddir (DIR *dir);\r
+void Gasketrewinddir (DIR *dir);\r
 struct dirent *Gasketreaddir (DIR *dir);\r
 int Gasketclosedir (DIR *dir);\r
 int Gasketstat (const char *path, STAT_FIX *buf);\r
@@ -88,21 +88,22 @@ GasketUnixPeCoffRelocateImageExtraAction (
   );\r
 \r
 VOID\r
-GasketPeCoffLoaderUnloadImageExtraAction (\r
+GasketUnixPeCoffUnloadImageExtraAction (\r
   IN OUT PE_COFF_LOADER_IMAGE_CONTEXT  *ImageContext\r
   );\r
   \r
 \r
-int GasketVoid (void *api);\r
-int GasketUintn (void *api, UINTN a);\r
-int GasketUintnUintn (void *api, UINTN a, UINTN b);\r
-int GasketUintnUintnUintn (void *api, UINTN a, UINTN b, UINTN c);\r
-int GasketUintnUintnUintnUintn (void *api, UINTN a, UINTN b, UINTN c, UINTN d);\r
-int GasketUintn10Args (void *api, UINTN a, UINTN b, UINTN c, UINTN d, UINTN e, UINTN f, UINTN g, UINTN h, UINTN i, UINTN j);\r
-int GasketUint64Uintn (void *api, UINT64 a, UINTN b);\r
+UINTN GasketVoid (void *api);\r
+UINTN GasketUintn (void *api, UINTN a);\r
+UINTN GasketUintnUintn (void *api, UINTN a, UINTN b);\r
+UINTN GasketUintnUintnUintn (void *api, UINTN a, UINTN b, UINTN c);\r
+UINTN GasketUintnUintnUintnUintn (void *api, UINTN a, UINTN b, UINTN c, UINTN d);\r
+UINTN GasketUintn10Args (void *api, UINTN a, UINTN b, UINTN c, UINTN d, UINTN e, UINTN f, UINTN g, UINTN h, UINTN i, UINTN j);\r
+UINTN GasketUint64Uintn (void *api, UINT64 a, UINTN b);\r
 UINT64 GasketUintnUint64Uintn (void *api, UINTN a, UINT64 b, UINTN c);\r
-int GasketUintnUint16 (void *api, UINTN a, UINT16 b);\r
+UINTN GasketUintnUint16 (void *api, UINTN a, UINT16 b);\r
 \r
+UINTN ReverseGasketUint64 (void *api, UINT64 a);\r
 \r
 //\r
 // Gasket functions for EFI_UNIX_UGA_IO_PROTOCOL\r
index f9a2b53..caeabf8 100644 (file)
@@ -16,7 +16,7 @@
 # on Leopard and _stat$INDOE64 on Snow Leopard. That is why we pass stat()\r
 # into one of these gaskets from C code.\r
 #\r
-# Copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR>\r
+# Copyright (c) 2008 - 2010, Apple Inc. All rights reserved.<BR>\r
 # This program and the accompanying materials\r
 # are licensed and made available under the terms and conditions of the BSD License\r
 # which accompanies this distribution.  The full text of the license may be found at\r
@@ -235,7 +235,23 @@ _GasketUintnUint16:
   call  *%eax\r
   leave\r
   ret\r
-\r
+.globl _ReverseGasketUint64\r
+_ReverseGasketUint64:\r
+       pushl   %ebp\r
+       movl    %esp, %ebp\r
+       subl    $56, %esp\r
+       movl    12(%ebp), %eax\r
+       movl    %eax, -32(%ebp)\r
+       movl    16(%ebp), %eax\r
+       movl    %eax, -28(%ebp)\r
+       movl    8(%ebp), %eax\r
+       movl    %eax, -12(%ebp)\r
+       movl    -32(%ebp), %eax\r
+       movl    %eax, (%esp)\r
+       movl    -12(%ebp), %eax\r
+       call    *%eax\r
+       leave\r
+       ret\r
   .subsections_via_symbols\r
   \r
   #endif\r
index c9824de..8ff801d 100644 (file)
@@ -138,5 +138,14 @@ GasketUintnUint16 (void *api, UINTN a, UINT16 b)
   return func (a, b);
 }
 
+void
+ReverseGasketUint64 (void *api, UINT64 a)
+{
+  GASKET_UINTN func;
+  
+  func = (GASKET_UINTN)api;
+  func (a);
+  return;
+}
 
 
index b232f5f..4d66bfa 100644 (file)
@@ -827,7 +827,7 @@ Returns:
     // If the memory buffer could not be allocated at the FD build address
     // the Fixup is the difference.
     //
-    *FixUp = *FdBase - PcdGet32 (PcdUnixFdBaseAddress);
+    *FixUp = *FdBase - PcdGet64 (PcdUnixFdBaseAddress);
   }
 
   return EFI_SUCCESS;
index 648d8c2..f43c7b4 100644 (file)
@@ -373,9 +373,10 @@ UgaCheckKey(EFI_UNIX_UGA_IO_PROTOCOL *UgaIo)
 {
   UGA_IO_PRIVATE *drv = (UGA_IO_PRIVATE *)UgaIo;
   HandleEvents(drv);
-  if (drv->key_count != 0)
+  
+  if (drv->key_count != 0) {
     return EFI_SUCCESS;
-  else {
+  else {
     /* EFI is certainly polling.  Be CPU-friendly.  */
     msSleep (20);
     return EFI_NOT_READY;
@@ -631,8 +632,8 @@ EFI_STATUS EFIAPI GasketUgaBlt (
     XStoreName (drv->display, drv->win, title);
   }
 
-  XSelectInput (drv->display, drv->win,
-                 ExposureMask | KeyPressMask);
+  XSelectInput (drv->display, drv->win, ExposureMask | KeyPressMask);
+  
   drv->gc = DefaultGC (drv->display, drv->screen);
 
   *Uga = (EFI_UNIX_UGA_IO_PROTOCOL *)drv;
index 252c7e6..08cdd62 100644 (file)
@@ -55,8 +55,14 @@ settimer_handler (int sig)
     - ((UINT64)settimer_timeval.tv_sec * 1000) 
     - (settimer_timeval.tv_usec / 1000);
   settimer_timeval = timeval;
-  if (settimer_callback)
-    (*settimer_callback)(delta);
+  
+  if (settimer_callback) {
+#ifdef __APPLE__
+    ReverseGasketUint64 (settimer_callback, delta);
+#else
+   (*settimer_callback)(delta);
+#endif
+  }
 }
 
 VOID
@@ -94,13 +100,18 @@ SetTimer (UINT64 PeriodMs, VOID (*CallBack)(UINT64 DeltaMs))
 void
 msSleep (unsigned long Milliseconds)
 {
-  struct timespec ts;
+  struct timespec rq, rm;
 
-  ts.tv_sec = Milliseconds / 1000;
-  ts.tv_nsec = (Milliseconds % 1000) * 1000000;
+  rq.tv_sec = Milliseconds / 1000;
+  rq.tv_nsec = (Milliseconds % 1000) * 1000000;
 
-  while (nanosleep (&ts, &ts) != 0 && errno == EINTR)
-    ;
+  while (nanosleep (&rq, &rm) != -1) {
+    if (errno != EINTR) {
+      break;
+    }
+    rq = rm;
+  } 
+    
 }
 
 void
@@ -174,20 +185,20 @@ EFI_UNIX_THUNK_PROTOCOL mUnixThunkTable = {
   Gasketgmtime,
   GasketGetTimeZone,
   GasketGetDayLight,
-  (UnixPoll)Gasketpoll,
-  (UnixRead)Gasketread,
-  (UnixWrite)Gasketwrite,
+  Gasketpoll,
+  Gasketread,
+  Gasketwrite,
   Gasketgetenv,
-  (UnixOpen)Gasketopen,
-  (UnixSeek)Gasketlseek,
-  (UnixFtruncate)Gasketftruncate,
+  Gasketopen,
+  Gasketlseek,
+  Gasketftruncate,
   Gasketclose,
   Gasketmkdir,
   Gasketrmdir,
   Gasketunlink,
   GasketGetErrno,
   Gasketopendir,
-  (UnixRewindDir)Gasketrewinddir,
+  Gasketrewinddir,
   Gasketreaddir,
   Gasketclosedir,
   Gasketstat,
@@ -206,14 +217,9 @@ EFI_UNIX_THUNK_PROTOCOL mUnixThunkTable = {
   Gasketcfsetospeed,
   Gaskettcgetattr,
   Gaskettcsetattr,
-  
-  dlopen,  // Update me with a gasket
-  dlerror, // Update me with a gasket
-  dlsym,   // Update me with a gasket
-
-  SecPeCoffGetEntryPoint,                // Update me with a gasket
-  SecPeCoffRelocateImageExtraAction,     // Update me with a gasket
-  SecPeCoffLoaderUnloadImageExtraAction  // Update me with a gasket
+  GasketUnixPeCoffGetEntryPoint,                
+  GasketUnixPeCoffRelocateImageExtraAction,     
+  GasketUnixPeCoffUnloadImageExtraAction  
 
 #else
   msSleep, /* Sleep */
@@ -255,9 +261,6 @@ EFI_UNIX_THUNK_PROTOCOL mUnixThunkTable = {
   cfsetospeed,
   tcgetattr,
   tcsetattr,
-  dlopen,
-  dlerror,
-  dlsym,
   SecPeCoffGetEntryPoint,
   SecPeCoffRelocateImageExtraAction,
   SecPeCoffLoaderUnloadImageExtraAction
index f912d40..fc8166f 100644 (file)
@@ -27,10 +27,10 @@ LCFI4:
        subq    $32, %rsp
 LCFI5:
        movq    %rdi, -24(%rbp)
-       movl    %esi, -28(%rbp)
+       movq    %rsi, -32(%rbp)
        movq    -24(%rbp), %rax
        movq    %rax, -8(%rbp)
-       movl    -28(%rbp), %edi
+       movq    -32(%rbp), %rdi
        movq    -8(%rbp), %rax
        call    *%rax
        leave
@@ -43,15 +43,15 @@ LFB4:
 LCFI6:
        movq    %rsp, %rbp
 LCFI7:
-       subq    $32, %rsp
+       subq    $48, %rsp
 LCFI8:
        movq    %rdi, -24(%rbp)
-       movl    %esi, -28(%rbp)
-       movl    %edx, -32(%rbp)
+       movq    %rsi, -32(%rbp)
+       movq    %rdx, -40(%rbp)
        movq    -24(%rbp), %rax
        movq    %rax, -8(%rbp)
-       movl    -32(%rbp), %esi
-       movl    -28(%rbp), %edi
+       movq    -40(%rbp), %rsi
+       movq    -32(%rbp), %rdi
        movq    -8(%rbp), %rax
        call    *%rax
        leave
@@ -67,14 +67,14 @@ LCFI10:
        subq    $48, %rsp
 LCFI11:
        movq    %rdi, -24(%rbp)
-       movl    %esi, -28(%rbp)
-       movl    %edx, -32(%rbp)
-       movl    %ecx, -36(%rbp)
+       movq    %rsi, -32(%rbp)
+       movq    %rdx, -40(%rbp)
+       movq    %rcx, -48(%rbp)
        movq    -24(%rbp), %rax
        movq    %rax, -8(%rbp)
-       movl    -36(%rbp), %edx
-       movl    -32(%rbp), %esi
-       movl    -28(%rbp), %edi
+       movq    -48(%rbp), %rdx
+       movq    -40(%rbp), %rsi
+       movq    -32(%rbp), %rdi
        movq    -8(%rbp), %rax
        call    *%rax
        leave
@@ -87,19 +87,19 @@ LFB6:
 LCFI12:
        movq    %rsp, %rbp
 LCFI13:
-       subq    $48, %rsp
+       subq    $64, %rsp
 LCFI14:
        movq    %rdi, -24(%rbp)
-       movl    %esi, -28(%rbp)
-       movl    %edx, -32(%rbp)
-       movl    %ecx, -36(%rbp)
-       movl    %r8d, -40(%rbp)
+       movq    %rsi, -32(%rbp)
+       movq    %rdx, -40(%rbp)
+       movq    %rcx, -48(%rbp)
+       movq    %r8, -56(%rbp)
        movq    -24(%rbp), %rax
        movq    %rax, -8(%rbp)
-       movl    -40(%rbp), %ecx
-       movl    -36(%rbp), %edx
-       movl    -32(%rbp), %esi
-       movl    -28(%rbp), %edi
+       movq    -56(%rbp), %rcx
+       movq    -48(%rbp), %rdx
+       movq    -40(%rbp), %rsi
+       movq    -32(%rbp), %rdi
        movq    -8(%rbp), %rax
        call    *%rax
        leave
@@ -112,35 +112,35 @@ LFB7:
 LCFI15:
        movq    %rsp, %rbp
 LCFI16:
-       subq    $80, %rsp
+       subq    $96, %rsp
 LCFI17:
        movq    %rdi, -24(%rbp)
-       movl    %esi, -28(%rbp)
-       movl    %edx, -32(%rbp)
-       movl    %ecx, -36(%rbp)
-       movl    %r8d, -40(%rbp)
-       movl    %r9d, -44(%rbp)
+       movq    %rsi, -32(%rbp)
+       movq    %rdx, -40(%rbp)
+       movq    %rcx, -48(%rbp)
+       movq    %r8, -56(%rbp)
+       movq    %r9, -64(%rbp)
        movq    -24(%rbp), %rax
        movq    %rax, -8(%rbp)
-       movl    -44(%rbp), %edx
-       movl    -40(%rbp), %ecx
-       movl    -36(%rbp), %esi
-       movl    -32(%rbp), %edi
-       movl    -28(%rbp), %r10d
-       movl    48(%rbp), %eax
-       movl    %eax, 24(%rsp)
-       movl    40(%rbp), %eax
-       movl    %eax, 16(%rsp)
-       movl    32(%rbp), %eax
-       movl    %eax, 8(%rsp)
-       movl    24(%rbp), %eax
-       movl    %eax, (%rsp)
+       movq    -64(%rbp), %rdx
+       movq    -56(%rbp), %rcx
+       movq    -48(%rbp), %rsi
+       movq    -40(%rbp), %rdi
+       movq    -32(%rbp), %r10
+       movq    48(%rbp), %rax
+       movq    %rax, 24(%rsp)
+       movq    40(%rbp), %rax
+       movq    %rax, 16(%rsp)
+       movq    32(%rbp), %rax
+       movq    %rax, 8(%rsp)
+       movq    24(%rbp), %rax
+       movq    %rax, (%rsp)
        movq    -8(%rbp), %rax
-       movl    16(%rbp), %r9d
-       movl    %edx, %r8d
-       movl    %esi, %edx
-       movl    %edi, %esi
-       movl    %r10d, %edi
+       movq    16(%rbp), %r9
+       movq    %rdx, %r8
+       movq    %rsi, %rdx
+       movq    %rdi, %rsi
+       movq    %r10, %rdi
        call    *%rax
        leave
        ret
@@ -156,10 +156,10 @@ LCFI19:
 LCFI20:
        movq    %rdi, -24(%rbp)
        movq    %rsi, -32(%rbp)
-       movl    %edx, -36(%rbp)
+       movq    %rdx, -40(%rbp)
        movq    -24(%rbp), %rax
        movq    %rax, -8(%rbp)
-       movl    -36(%rbp), %esi
+       movq    -40(%rbp), %rsi
        movq    -32(%rbp), %rdi
        movq    -8(%rbp), %rax
        call    *%rax
@@ -176,14 +176,14 @@ LCFI22:
        subq    $48, %rsp
 LCFI23:
        movq    %rdi, -24(%rbp)
-       movl    %esi, -28(%rbp)
+       movq    %rsi, -32(%rbp)
        movq    %rdx, -40(%rbp)
-       movl    %ecx, -44(%rbp)
+       movq    %rcx, -48(%rbp)
        movq    -24(%rbp), %rax
        movq    %rax, -8(%rbp)
-       movl    -44(%rbp), %edx
+       movq    -48(%rbp), %rdx
        movq    -40(%rbp), %rsi
-       movl    -28(%rbp), %edi
+       movq    -32(%rbp), %rdi
        movq    -8(%rbp), %rax
        call    *%rax
        leave
@@ -196,20 +196,39 @@ LFB10:
 LCFI24:
        movq    %rsp, %rbp
 LCFI25:
-       subq    $32, %rsp
+       subq    $48, %rsp
 LCFI26:
        movq    %rdi, -24(%rbp)
-       movl    %esi, -28(%rbp)
-       movw    %dx, -32(%rbp)
+       movq    %rsi, -32(%rbp)
+       movw    %dx, -36(%rbp)
        movq    -24(%rbp), %rax
        movq    %rax, -8(%rbp)
-       movzwl  -32(%rbp), %esi
-       movl    -28(%rbp), %edi
+       movzwl  -36(%rbp), %esi
+       movq    -32(%rbp), %rdi
        movq    -8(%rbp), %rax
        call    *%rax
        leave
        ret
 LFE10:
+.globl _ReverseGasketUint64
+_ReverseGasketUint64:
+LFB11:
+       pushq   %rbp
+LCFI27:
+       movq    %rsp, %rbp
+LCFI28:
+       subq    $32, %rsp
+LCFI29:
+       movq    %rdi, -24(%rbp)
+       movq    %rsi, -32(%rbp)
+       movq    -24(%rbp), %rax
+       movq    %rax, -8(%rbp)
+       movq    -32(%rbp), %rdi
+       movq    -8(%rbp), %rax
+       call    *%rax
+       leave
+       ret
+LFE11:
        .section __TEXT,__eh_frame,coalesced,no_toc+strip_static_syms+live_support
 EH_frame1:
        .set L$set$0,LECIE1-LSCIE1
@@ -455,4 +474,29 @@ LASFDE17:
        .byte   0x6
        .align 3
 LEFDE17:
+.globl _ReverseGasketUint64.eh
+_ReverseGasketUint64.eh:
+LSFDE19:
+       .set L$set$37,LEFDE19-LASFDE19
+       .long L$set$37
+LASFDE19:
+       .long   LASFDE19-EH_frame1
+       .quad   LFB11-.
+       .set L$set$38,LFE11-LFB11
+       .quad L$set$38
+       .byte   0x0
+       .byte   0x4
+       .set L$set$39,LCFI27-LFB11
+       .long L$set$39
+       .byte   0xe
+       .byte   0x10
+       .byte   0x86
+       .byte   0x2
+       .byte   0x4
+       .set L$set$40,LCFI28-LCFI27
+       .long L$set$40
+       .byte   0xd
+       .byte   0x6
+       .align 3
+LEFDE19:
        .subsections_via_symbols
diff --git a/UnixPkg/Sec/X64/GasketTemplate.c b/UnixPkg/Sec/X64/GasketTemplate.c
new file mode 100644 (file)
index 0000000..f9f2785
--- /dev/null
@@ -0,0 +1,153 @@
+/** @file
+  Template file used to create Gasket.S
+
+  This file is built on the command line via gcc GasketTemplate.c -S 
+  and it will create GasketTemplate.s and this was used to create 
+  Gasket.S. This builds code for Unix ABI on both sides. To convert 
+  to EFI ABI will require changing the code by hand
+
+Copyright (c) 2006 - 2009, Intel Corporation. All rights reserved.<BR>
+Portions copyright (c) 2008 - 2010, Apple Inc. All rights reserved.<BR>
+This program and the accompanying materials
+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
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+**/
+
+
+#include <stdint.h>
+#include <sys/stat.h>
+
+typedef int8_t    INT8;
+typedef uint8_t   UINT8;
+typedef int16_t   INT16;
+typedef uint16_t  UINT16;
+typedef int32_t   INT32;
+typedef uint32_t  UINT32;
+typedef int64_t   INT64;
+typedef uint64_t  UINT64;
+typedef UINT64    UINTN; 
+
+
+typedef UINTN (*GASKET_VOID) ();
+typedef UINTN (*GASKET_UINTN) (UINTN);
+typedef UINTN (*GASKET_UINTN_UINTN) (UINTN, UINTN);
+typedef UINTN (*GASKET_UINTN_UINTN_UINTN) (UINTN, UINTN, UINTN);
+typedef UINTN (*GASKET_UINTN_UINTN_UINTN_UINTN) (UINTN, UINTN, UINTN, UINTN);
+typedef UINTN (*GASKET_UINTN_10ARGS) (UINTN, UINTN, UINTN, UINTN, UINTN, UINTN, UINTN, UINTN, UINTN, UINTN);
+typedef UINTN (*GASKET_UINT64_UINTN) (UINT64, UINTN);
+typedef UINT64 (*GASKET_UINTN_UINT64_UINTN) (UINTN, UINT64, UINTN);
+typedef UINTN (*GASKET_UINTN_UINT16) (UINTN, UINT16);
+
+UINTN GasketVoid (void *api);
+UINTN GasketUintn (void *api, UINTN a);
+UINTN GasketUintnUintn (void *api, UINTN a, UINTN b);
+UINTN GasketUintnUintnUintn (void *api, UINTN a, UINTN b, UINTN c);
+UINTN GasketUintnUintnUintnUintn (void *api, UINTN a, UINTN b, UINTN c, UINTN d);
+UINTN GasketUintn10Args (void *api, UINTN a, UINTN b, UINTN c, UINTN d, UINTN e, UINTN f, UINTN g, UINTN h, UINTN i, UINTN j);
+UINTN GasketUint64Uintn (void *api, UINT64 a, UINTN b);
+UINT64 GasketUintnUiny64Uintn (void *api, UINTN a, UINT64 b, UINTN c);
+UINTN GasketUintnUint16 (void *api, UINTN a, UINT16 b);
+
+
+
+UINTN
+GasketVoid (void *api)
+{
+  GASKET_VOID func;
+  
+  func = (GASKET_VOID)api;
+  return func ();
+}
+
+UINTN
+GasketUintn (void *api, UINTN a)
+{
+  GASKET_UINTN func;
+  
+  func = (GASKET_UINTN)api;
+  return func (a);
+}
+
+UINTN
+GasketUintnUintn (void *api, UINTN a, UINTN b)
+{
+  GASKET_UINTN_UINTN func;
+  
+  func = (GASKET_UINTN_UINTN)api;
+  return func (a, b);
+}
+
+
+UINTN
+GasketUintnUintnUintn (void *api, UINTN a, UINTN b, UINTN c)
+{
+  GASKET_UINTN_UINTN_UINTN func;
+  
+  func = (GASKET_UINTN_UINTN_UINTN)api;
+  return func (a, b, c);
+}
+
+UINTN
+GasketUintnUintnUintnUintn (void *api, UINTN a, UINTN b, UINTN c, UINTN d)
+{
+  GASKET_UINTN_UINTN_UINTN_UINTN func;
+  
+  func = (GASKET_UINTN_UINTN_UINTN_UINTN)api;
+  return func (a, b, c, d);
+}
+
+UINTN
+GasketUintn10Args (void *api, UINTN a, UINTN b, UINTN c, UINTN d, UINTN e, UINTN f, UINTN g, UINTN h, UINTN i, UINTN j)
+{
+  GASKET_UINTN_10ARGS func;
+  
+  func = (GASKET_UINTN_10ARGS)api;
+  return func (a, b, c, d, e, f, g, h, i, j);
+}
+
+
+UINTN
+GasketUint64Uintn (void *api, UINT64 a, UINTN b)
+{
+  GASKET_UINT64_UINTN func;
+  
+  func = (GASKET_UINT64_UINTN)api;
+  return func (a, b);
+}
+
+UINT64
+GasketUintnUint64Uintn (void *api, UINTN a, UINT64 b, UINTN c)
+{
+  GASKET_UINTN_UINT64_UINTN func;
+  
+  func = (GASKET_UINTN_UINT64_UINTN)api;
+  return func (a, b, c);
+}
+
+UINTN
+GasketUintnUint16 (void *api, UINTN a, UINT16 b)
+{
+  GASKET_UINTN_UINT16 func;
+  
+  func = (GASKET_UINTN_UINT16)api;
+  return func (a, b);
+}
+
+void
+ReverseGasketUint64 (void *api, UINT64 a)
+{
+  GASKET_UINTN func;
+  
+  func = (GASKET_UINTN)api;
+  func (a);
+  return;
+}
+
+
+
+
index babae5d..b135f6d 100644 (file)
@@ -117,7 +117,7 @@ Returns:
           PcdGet32 (PcdFlashNvStorageFtwSpareSize) +\r
           PcdGet32 (PcdUnixFlashNvStorageEventLogSize);\r
 \r
-        BuildFvHob (FdFixUp + PcdGet32 (PcdUnixFlashNvStorageVariableBase), FdSize);\r
+        BuildFvHob (FdFixUp + PcdGet64 (PcdUnixFlashNvStorageVariableBase), FdSize);\r
       } else {\r
         //\r
         // For other FD's just map them in.\r
index 5de98a4..059bb34 100644 (file)
@@ -83,9 +83,9 @@ Returns:
     return Status;\r
   }\r
   \r
-  PcdSet32 (PcdFlashNvStorageVariableBase, PcdGet32 (PcdUnixFlashNvStorageVariableBase) + (UINT32)FdFixUp);\r
-  PcdSet32 (PcdFlashNvStorageFtwWorkingBase, PcdGet32 (PcdUnixFlashNvStorageFtwWorkingBase) + (UINT32)FdFixUp);\r
-  PcdSet32 (PcdFlashNvStorageFtwSpareBase, PcdGet32 (PcdUnixFlashNvStorageFtwSpareBase) + (UINT32)FdFixUp);\r
+  PcdSet64 (PcdFlashNvStorageVariableBase64, PcdGet64 (PcdUnixFlashNvStorageVariableBase) + FdFixUp);\r
+  PcdSet64 (PcdFlashNvStorageFtwWorkingBase64, PcdGet64 (PcdUnixFlashNvStorageFtwWorkingBase) + FdFixUp);\r
+  PcdSet64 (PcdFlashNvStorageFtwSpareBase64, PcdGet64 (PcdUnixFlashNvStorageFtwSpareBase) + FdFixUp);\r
 \r
   return EFI_SUCCESS;\r
 }\r
index ace8399..da9f861 100644 (file)
 \r
 [Pcd]\r
   gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingSize\r
-  gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingBase\r
+  gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingBase64\r
   gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareSize\r
-  gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareBase\r
+  gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareBase64\r
   gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableSize\r
-  gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableBase\r
+  gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableBase64\r
 \r
   gEfiUnixPkgTokenSpaceGuid.PcdUnixFlashNvStorageFtwWorkingBase\r
   gEfiUnixPkgTokenSpaceGuid.PcdUnixFlashNvStorageFtwSpareBase\r
index 06c240a..f803cd7 100644 (file)
   gEfiUnixPkgTokenSpaceGuid.PcdUnixFirmwareVolume|L"..\\Fv\\Fv_Recovery.fd"|VOID*|0x00001009\r
   gEfiUnixPkgTokenSpaceGuid.PcdUnixMemorySizeForSecMain|L"64!64"|VOID*|0x0000100c\r
   \r
-  gEfiUnixPkgTokenSpaceGuid.PcdUnixFlashNvStorageVariableBase|0x0|UINT32|0x00001014\r
-  gEfiUnixPkgTokenSpaceGuid.PcdUnixFlashNvStorageFtwSpareBase|0x0|UINT32|0x00001015\r
-  gEfiUnixPkgTokenSpaceGuid.PcdUnixFlashNvStorageFtwWorkingBase|0x0|UINT32|0x00001016\r
-  gEfiUnixPkgTokenSpaceGuid.PcdUnixFdBaseAddress|0x0|UINT32|0x00001017\r
+  gEfiUnixPkgTokenSpaceGuid.PcdUnixFlashNvStorageVariableBase|0x0|UINT64|0x00001014\r
+  gEfiUnixPkgTokenSpaceGuid.PcdUnixFlashNvStorageFtwSpareBase|0x0|UINT64|0x00001015\r
+  gEfiUnixPkgTokenSpaceGuid.PcdUnixFlashNvStorageFtwWorkingBase|0x0|UINT64|0x00001016\r
+  gEfiUnixPkgTokenSpaceGuid.PcdUnixFdBaseAddress|0x0|UINT64|0x00001017\r
 \r
-  gEfiUnixPkgTokenSpaceGuid.PcdUnixFlashNvStorageEventLogBase|0x0|UINT32|0x0000100e\r
+  gEfiUnixPkgTokenSpaceGuid.PcdUnixFlashNvStorageEventLogBase|0x0|UINT64|0x0000100e\r
   gEfiUnixPkgTokenSpaceGuid.PcdUnixFlashNvStorageEventLogSize|0x0|UINT32|0x0000100f\r
-  gEfiUnixPkgTokenSpaceGuid.PcdUnixFlashFvRecoveryBase|0x0|UINT32|0x00001010\r
+  gEfiUnixPkgTokenSpaceGuid.PcdUnixFlashFvRecoveryBase|0x0|UINT64|0x00001010\r
   gEfiUnixPkgTokenSpaceGuid.PcdUnixFlashFvRecoverySize|0x0|UINT32|0x00001011\r
   gEfiUnixPkgTokenSpaceGuid.PcdUnixFirmwareFdSize|0x0|UINT32|0x00001012\r
   gEfiUnixPkgTokenSpaceGuid.PcdUnixFirmwareBlockSize|0|UINT32|0x00001013\r
index 285fe12..d5c3d81 100644 (file)
@@ -27,7 +27,7 @@
   PLATFORM_VERSION               = 0.3\r
   DSC_ SPECIFICATION             = 0x00010005\r
   OUTPUT_DIRECTORY               = Build/Unix\r
-  SUPPORTED_ARCHITECTURES        = IA32|X64\r
+  SUPPORTED_ARCHITECTURES        = IA32\r
   BUILD_TARGETS                  = DEBUG|RELEASE\r
   SKUID_IDENTIFIER               = DEFAULT\r
   FLASH_DEFINITION               = UnixPkg/UnixPkg.fdf\r
 [LibraryClasses.common.UEFI_APPLICATION]\r
   PrintLib|MdeModulePkg/Library/DxePrintLibPrint2Protocol/DxePrintLibPrint2Protocol.inf\r
 \r
+[LibraryClasses.X64]\r
+  BaseLib|UnixPkg/Library/UnixBaseLib/UnixBaseLib.inf\r
+\r
 ################################################################################\r
 #\r
 # Pcd Section - list of all EDK II PCD Entries defined by this Platform.\r
 ################################################################################\r
 \r
 [PcdsDynamicDefault.common.DEFAULT]\r
-  gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareBase|0\r
-  gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingBase|0\r
-  gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableBase|0\r
-  gEfiGenericPlatformTokenSpaceGuid.PcdFlashNvStorageVariableBase|0x0|UINT32|4\r
-  gEfiGenericPlatformTokenSpaceGuid.PcdFlashNvStorageVariableSize|0x0|UINT32|4\r
-  gEfiGenericPlatformTokenSpaceGuid.PcdFlashNvStorageFtwSpareBase|0x0|UINT32|4\r
-  gEfiGenericPlatformTokenSpaceGuid.PcdFlashNvStorageFtwSpareSize|0x0|UINT32|4\r
-  gEfiGenericPlatformTokenSpaceGuid.PcdFlashNvStorageFtwWorkingBase|0x0|UINT32|4\r
-  gEfiGenericPlatformTokenSpaceGuid.PcdFlashNvStorageFtwWorkingSize|0x0|UINT32|4\r
-  gEfiUnixPkgTokenSpaceGuid.PcdUnixConsole|L"Bus Driver Console Window"|VOID*|50\r
-  gEfiUnixPkgTokenSpaceGuid.PcdUnixUga|L"UGA Window"|VOID*|50\r
-  gEfiUnixPkgTokenSpaceGuid.PcdUnixFileSystem|L".!../../../../EdkShellBinPkg/Bin/Ia32/Apps"|VOID*|106\r
-  gEfiUnixPkgTokenSpaceGuid.PcdUnixVirtualDisk|L"disk1.img:FW"|VOID*|24\r
-  gEfiUnixPkgTokenSpaceGuid.PcdUnixPhysicalDisk|L"E:RW;245760;512"|VOID*|30\r
-  gEfiUnixPkgTokenSpaceGuid.PcdUnixCpuModel|L"Intel(R) Processor Model"|VOID*|48\r
-  gEfiUnixPkgTokenSpaceGuid.PcdUnixCpuSpeed|L"3000"|VOID*|8\r
-  gEfiUnixPkgTokenSpaceGuid.PcdUnixMemorySize|L"64!64"|VOID*|10\r
-  gEfiUnixPkgTokenSpaceGuid.PcdUnixSerialPort|L"/dev/ttyS0!/dev/ttyS1"|VOID*|20\r
+  gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareBase64|0\r
+  gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingBase64|0\r
+  gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableBase64|0\r
+\r
+  gEfiUnixPkgTokenSpaceGuid.PcdUnixConsole|L"Bus Driver Console Window"\r
+  gEfiUnixPkgTokenSpaceGuid.PcdUnixUga|L"UGA Window"\r
+  gEfiUnixPkgTokenSpaceGuid.PcdUnixFileSystem|L".!../../../../EdkShellBinPkg/Bin/Ia32/Apps"\r
+  gEfiUnixPkgTokenSpaceGuid.PcdUnixVirtualDisk|L"disk1.img:FW"\r
+  gEfiUnixPkgTokenSpaceGuid.PcdUnixPhysicalDisk|L"E:RW;245760;512"\r
+  gEfiUnixPkgTokenSpaceGuid.PcdUnixCpuModel|L"Intel(R) Processor Model"\r
+  gEfiUnixPkgTokenSpaceGuid.PcdUnixCpuSpeed|L"3000"\r
+  gEfiUnixPkgTokenSpaceGuid.PcdUnixMemorySize|L"128!128"\r
+  gEfiUnixPkgTokenSpaceGuid.PcdUnixSerialPort|L"/dev/ttyS0!/dev/ttyS1"\r
 \r
 [PcdsDynamicHii.common.DEFAULT]\r
   gEfiMdeModulePkgTokenSpaceGuid.PcdConOutColumn|L"Setup"|gEfiUnixSystemConfigGuid|0x0|80\r
index 23d1d95..81929cf 100644 (file)
@@ -243,43 +243,22 @@ INF  MdeModulePkg/Application/HelloWorld/HelloWorld.inf
 #INF  MdeModulePkg/Universal/Network/Udp4Dxe/Udp4Dxe.inf\r
 #INF  UnixPkg/SnpUnixDxe/SnpUnixDxe.inf\r
 \r
+#\r
+# Build from source or use checked in binary\r
+#\r
 #INF FatPkg/EnhancedFatDxe/Fat.inf\r
+INF  RuleOverride = BINARY USE = IA32 FatBinPkg/EnhancedFatDxe/Fat.inf\r
 \r
+# If  you build GccShellPkg you can source level debug shell\r
+#FILE APPLICATION = PCD(gEfiIntelFrameworkModulePkgTokenSpaceGuid.PcdShellFile) {\r
+#  SECTION PE32 =Build/GccShellPkg/DEBUG_XCODE32/IA32/ShellFull.efi\r
+#}\r
+INF  RuleOverride = BINARY USE = IA32 EdkShellBinPkg/FullShell/FullShell.inf\r
 \r
-   \r
-################################################################################\r
-#  \r
-# FILE statements are provided so that a platform integrator can include\r
-# complete EFI FFS files, as well as a method for constructing FFS files\r
-# using curly "{}" brace scoping. The following three FILEs are\r
-# for binary shell, binary fat and logo module.\r
-#  \r
-################################################################################\r
-FILE APPLICATION = PCD(gEfiIntelFrameworkModulePkgTokenSpaceGuid.PcdShellFile) {\r
-    SECTION COMPRESS PI_STD {\r
-      SECTION GUIDED {\r
-        SECTION PE32 = EdkShellBinPkg/FullShell/Ia32/Shell_Full.efi\r
-#        SECTION PE32 =Build/GccShellPkg/DEBUG_XCODE32/IA32/ShellFull.efi\r
-#        SECTION PE32 = Build/Unix/DEBUG_XCODE32/IA32/Ebl.efi\r
-      }\r
-    }\r
-  }\r
-\r
-FILE DRIVER = 961578FE-B6B7-44c3-AF35-6BC705CD2B1F {\r
-    SECTION COMPRESS PI_STD {\r
-      SECTION GUIDED {\r
-        SECTION PE32 = FatBinPkg/EnhancedFatDxe/Ia32/Fat.efi\r
-      }\r
-    }\r
-  }\r
 \r
 FILE FREEFORM = PCD(gEfiIntelFrameworkModulePkgTokenSpaceGuid.PcdLogoFile) {\r
-    SECTION COMPRESS PI_STD {\r
-      SECTION GUIDED {\r
-        SECTION RAW = MdeModulePkg/Logo/Logo.bmp\r
-      }\r
-    }\r
-  }\r
+  SECTION RAW = MdeModulePkg/Logo/Logo.bmp\r
+}\r
    \r
    \r
 ################################################################################\r
@@ -380,3 +359,20 @@ FILE FREEFORM = PCD(gEfiIntelFrameworkModulePkgTokenSpaceGuid.PcdLogoFile) {
       }\r
     }\r
   }\r
+  \r
+  \r
+[Rule.Common.UEFI_DRIVER.BINARY]\r
+  FILE DRIVER = $(NAMED_GUID) {\r
+    DXE_DEPEX DXE_DEPEX Optional      |.depex\r
+    PE32      PE32                    |.efi\r
+    UI        STRING="$(MODULE_NAME)" Optional\r
+    VERSION   STRING="$(INF_VERSION)" Optional BUILD_NUM=$(BUILD_NUMBER)\r
+  }\r
+\r
+[Rule.Common.UEFI_APPLICATION.BINARY]\r
+  FILE APPLICATION = $(NAMED_GUID) {\r
+    PE32      PE32                    |.efi\r
+    UI        STRING="$(MODULE_NAME)" Optional\r
+    VERSION   STRING="$(INF_VERSION)" Optional BUILD_NUM=$(BUILD_NUMBER)\r
+  }\r
+\r
diff --git a/UnixPkg/UnixPkgX64.dsc b/UnixPkg/UnixPkgX64.dsc
new file mode 100644 (file)
index 0000000..8411eb6
--- /dev/null
@@ -0,0 +1,324 @@
+## @file\r
+#\r
+# EFI/Framework Emulation Platform with UEFI HII interface supported.\r
+#\r
+# The Emulation Platform can be used to debug individual modules, prior to creating\r
+#       a real platform. This also provides an example for how an DSC is created.\r
+# Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>\r
+#\r
+#    This program and the accompanying materials\r
+#    are licensed and made available under the terms and conditions of the BSD License\r
+#    which accompanies this distribution. The full text of the license may be found at\r
+#    http://opensource.org/licenses/bsd-license.php\r
+#\r
+#    THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+#    WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+##\r
+\r
+################################################################################\r
+#\r
+# Defines Section - statements that will be processed to create a Makefile.\r
+#\r
+################################################################################\r
+[Defines]\r
+  PLATFORM_NAME                  = Unix\r
+  PLATFORM_GUID                  = 7b3c1fb4-8986-11db-b5b2-0040d02b1835\r
+  PLATFORM_VERSION               = 0.3\r
+  DSC_ SPECIFICATION             = 0x00010005\r
+  OUTPUT_DIRECTORY               = Build/UnixX64\r
+  SUPPORTED_ARCHITECTURES        = X64\r
+  BUILD_TARGETS                  = DEBUG|RELEASE\r
+  SKUID_IDENTIFIER               = DEFAULT\r
+  FLASH_DEFINITION               = UnixPkg/UnixPkgX64.fdf\r
+\r
+################################################################################\r
+#\r
+# SKU Identification section - list of all SKU IDs supported by this Platform.\r
+#\r
+################################################################################\r
+[SkuIds]\r
+  0|DEFAULT\r
+\r
+################################################################################\r
+#\r
+# Library Class section - list of all Library Classes needed by this Platform.\r
+#\r
+################################################################################\r
+[LibraryClasses]\r
+  #\r
+  # Entry point\r
+  #\r
+  PeiCoreEntryPoint|MdePkg/Library/PeiCoreEntryPoint/PeiCoreEntryPoint.inf\r
+  PeimEntryPoint|MdePkg/Library/PeimEntryPoint/PeimEntryPoint.inf\r
+  DxeCoreEntryPoint|MdePkg/Library/DxeCoreEntryPoint/DxeCoreEntryPoint.inf\r
+  UefiDriverEntryPoint|MdePkg/Library/UefiDriverEntryPoint/UefiDriverEntryPoint.inf\r
+  UefiApplicationEntryPoint|MdePkg/Library/UefiApplicationEntryPoint/UefiApplicationEntryPoint.inf\r
+  #\r
+  # Basic\r
+  #\r
+  BaseLib|MdePkg/Library/BaseLib/BaseLib.inf\r
+  SynchronizationLib|MdePkg/Library/BaseSynchronizationLib/BaseSynchronizationLib.inf\r
+  PrintLib|MdePkg/Library/BasePrintLib/BasePrintLib.inf\r
+  CacheMaintenanceLib|MdePkg/Library/BaseCacheMaintenanceLib/BaseCacheMaintenanceLib.inf\r
+  PeCoffLib|MdePkg/Library/BasePeCoffLib/BasePeCoffLib.inf\r
+  PeCoffGetEntryPointLib|MdePkg/Library/BasePeCoffGetEntryPointLib/BasePeCoffGetEntryPointLib.inf\r
+  PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf\r
+  BaseMemoryLib|MdePkg/Library/BaseMemoryLib/BaseMemoryLib.inf\r
+  #\r
+  # UEFI & PI\r
+  #\r
+  UefiBootServicesTableLib|MdePkg/Library/UefiBootServicesTableLib/UefiBootServicesTableLib.inf\r
+  UefiRuntimeServicesTableLib|MdePkg/Library/UefiRuntimeServicesTableLib/UefiRuntimeServicesTableLib.inf\r
+  UefiRuntimeLib|MdePkg/Library/UefiRuntimeLib/UefiRuntimeLib.inf\r
+  UefiLib|MdePkg/Library/UefiLib/UefiLib.inf\r
+  UefiHiiServicesLib|MdeModulePkg/Library/UefiHiiServicesLib/UefiHiiServicesLib.inf\r
+  HiiLib|MdeModulePkg/Library/UefiHiiLib/UefiHiiLib.inf\r
+  DevicePathLib|MdePkg/Library/UefiDevicePathLib/UefiDevicePathLib.inf\r
+  UefiDecompressLib|IntelFrameworkModulePkg/Library/BaseUefiTianoCustomDecompressLib/BaseUefiTianoCustomDecompressLib.inf\r
+  PeiServicesTablePointerLib|MdePkg/Library/PeiServicesTablePointerLib/PeiServicesTablePointerLib.inf\r
+  PeiServicesLib|MdePkg/Library/PeiServicesLib/PeiServicesLib.inf\r
+  DxeServicesLib|MdePkg/Library/DxeServicesLib/DxeServicesLib.inf\r
+  DxeServicesTableLib|MdePkg/Library/DxeServicesTableLib/DxeServicesTableLib.inf\r
+  #\r
+  # Generic Modules\r
+  #\r
+  UefiScsiLib|MdePkg/Library/UefiScsiLib/UefiScsiLib.inf\r
+  NetLib|MdeModulePkg/Library/DxeNetLib/DxeNetLib.inf\r
+  IpIoLib|MdeModulePkg/Library/DxeIpIoLib/DxeIpIoLib.inf\r
+  UdpIoLib|MdeModulePkg/Library/DxeUdpIoLib/DxeUdpIoLib.inf\r
+  DpcLib|MdeModulePkg/Library/DxeDpcLib/DxeDpcLib.inf\r
+  OemHookStatusCodeLib|MdeModulePkg/Library/OemHookStatusCodeLibNull/OemHookStatusCodeLibNull.inf\r
+  GenericBdsLib|IntelFrameworkModulePkg/Library/GenericBdsLib/GenericBdsLib.inf\r
+  SecurityManagementLib|MdeModulePkg/Library/DxeSecurityManagementLib/DxeSecurityManagementLib.inf\r
+  TimerLib|MdePkg/Library/BaseTimerLibNullTemplate/BaseTimerLibNullTemplate.inf\r
+  SerialPortLib|MdePkg/Library/BaseSerialPortLibNull/BaseSerialPortLibNull.inf\r
+  CapsuleLib|MdeModulePkg/Library/DxeCapsuleLibNull/DxeCapsuleLibNull.inf\r
+  #\r
+  # Platform\r
+  #\r
+  PlatformBdsLib|UnixPkg/Library/UnixBdsLib/PlatformBds.inf\r
+  #\r
+  # Misc\r
+  #\r
+  DebugLib|IntelFrameworkModulePkg/Library/PeiDxeDebugLibReportStatusCode/PeiDxeDebugLibReportStatusCode.inf\r
+  PerformanceLib|MdePkg/Library/BasePerformanceLibNull/BasePerformanceLibNull.inf\r
+  DebugAgentLib|MdeModulePkg/Library/DebugAgentLibNull/DebugAgentLibNull.inf\r
+\r
+[LibraryClasses.common.USER_DEFINED]\r
+  DebugLib|MdePkg/Library/BaseDebugLibNull/BaseDebugLibNull.inf\r
+  PeCoffExtraActionLib|MdePkg/Library/BasePeCoffExtraActionLibNull/BasePeCoffExtraActionLibNull.inf\r
+  ReportStatusCodeLib|MdeModulePkg/Library/PeiReportStatusCodeLib/PeiReportStatusCodeLib.inf\r
+  OemHookStatusCodeLib|UnixPkg/Library/PeiUnixOemHookStatusCodeLib/PeiUnixOemHookStatusCodeLib.inf\r
+  MemoryAllocationLib|MdePkg/Library/PeiMemoryAllocationLib/PeiMemoryAllocationLib.inf\r
+\r
+[LibraryClasses.common.PEIM, LibraryClasses.common.PEI_CORE]\r
+  HobLib|MdePkg/Library/PeiHobLib/PeiHobLib.inf\r
+  MemoryAllocationLib|MdePkg/Library/PeiMemoryAllocationLib/PeiMemoryAllocationLib.inf\r
+  ReportStatusCodeLib|MdeModulePkg/Library/PeiReportStatusCodeLib/PeiReportStatusCodeLib.inf\r
+  PeCoffGetEntryPointLib|UnixPkg/Library/EdkUnixPeiPeCoffGetEntryPointLib/EdkUnixPeiPeCoffGetEntryPointLib.inf\r
+  PeCoffExtraActionLib|UnixPkg/Library/PeiUnixPeCoffExtraActionLib/PeiUnixPeCoffExtraActionLib.inf\r
+  ExtractGuidedSectionLib|MdePkg/Library/PeiExtractGuidedSectionLib/PeiExtractGuidedSectionLib.inf\r
+\r
+[LibraryClasses.common.PEIM]\r
+  PcdLib|MdePkg/Library/PeiPcdLib/PeiPcdLib.inf\r
+  OemHookStatusCodeLib|UnixPkg/Library/PeiUnixOemHookStatusCodeLib/PeiUnixOemHookStatusCodeLib.inf\r
+\r
+[LibraryClasses.common.PEI_CORE]\r
+  PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf\r
+\r
+[LibraryClasses.common.DXE_CORE]\r
+  HobLib|MdePkg/Library/DxeCoreHobLib/DxeCoreHobLib.inf\r
+  MemoryAllocationLib|MdeModulePkg/Library/DxeCoreMemoryAllocationLib/DxeCoreMemoryAllocationLib.inf\r
+  ReportStatusCodeLib|MdeModulePkg/Library/DxeReportStatusCodeLib/DxeReportStatusCodeLib.inf\r
+  PeCoffExtraActionLib|UnixPkg/Library/DxeUnixPeCoffExtraActionLib/DxeUnixPeCoffExtraActionLib.inf\r
+  ExtractGuidedSectionLib|MdePkg/Library/DxeExtractGuidedSectionLib/DxeExtractGuidedSectionLib.inf\r
+\r
+[LibraryClasses.common.DXE_SMM_DRIVER]\r
+  HobLib|MdePkg/Library/DxeHobLib/DxeHobLib.inf\r
+  PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf\r
+  MemoryAllocationLib|MdePkg/Library/SmmMemoryAllocationLib/SmmMemoryAllocationLib.inf\r
+  ReportStatusCodeLib|MdeModulePkg/Library/DxeReportStatusCodeLib/DxeReportStatusCodeLib.inf\r
+  OemHookStatusCodeLib|UnixPkg/Library/DxeUnixOemHookStatusCodeLib/DxeUnixOemHookStatusCodeLib.inf\r
+  DebugLib|MdePkg/Library/BaseDebugLibNull/BaseDebugLibNull.inf\r
+\r
+[LibraryClasses.common.DXE_RUNTIME_DRIVER, LibraryClasses.common.UEFI_DRIVER, LibraryClasses.common.DXE_DRIVER, LibraryClasses.common.UEFI_APPLICATION]\r
+  HobLib|MdePkg/Library/DxeHobLib/DxeHobLib.inf\r
+  PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf\r
+  MemoryAllocationLib|MdePkg/Library/UefiMemoryAllocationLib/UefiMemoryAllocationLib.inf\r
+  ReportStatusCodeLib|MdeModulePkg/Library/DxeReportStatusCodeLib/DxeReportStatusCodeLib.inf\r
+  UnixLib|UnixPkg/Library/DxeUnixLib/DxeUnixLib.inf\r
+  OemHookStatusCodeLib|UnixPkg/Library/DxeUnixOemHookStatusCodeLib/DxeUnixOemHookStatusCodeLib.inf\r
+  PeCoffExtraActionLib|UnixPkg/Library/DxeUnixPeCoffExtraActionLib/DxeUnixPeCoffExtraActionLib.inf\r
+\r
+[LibraryClasses.common.UEFI_APPLICATION]\r
+  PrintLib|MdeModulePkg/Library/DxePrintLibPrint2Protocol/DxePrintLibPrint2Protocol.inf\r
+\r
+[LibraryClasses.X64]\r
+  BaseLib|UnixPkg/Library/UnixBaseLib/UnixBaseLib.inf\r
+\r
+################################################################################\r
+#\r
+# Pcd Section - list of all EDK II PCD Entries defined by this Platform.\r
+#\r
+################################################################################\r
+[PcdsFeatureFlag]\r
+  gEfiMdeModulePkgTokenSpaceGuid.PcdDxeIplSwitchToLongMode|FALSE\r
+  gEfiMdeModulePkgTokenSpaceGuid.PcdStatusCodeUseSerial|FALSE\r
+  gEfiMdeModulePkgTokenSpaceGuid.PcdPeiCoreImageLoaderSearchTeSectionFirst|FALSE\r
+  gEfiIntelFrameworkModulePkgTokenSpaceGuid.PcdStatusCodeUseOEM|TRUE\r
+\r
+[PcdsFixedAtBuild]\r
+  gEfiMdePkgTokenSpaceGuid.PcdDebugPrintErrorLevel|0x80000040\r
+  gEfiMdePkgTokenSpaceGuid.PcdReportStatusCodePropertyMask|0x0f\r
+  gEfiMdePkgTokenSpaceGuid.PcdDebugPropertyMask|0x1f\r
+  gEfiMdeModulePkgTokenSpaceGuid.PcdMaxSizeNonPopulateCapsule|0x0\r
+  gEfiMdeModulePkgTokenSpaceGuid.PcdMaxSizePopulateCapsule|0x0\r
+  gEfiUnixPkgTokenSpaceGuid.PcdUnixFirmwareFdSize|0x002a0000\r
+  gEfiUnixPkgTokenSpaceGuid.PcdUnixFirmwareBlockSize|0x10000\r
+  gEfiUnixPkgTokenSpaceGuid.PcdUnixFirmwareVolume|L"../FV/FV_RECOVERY.fd"\r
+\r
+################################################################################\r
+#\r
+# Pcd Dynamic Section - list of all EDK II PCD Entries defined by this Platform\r
+#\r
+################################################################################\r
+\r
+[PcdsDynamicDefault.common.DEFAULT]\r
+  gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareBase64|0\r
+  gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingBase64|0\r
+  gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableBase64|0\r
+  gEfiUnixPkgTokenSpaceGuid.PcdUnixConsole|L"Bus Driver Console Window"\r
+  gEfiUnixPkgTokenSpaceGuid.PcdUnixUga|L"UGA Window"\r
+  gEfiUnixPkgTokenSpaceGuid.PcdUnixFileSystem|L".!../../../../EdkShellBinPkg/Bin/Ia32/Apps"\r
+  gEfiUnixPkgTokenSpaceGuid.PcdUnixVirtualDisk|L"disk1.img:FW"\r
+  gEfiUnixPkgTokenSpaceGuid.PcdUnixPhysicalDisk|L"E:RW;245760;512"\r
+  gEfiUnixPkgTokenSpaceGuid.PcdUnixCpuModel|L"Intel(R) Processor Model"\r
+  gEfiUnixPkgTokenSpaceGuid.PcdUnixCpuSpeed|L"3000"\r
+  gEfiUnixPkgTokenSpaceGuid.PcdUnixMemorySize|L"128!128"\r
+  gEfiUnixPkgTokenSpaceGuid.PcdUnixSerialPort|L"/dev/ttyS0!/dev/ttyS1"\r
+\r
+[PcdsDynamicHii.common.DEFAULT]\r
+  gEfiMdeModulePkgTokenSpaceGuid.PcdConOutColumn|L"Setup"|gEfiUnixSystemConfigGuid|0x0|80\r
+  gEfiMdeModulePkgTokenSpaceGuid.PcdConOutRow|L"Setup"|gEfiUnixSystemConfigGuid|0x4|25\r
+  gEfiIntelFrameworkModulePkgTokenSpaceGuid.PcdPlatformBootTimeOut|L"Timeout"|gEfiGlobalVariableGuid|0x0|10\r
+\r
+###################################################################################################\r
+#\r
+# Components Section - list of the modules and components that will be processed by compilation\r
+#                      tools and the EDK II tools to generate PE32/PE32+/Coff image files.\r
+#\r
+# Note: The EDK II DSC file is not used to specify how compiled binary images get placed\r
+#       into firmware volume images. This section is just a list of modules to compile from\r
+#       source into UEFI-compliant binaries.\r
+#       It is the FDF file that contains information on combining binary files into firmware\r
+#       volume images, whose concept is beyond UEFI and is described in PI specification.\r
+#       Binary modules do not need to be listed in this section, as they should be\r
+#       specified in the FDF file. For example: Shell binary (Shell_Full.efi), FAT binary (Fat.efi),\r
+#       Logo (Logo.bmp), and etc.\r
+#       There may also be modules listed in this section that are not required in the FDF file,\r
+#       When a module listed here is excluded from FDF file, then UEFI-compliant binary will be\r
+#       generated for it, but the binary will not be put into any firmware volume.\r
+#\r
+###################################################################################################\r
+[Components.common]\r
+  ##\r
+  #  SEC Phase modules\r
+  ##\r
+  UnixPkg/Sec/SecMain.inf\r
+\r
+  ##\r
+  #  PEI Phase modules\r
+  ##\r
+  MdeModulePkg/Core/Pei/PeiMain.inf\r
+  MdeModulePkg/Universal/PCD/Pei/Pcd.inf  {\r
+   <LibraryClasses>\r
+      PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf\r
+  }\r
+  IntelFrameworkModulePkg/Universal/StatusCode/Pei/StatusCodePei.inf\r
+  UnixPkg/BootModePei/BootModePei.inf\r
+  UnixPkg/UnixFlashMapPei/FlashMap.inf\r
+  MdeModulePkg/Universal/Variable/Pei/VariablePei.inf\r
+  UnixPkg/UnixAutoScanPei/UnixAutoScan.inf\r
+  UnixPkg/UnixFirmwareVolumePei/UnixFwh.inf\r
+  UnixPkg/UnixThunkPpiToProtocolPei/UnixThunkPpiToProtocol.inf\r
+  MdeModulePkg/Core/DxeIplPeim/DxeIpl.inf\r
+\r
+  ##\r
+  #  DXE Phase modules\r
+  ##\r
+  MdeModulePkg/Core/Dxe/DxeMain.inf {\r
+    <LibraryClasses>\r
+      NULL|MdeModulePkg/Library/DxeCrc32GuidedSectionExtractLib/DxeCrc32GuidedSectionExtractLib.inf\r
+  }\r
+  MdeModulePkg/Universal/PCD/Dxe/Pcd.inf {\r
+    <LibraryClasses>\r
+      PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf\r
+  }\r
+\r
+  UnixPkg/MetronomeDxe/Metronome.inf\r
+  UnixPkg/RealTimeClockRuntimeDxe/RealTimeClock.inf\r
+  UnixPkg/ResetRuntimeDxe/Reset.inf\r
+  MdeModulePkg/Core/RuntimeDxe/RuntimeDxe.inf\r
+  UnixPkg/FvbServicesRuntimeDxe/UnixFwh.inf\r
+  MdeModulePkg/Universal/SecurityStubDxe/SecurityStubDxe.inf\r
+  MdeModulePkg/Universal/EbcDxe/EbcDxe.inf\r
+  MdeModulePkg/Universal/MemoryTest/NullMemoryTestDxe/NullMemoryTestDxe.inf\r
+  UnixPkg/UnixThunkDxe/UnixThunk.inf\r
+  UnixPkg/CpuRuntimeDxe/Cpu.inf\r
+  MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteDxe.inf\r
+  UnixPkg/MiscSubClassPlatformDxe/MiscSubClassDriver.inf\r
+  UnixPkg/TimerDxe/Timer.inf\r
+  IntelFrameworkModulePkg/Universal/StatusCode/RuntimeDxe/StatusCodeRuntimeDxe.inf\r
+  MdeModulePkg/Universal/Variable/RuntimeDxe/VariableRuntimeDxe.inf\r
+  MdeModulePkg/Universal/WatchdogTimerDxe/WatchdogTimer.inf\r
+  MdeModulePkg/Universal/MonotonicCounterRuntimeDxe/MonotonicCounterRuntimeDxe.inf\r
+  MdeModulePkg/Universal/CapsuleRuntimeDxe/CapsuleRuntimeDxe.inf\r
+  MdeModulePkg/Universal/Console/ConPlatformDxe/ConPlatformDxe.inf\r
+  MdeModulePkg/Universal/Console/ConSplitterDxe/ConSplitterDxe.inf\r
+  MdeModulePkg/Universal/Console/GraphicsConsoleDxe/GraphicsConsoleDxe.inf\r
+  MdeModulePkg/Universal/Console/TerminalDxe/TerminalDxe.inf\r
+  IntelFrameworkModulePkg/Universal/BdsDxe/BdsDxe.inf\r
+  MdeModulePkg/Universal/DevicePathDxe/DevicePathDxe.inf\r
+  MdeModulePkg/Universal/Disk/DiskIoDxe/DiskIoDxe.inf\r
+  MdeModulePkg/Universal/Disk/PartitionDxe/PartitionDxe.inf\r
+  MdeModulePkg/Universal/Disk/UnicodeCollation/EnglishDxe/EnglishDxe.inf\r
+  MdeModulePkg/Bus/Pci/PciBusDxe/PciBusDxe.inf\r
+  MdeModulePkg/Bus/Scsi/ScsiBusDxe/ScsiBusDxe.inf\r
+  MdeModulePkg/Bus/Scsi/ScsiDiskDxe/ScsiDiskDxe.inf\r
+  IntelFrameworkModulePkg/Bus/Pci/IdeBusDxe/IdeBusDxe.inf\r
+  UnixPkg/UnixBusDriverDxe/UnixBusDriver.inf\r
+\r
+  UnixPkg/UnixBlockIoDxe/UnixBlockIo.inf\r
+  UnixPkg/UnixSerialIoDxe/UnixSerialIo.inf\r
+  UnixPkg/UnixUgaDxe/UnixUga.inf\r
+  UnixPkg/UnixConsoleDxe/UnixConsole.inf\r
+  UnixPkg/UnixSimpleFileSystemDxe/UnixSimpleFileSystem.inf\r
+  MdeModulePkg/Application/HelloWorld/HelloWorld.inf\r
+\r
+  #\r
+  # Network stack drivers\r
+  # To test network drivers, need network Io driver(SnpNt32Io.dll), please refer to NETWORK-IO Subproject.\r
+  #\r
+  MdeModulePkg/Universal/Network/DpcDxe/DpcDxe.inf\r
+  MdeModulePkg/Universal/Network/ArpDxe/ArpDxe.inf\r
+  MdeModulePkg/Universal/Network/Dhcp4Dxe/Dhcp4Dxe.inf\r
+  MdeModulePkg/Universal/Network/Ip4ConfigDxe/Ip4ConfigDxe.inf\r
+  MdeModulePkg/Universal/Network/Ip4Dxe/Ip4Dxe.inf\r
+  MdeModulePkg/Universal/Network/MnpDxe/MnpDxe.inf\r
+  MdeModulePkg/Universal/Network/VlanConfigDxe/VlanConfigDxe.inf\r
+  MdeModulePkg/Universal/Network/Mtftp4Dxe/Mtftp4Dxe.inf\r
+  MdeModulePkg/Universal/Network/Tcp4Dxe/Tcp4Dxe.inf\r
+  MdeModulePkg/Universal/Network/Udp4Dxe/Udp4Dxe.inf\r
+\r
+  MdeModulePkg/Universal/SmbiosDxe/SmbiosDxe.inf\r
+  MdeModulePkg/Universal/HiiDatabaseDxe/HiiDatabaseDxe.inf\r
+  MdeModulePkg/Universal/SetupBrowserDxe/SetupBrowserDxe.inf\r
+  MdeModulePkg/Universal/PrintDxe/PrintDxe.inf\r
+  MdeModulePkg/Universal/DriverSampleDxe/DriverSampleDxe.inf {\r
+    <LibraryClasses>\r
+      PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf\r
+  }\r
+\r
+  FatPkg/EnhancedFatDxe/Fat.inf\r
+\r
diff --git a/UnixPkg/UnixPkgX64.fdf b/UnixPkg/UnixPkgX64.fdf
new file mode 100644 (file)
index 0000000..706824d
--- /dev/null
@@ -0,0 +1,376 @@
+## @file\r
+# This is Unix FDF file with UEFI HII features enabled\r
+#\r
+# Copyright (c) 2008 - 2010, Intel Corporation. All rights reserved.<BR>\r
+#\r
+#    This program and the accompanying materials\r
+#    are licensed and made available under the terms and conditions of the BSD License\r
+#    which accompanies this distribution. The full text of the license may be found at\r
+#    http://opensource.org/licenses/bsd-license.php\r
+#\r
+#    THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+#    WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+\r
+################################################################################\r
+#\r
+# FD Section\r
+# The [FD] Section is made up of the definition statements and a\r
+# description of what goes into  the Flash Device Image.  Each FD section\r
+# defines one flash "device" image.  A flash device image may be one of\r
+# the following: Removable media bootable image (like a boot floppy\r
+# image,) an Option ROM image (that would be "flashed" into an add-in\r
+# card,) a System "Flash"  image (that would be burned into a system's\r
+# flash) or an Update ("Capsule") image that will be used to update and\r
+# existing system flash.\r
+#\r
+################################################################################\r
+[FD.Fv_Recovery]\r
+#\r
+# In OS X PEIMs are really XIP, so we need to make this address match the malloced \r
+# buffer for the FD (0x41000000). If this address does not match the FV will get\r
+# relocated in place (works, but not a great idea).\r
+#\r
+BaseAddress   = 0x41000000|gEfiUnixPkgTokenSpaceGuid.PcdUnixFdBaseAddress   #The base address of the FLASH Device.\r
+Size          = 0x004a0000|gEfiUnixPkgTokenSpaceGuid.PcdUnixFirmwareFdSize  #The size in bytes of the FLASH Device\r
+ErasePolarity = 1\r
+BlockSize     = 0x10000\r
+NumBlocks     = 0x4a\r
+\r
+################################################################################\r
+#\r
+# Following are lists of FD Region layout which correspond to the locations of different\r
+# images within the flash device.\r
+#\r
+# Regions must be defined in ascending order and may not overlap.\r
+#\r
+# A Layout Region start with a eight digit hex offset (leading "0x" required) followed by\r
+# the pipe "|" character, followed by the size of the region, also in hex with the leading\r
+# "0x" characters. Like:\r
+# Offset|Size\r
+# PcdOffsetCName|PcdSizeCName\r
+# RegionType <FV, DATA, or FILE>\r
+#\r
+################################################################################\r
+0x00000000|0x00480000\r
+gEfiUnixPkgTokenSpaceGuid.PcdUnixFlashFvRecoveryBase|gEfiUnixPkgTokenSpaceGuid.PcdUnixFlashFvRecoverySize\r
+FV = FvRecovery\r
+\r
+0x00480000|0x0000c000\r
+gEfiUnixPkgTokenSpaceGuid.PcdUnixFlashNvStorageVariableBase|gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableSize\r
+#NV_VARIABLE_STORE\r
+DATA = {\r
+  ## This is the EFI_FIRMWARE_VOLUME_HEADER\r
+  # ZeroVector []\r
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+  # FileSystemGuid: gEfiSystemNvDataFvGuid         =\r
+  #  { 0xFFF12B8D, 0x7696, 0x4C8B, { 0xA9, 0x85, 0x27, 0x47, 0x07, 0x5B, 0x4F, 0x50 }}\r
+  0x8D, 0x2B, 0xF1, 0xFF, 0x96, 0x76, 0x8B, 0x4C,\r
+  0xA9, 0x85, 0x27, 0x47, 0x07, 0x5B, 0x4F, 0x50,\r
+  # FvLength: 0x20000\r
+  0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+  # Signature "_FVH"       #Attributes\r
+  0x5f, 0x46, 0x56, 0x48, 0xff, 0xfe, 0x04, 0x00,\r
+  # HeaderLength #CheckSum #ExtHeaderOffset #Reserved #Revision\r
+  0x48, 0x00, 0x36, 0x09, 0x00, 0x00, 0x00, 0x02,\r
+  # Blockmap[0]: 2 Blocks * 0x10000 Bytes / Block\r
+  0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,\r
+  # Blockmap[1]: End\r
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+  ## This is the VARIABLE_STORE_HEADER\r
+  #Signature: gEfiVariableGuid =\r
+  #  { 0xddcf3616, 0x3275, 0x4164, { 0x98, 0xb6, 0xfe, 0x85, 0x70, 0x7f, 0xfe, 0x7d }}\r
+  0x16, 0x36, 0xcf, 0xdd, 0x75, 0x32, 0x64, 0x41,\r
+  0x98, 0xb6, 0xfe, 0x85, 0x70, 0x7f, 0xfe, 0x7d,\r
+  #Size: 0xc000 (gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableSize) - 0x48 (size of EFI_FIRMWARE_VOLUME_HEADER) = 0xBFB8\r
+  # This can speed up the Variable Dispatch a bit.\r
+  0xB8, 0xBF, 0x00, 0x00,\r
+  #FORMATTED: 0x5A #HEALTHY: 0xFE #Reserved: UINT16 #Reserved1: UINT32\r
+  0x5A, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00\r
+}\r
+\r
+0x0048c000|0x00002000\r
+#NV_EVENT_LOG\r
+gEfiUnixPkgTokenSpaceGuid.PcdUnixFlashNvStorageEventLogBase|gEfiUnixPkgTokenSpaceGuid.PcdUnixFlashNvStorageEventLogSize\r
+\r
+0x0048e000|0x00002000\r
+gEfiUnixPkgTokenSpaceGuid.PcdUnixFlashNvStorageFtwWorkingBase|gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingSize\r
+#NV_FTW_WORKING\r
+DATA = {\r
+  # EFI_FAULT_TOLERANT_WORKING_BLOCK_HEADER->Signature = gEfiSystemNvDataFvGuid         =\r
+  #  { 0xFFF12B8D, 0x7696, 0x4C8B, { 0xA9, 0x85, 0x27, 0x47, 0x07, 0x5B, 0x4F, 0x50 }}\r
+  0x8D, 0x2B, 0xF1, 0xFF, 0x96, 0x76, 0x8B, 0x4C,\r
+  0xA9, 0x85, 0x27, 0x47, 0x07, 0x5B, 0x4F, 0x50,\r
+  # Crc:UINT32            #WorkingBlockValid:1, WorkingBlockInvalid:1, Reserved\r
+  0x77, 0x13, 0x9B, 0xD7, 0xFE, 0xFF, 0xFF, 0xFF,\r
+  # WriteQueueSize: UINT64\r
+  0xE0, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00\r
+}\r
+\r
+0x00490000|0x00010000\r
+#NV_FTW_SPARE\r
+gEfiUnixPkgTokenSpaceGuid.PcdUnixFlashNvStorageFtwSpareBase|gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareSize\r
+\r
+################################################################################\r
+#\r
+# FV Section\r
+#\r
+# [FV] section is used to define what components or modules are placed within a flash\r
+# device file.  This section also defines order the components and modules are positioned\r
+# within the image.  The [FV] section consists of define statements, set statements and\r
+# module statements.\r
+#\r
+################################################################################\r
+[FV.FvRecovery]\r
+FvAlignment        = 16         #FV alignment and FV attributes setting.\r
+ERASE_POLARITY     = 1\r
+MEMORY_MAPPED      = TRUE\r
+STICKY_WRITE       = TRUE\r
+LOCK_CAP           = TRUE\r
+LOCK_STATUS        = TRUE\r
+WRITE_DISABLED_CAP = TRUE\r
+WRITE_ENABLED_CAP  = TRUE\r
+WRITE_STATUS       = TRUE\r
+WRITE_LOCK_CAP     = TRUE\r
+WRITE_LOCK_STATUS  = TRUE\r
+READ_DISABLED_CAP  = TRUE\r
+READ_ENABLED_CAP   = TRUE\r
+READ_STATUS        = TRUE\r
+READ_LOCK_CAP      = TRUE\r
+READ_LOCK_STATUS   = TRUE\r
+\r
+################################################################################\r
+#\r
+# The INF statements point to EDK component and EDK II module INF files, which will be placed into this FV image.\r
+# Parsing tools will scan the INF file to determine the type of component or module.\r
+# The component or module type is used to reference the standard rules\r
+# defined elsewhere in the FDF file.\r
+#\r
+# The format for INF statements is:\r
+# INF $(PathAndInfFileName)\r
+#\r
+################################################################################\r
+##\r
+#  PEI Phase modules\r
+##\r
+##\r
+#  PEI Apriori file example, more PEIM module added later.\r
+##\r
+APRIORI PEI {\r
+  INF  MdeModulePkg/Universal/PCD/Pei/Pcd.inf\r
+  INF  IntelFrameworkModulePkg/Universal/StatusCode/Pei/StatusCodePei.inf\r
+  }\r
+APRIORI DXE {\r
+  INF  MdeModulePkg/Universal/PCD/Dxe/Pcd.inf\r
+  INF  IntelFrameworkModulePkg/Universal/StatusCode/RuntimeDxe/StatusCodeRuntimeDxe.inf\r
+  INF  UnixPkg/MetronomeDxe/Metronome.inf\r
+  }\r
+INF  MdeModulePkg/Core/Pei/PeiMain.inf\r
+INF  MdeModulePkg/Universal/PCD/Pei/Pcd.inf\r
+INF  IntelFrameworkModulePkg/Universal/StatusCode/Pei/StatusCodePei.inf\r
+INF  UnixPkg/BootModePei/BootModePei.inf\r
+INF  UnixPkg/UnixFlashMapPei/FlashMap.inf\r
+INF  UnixPkg/UnixAutoScanPei/UnixAutoScan.inf\r
+INF  UnixPkg/UnixFirmwareVolumePei/UnixFwh.inf\r
+INF  MdeModulePkg/Universal/Variable/Pei/VariablePei.inf\r
+INF  UnixPkg/UnixThunkPpiToProtocolPei/UnixThunkPpiToProtocol.inf\r
+INF  MdeModulePkg/Core/DxeIplPeim/DxeIpl.inf\r
+\r
+##\r
+#  DXE Phase modules\r
+##\r
+INF  MdeModulePkg/Core/Dxe/DxeMain.inf\r
+INF  IntelFrameworkModulePkg/Universal/StatusCode/RuntimeDxe/StatusCodeRuntimeDxe.inf\r
+INF  MdeModulePkg/Universal/PCD/Dxe/Pcd.inf\r
+INF  UnixPkg/MetronomeDxe/Metronome.inf\r
+INF  UnixPkg/RealTimeClockRuntimeDxe/RealTimeClock.inf\r
+INF  UnixPkg/ResetRuntimeDxe/Reset.inf\r
+INF  MdeModulePkg/Core/RuntimeDxe/RuntimeDxe.inf\r
+INF  UnixPkg/FvbServicesRuntimeDxe/UnixFwh.inf\r
+INF  MdeModulePkg/Universal/SecurityStubDxe/SecurityStubDxe.inf\r
+INF  MdeModulePkg/Universal/EbcDxe/EbcDxe.inf\r
+INF  MdeModulePkg/Universal/MemoryTest/NullMemoryTestDxe/NullMemoryTestDxe.inf\r
+INF  UnixPkg/UnixThunkDxe/UnixThunk.inf\r
+INF  UnixPkg/CpuRuntimeDxe/Cpu.inf\r
+INF  MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteDxe.inf\r
+INF  UnixPkg/MiscSubClassPlatformDxe/MiscSubClassDriver.inf\r
+INF  UnixPkg/TimerDxe/Timer.inf\r
+INF  MdeModulePkg/Universal/Variable/RuntimeDxe/VariableRuntimeDxe.inf\r
+INF  MdeModulePkg/Universal/WatchdogTimerDxe/WatchdogTimer.inf\r
+INF  MdeModulePkg/Universal/MonotonicCounterRuntimeDxe/MonotonicCounterRuntimeDxe.inf\r
+INF  MdeModulePkg/Universal/CapsuleRuntimeDxe/CapsuleRuntimeDxe.inf\r
+INF  MdeModulePkg/Universal/Console/ConPlatformDxe/ConPlatformDxe.inf\r
+INF  MdeModulePkg/Universal/Console/ConSplitterDxe/ConSplitterDxe.inf\r
+INF  MdeModulePkg/Universal/Console/GraphicsConsoleDxe/GraphicsConsoleDxe.inf\r
+INF  MdeModulePkg/Universal/Console/TerminalDxe/TerminalDxe.inf\r
+INF  MdeModulePkg/Universal/DevicePathDxe/DevicePathDxe.inf\r
+INF  MdeModulePkg/Universal/Disk/DiskIoDxe/DiskIoDxe.inf\r
+INF  MdeModulePkg/Universal/Disk/PartitionDxe/PartitionDxe.inf\r
+INF  MdeModulePkg/Universal/Disk/UnicodeCollation/EnglishDxe/EnglishDxe.inf\r
+INF  MdeModulePkg/Bus/Pci/PciBusDxe/PciBusDxe.inf\r
+INF  MdeModulePkg/Bus/Scsi/ScsiBusDxe/ScsiBusDxe.inf\r
+INF  MdeModulePkg/Bus/Scsi/ScsiDiskDxe/ScsiDiskDxe.inf\r
+INF  IntelFrameworkModulePkg/Bus/Pci/IdeBusDxe/IdeBusDxe.inf\r
+INF  UnixPkg/UnixBusDriverDxe/UnixBusDriver.inf\r
\r
+INF  MdeModulePkg/Universal/SmbiosDxe/SmbiosDxe.inf\r
+INF  UnixPkg/UnixBlockIoDxe/UnixBlockIo.inf\r
+INF  UnixPkg/UnixSerialIoDxe/UnixSerialIo.inf\r
+INF  UnixPkg/UnixUgaDxe/UnixUga.inf\r
+#INF  UnixPkg/UnixConsoleDxe/UnixConsole.inf\r
+INF  MdeModulePkg/Universal/HiiDatabaseDxe/HiiDatabaseDxe.inf\r
+INF  MdeModulePkg/Universal/SetupBrowserDxe/SetupBrowserDxe.inf\r
+INF  MdeModulePkg/Universal/PrintDxe/PrintDxe.inf\r
+INF  IntelFrameworkModulePkg/Universal/BdsDxe/BdsDxe.inf \r
+INF  UnixPkg/UnixSimpleFileSystemDxe/UnixSimpleFileSystem.inf\r
+INF  MdeModulePkg/Universal/DriverSampleDxe/DriverSampleDxe.inf\r
+INF  MdeModulePkg/Application/HelloWorld/HelloWorld.inf\r
+\r
+#\r
+# Need to port this to UnixPkg\r
+# Network stack drivers\r
+# To test network drivers, need network Io driver(SnpNt32Io.dll), please refer to NETWORK-IO Subproject.\r
+#\r
+#INF  MdeModulePkg/Universal/Network/DpcDxe/DpcDxe.inf\r
+#INF  MdeModulePkg/Universal/Network/ArpDxe/ArpDxe.inf\r
+#INF  MdeModulePkg/Universal/Network/Dhcp4Dxe/Dhcp4Dxe.inf\r
+#INF  MdeModulePkg/Universal/Network/Ip4ConfigDxe/Ip4ConfigDxe.inf\r
+#INF  MdeModulePkg/Universal/Network/Ip4Dxe/Ip4Dxe.inf\r
+#INF  MdeModulePkg/Universal/Network/MnpDxe/MnpDxe.inf\r
+#INF  MdeModulePkg/Universal/Network/VlanConfigDxe/VlanConfigDxe.inf\r
+#INF  MdeModulePkg/Universal/Network/Mtftp4Dxe/Mtftp4Dxe.inf\r
+#INF  MdeModulePkg/Universal/Network/Tcp4Dxe/Tcp4Dxe.inf\r
+#INF  MdeModulePkg/Universal/Network/Udp4Dxe/Udp4Dxe.inf\r
+#INF  UnixPkg/SnpUnixDxe/SnpUnixDxe.inf\r
\r
+INF FatPkg/EnhancedFatDxe/Fat.inf\r
+\r
+FILE APPLICATION = PCD(gEfiIntelFrameworkModulePkgTokenSpaceGuid.PcdShellFile) {\r
+  SECTION PE32 =Build/GccShellPkg/DEBUG_XCODE32/X64/ShellFull.efi\r
+ }\r
+\r
+# Note: Warning current X64 port does not use EFI ABI so thease bins will crash\r
+#INF  RuleOverride = BINARY USE = X64 FatBinPkg/EnhancedFatDxe/Fat.inf\r
+#INF  RuleOverride = BINARY USE = X64 EdkShellBinPkg/FullShell/FullShell.inf\r
+\r
+\r
+FILE FREEFORM = PCD(gEfiIntelFrameworkModulePkgTokenSpaceGuid.PcdLogoFile) {\r
+        SECTION RAW = MdeModulePkg/Logo/Logo.bmp\r
+      }\r
+   \r
+   \r
+################################################################################\r
+#  \r
+# Rules are use with the [FV] section's module INF type to define\r
+# how an FFS file is created for a given INF file. The following Rule are the default\r
+# rules for the different module type. User can add the customized rules to define the\r
+# content of the FFS file.\r
+#  \r
+################################################################################\r
+   \r
+   \r
+############################################################################\r
+# Example of a DXE_DRIVER FFS file with a Checksum encapsulation section   # \r
+############################################################################\r
+#  \r
+#[Rule.Common.DXE_DRIVER]\r
+#  FILE DRIVER = $(NAMED_GUID) {\r
+#    DXE_DEPEX    DXE_DEPEX Optional      $(INF_OUTPUT)/$(MODULE_NAME).depex\r
+#    COMPRESS PI_STD {\r
+#      GUIDED {\r
+#        PE32     PE32                    $(INF_OUTPUT)/$(MODULE_NAME).efi\r
+#        UI       STRING="$(MODULE_NAME)" Optional\r
+#        VERSION  STRING="$(INF_VERSION)" Optional BUILD_NUM=$(BUILD_NUMBER)\r
+#      }\r
+#    }\r
+#  }\r
+#\r
+############################################################################\r
+\r
+[Rule.Common.PEI_CORE]\r
+  FILE PEI_CORE = $(NAMED_GUID) {\r
+    PE32     PE32    Align=32       $(INF_OUTPUT)/$(MODULE_NAME).efi\r
+    UI       STRING ="$(MODULE_NAME)" Optional         \r
+    VERSION  STRING ="$(INF_VERSION)" Optional BUILD_NUM=$(BUILD_NUMBER)    \r
+  }\r
+\r
+[Rule.Common.PEIM]\r
+  FILE PEIM = $(NAMED_GUID) {\r
+     PEI_DEPEX PEI_DEPEX Optional        $(INF_OUTPUT)/$(MODULE_NAME).depex\r
+     PE32      PE32   Align=32       $(INF_OUTPUT)/$(MODULE_NAME).efi\r
+     UI       STRING="$(MODULE_NAME)" Optional         \r
+     VERSION  STRING="$(INF_VERSION)" Optional BUILD_NUM=$(BUILD_NUMBER)   \r
+  }\r
+\r
+[Rule.Common.DXE_CORE]\r
+  FILE DXE_CORE = $(NAMED_GUID) {\r
+    COMPRESS PI_STD {\r
+      PE32     PE32           $(INF_OUTPUT)/$(MODULE_NAME).efi\r
+      UI       STRING="$(MODULE_NAME)" Optional\r
+      VERSION  STRING="$(INF_VERSION)" Optional BUILD_NUM=$(BUILD_NUMBER)\r
+    }\r
+  }\r
+\r
+[Rule.Common.UEFI_DRIVER]\r
+  FILE DRIVER = $(NAMED_GUID) {\r
+    DXE_DEPEX    DXE_DEPEX Optional      $(INF_OUTPUT)/$(MODULE_NAME).depex\r
+    COMPRESS PI_STD {\r
+      GUIDED {\r
+        PE32     PE32                    $(INF_OUTPUT)/$(MODULE_NAME).efi\r
+        UI       STRING="$(MODULE_NAME)" Optional\r
+        VERSION  STRING="$(INF_VERSION)" Optional BUILD_NUM=$(BUILD_NUMBER)\r
+      }\r
+    }\r
+  }\r
+\r
+[Rule.Common.DXE_DRIVER]\r
+  FILE DRIVER = $(NAMED_GUID) {\r
+    DXE_DEPEX    DXE_DEPEX Optional      $(INF_OUTPUT)/$(MODULE_NAME).depex\r
+    COMPRESS PI_STD {\r
+      GUIDED {\r
+        PE32     PE32                    $(INF_OUTPUT)/$(MODULE_NAME).efi\r
+        UI       STRING="$(MODULE_NAME)" Optional\r
+        VERSION  STRING="$(INF_VERSION)" Optional BUILD_NUM=$(BUILD_NUMBER)\r
+      }\r
+    }\r
+  }\r
+\r
+[Rule.Common.DXE_RUNTIME_DRIVER]\r
+  FILE DRIVER = $(NAMED_GUID) {\r
+    DXE_DEPEX    DXE_DEPEX Optional      $(INF_OUTPUT)/$(MODULE_NAME).depex\r
+    COMPRESS PI_STD {\r
+      GUIDED {\r
+        PE32     PE32                    $(INF_OUTPUT)/$(MODULE_NAME).efi\r
+        UI       STRING="$(MODULE_NAME)" Optional\r
+        VERSION  STRING="$(INF_VERSION)" Optional BUILD_NUM=$(BUILD_NUMBER)\r
+      }\r
+    }\r
+  }\r
+\r
+[Rule.Common.UEFI_APPLICATION]\r
+  FILE APPLICATION = $(NAMED_GUID) {\r
+    COMPRESS PI_STD {\r
+      GUIDED {\r
+        PE32     PE32                    $(INF_OUTPUT)/$(MODULE_NAME).efi\r
+        UI       STRING="$(MODULE_NAME)" Optional\r
+        VERSION  STRING="$(INF_VERSION)" Optional BUILD_NUM=$(BUILD_NUMBER)\r
+      }\r
+    }\r
+  }\r
+\r
+[Rule.Common.UEFI_DRIVER.BINARY]\r
+  FILE DRIVER = $(NAMED_GUID) {\r
+    DXE_DEPEX DXE_DEPEX Optional      |.depex\r
+    PE32      PE32                    |.efi\r
+    UI        STRING="$(MODULE_NAME)" Optional\r
+    VERSION   STRING="$(INF_VERSION)" Optional BUILD_NUM=$(BUILD_NUMBER)\r
+  }\r
+\r
+[Rule.Common.UEFI_APPLICATION.BINARY]\r
+  FILE APPLICATION = $(NAMED_GUID) {\r
+    PE32      PE32                    |.efi\r
+    UI        STRING="$(MODULE_NAME)" Optional\r
+    VERSION   STRING="$(INF_VERSION)" Optional BUILD_NUM=$(BUILD_NUMBER)\r
+  }\r
+\r
index bca74ac..3596a44 100644 (file)
                showTypeColumn = 0;
                sourceDirectories = (
                );
-               startupPath = ../../../Build/Unix/DEBUG_XCODE32/X64;
+               startupPath = ../../../Build/UnixX64/DEBUG_XCODE32/X64;
        };
        BA11A1020FB10BCE00D06FEC /* SecMain.dll */ = {
                isa = PBXFileReference;
                lastKnownFileType = "compiled.mach-o.executable";
                name = SecMain.dll;
-               path = ../../../Build/Unix/DEBUG_XCODE32/X64/SecMain;
+               path = ../../../Build/UnixX64/DEBUG_XCODE32/X64/SecMain;
                sourceTree = SOURCE_ROOT;
        };
        BA11A11A0FB10E0700D06FEC /* SecGdbScriptBreak */ = {
index 29a844f..077fb86 100755 (executable)
@@ -100,7 +100,7 @@ done
 echo $PATH
 echo `which build`
 # Uncomment this if you want to build the shell. 
-#build -p $WORKSPACE/EdkShellPkg/EdkShellPkg.dsc -a IA32 -t $TARGET_TOOLS $1 $2 $3 $4 $5 $6 $7 $8
-build -p $WORKSPACE/UnixPkg/UnixPkg.dsc         -a IA32 -t $TARGET_TOOLS $1 $2 $3 $4 $5 $6 $7 $8
+#build -p $WORKSPACE/GccShellPkg/GccShellPkg.dsc -a IA32 -t $TARGET_TOOLS -n 3 $1 $2 $3 $4 $5 $6 $7 $8
+build -p $WORKSPACE/UnixPkg/UnixPkg.dsc         -a IA32 -t $TARGET_TOOLS -n 3 $1 $2 $3 $4 $5 $6 $7 $8
 exit $?
 
index 6fc9f0c..90e2b7d 100755 (executable)
@@ -53,7 +53,7 @@ case `uname` in
     
 esac
 
-BUILD_ROOT_ARCH=$WORKSPACE/Build/Unix/DEBUG_"$TARGET_TOOLS"/X64
+BUILD_ROOT_ARCH=$WORKSPACE/Build/UnixX64/DEBUG_"$TARGET_TOOLS"/X64
 
 if  [[ ! -f `which build` || ! -f `which GenFv` ]];
 then
@@ -80,7 +80,7 @@ do
         # This .gdbinit script sets a breakpoint that loads symbols for the PE/COFFEE
         # images that get loaded in SecMain
         #
-        cp $WORKSPACE/UnixPkg/.gdbinit $WORKSPACE/Build/Unix/DEBUG_"$TARGET_TOOLS"/X64
+        cp $WORKSPACE/UnixPkg/.gdbinit $WORKSPACE/Build/UnixX64/DEBUG_"$TARGET_TOOLS"/X64
         ;;
     esac 
 
@@ -100,7 +100,7 @@ done
 echo $PATH
 echo `which build`
 # Uncomment this if you want to build the shell. 
-#build -p $WORKSPACE/EdkShellPkg/EdkShellPkg.dsc -a X64 -t $TARGET_TOOLS $1 $2 $3 $4 $5 $6 $7 $8
-build -p $WORKSPACE/UnixPkg/UnixPkg.dsc         -a X64 -t $TARGET_TOOLS $1 $2 $3 $4 $5 $6 $7 $8
+build -p $WORKSPACE/GccShellPkg/GccShellPkg.dsc -a X64 -t $TARGET_TOOLS -n 3 $1 $2 $3 $4 $5 $6 $7 $8
+build -p $WORKSPACE/UnixPkg/UnixPkgX64.dsc      -a X64 -t $TARGET_TOOLS -n 3 $1 $2 $3 $4 $5 $6 $7 $8
 exit $?