From 6451e0daf7f733a27e1afb3c7ac662a620d8b93b Mon Sep 17 00:00:00 2001
From: Olivier Martin <olivier.martin@arm.com>
Date: Tue, 14 Jan 2014 14:43:50 +0000
Subject: [PATCH] EDK Shell patch to support GCC

---
 DeviceTree/devicetree.c      |   4 +-
 DeviceTree/devicetree.h      |   1 +
 DeviceTree/devicetree.inf    |  28 +--
 EfiCompress/Compress.h       |   2 +-
 EfiCompress/CompressMain.c   |   2 +-
 EfiCompress/compress.c       |   2 +-
 EfiCompress/compress.inf     |  32 +--
 EfiDecompress/Decompress.c   |   8 +-
 EfiDecompress/Decompress.h   |   2 +-
 EfiDecompress/Decompress.inf |  33 +--
 IfConfig/IfConfig.c          |   6 +-
 IfConfig/IfConfig.h          |   1 +
 IfConfig/IfConfig.inf        |  34 +--
 IfConfig/ShellNetHelper.h    |   1 +
 IpConfig/IpConfig.c          |   4 +-
 IpConfig/IpConfig.h          |   2 +-
 IpConfig/IpConfig.inf        |  29 +--
 Library/Aarch64/efilibplat.h |  38 ++++
 Library/Arm/efilibplat.h     |  39 ++++
 Library/CRC.c                |   2 +-
 Library/CRC.h                |   4 +-
 Library/ConsistMapping.c     |   2 +-
 Library/ConsistMapping.h     |   4 +-
 Library/DPath.c              |   6 +-
 Library/DPath.h              |   3 +-
 Library/Data.c               |   2 +-
 Library/Ebc/EfiLibPlat.h     |   1 +
 Library/EfiPart.h            |   1 +
 Library/EfiShellLib.h        |  11 +-
 Library/EfiShellLib.inf      |  51 +++--
 Library/Event.c              |   2 +-
 Library/Event.h              |   4 +-
 Library/FileIO.c             |   6 +-
 Library/FileIO.h             |   4 +-
 Library/Handle.c             |   9 +-
 Library/Handle.h             |   1 +
 Library/HiiSupport.c         |   6 +-
 Library/HiiSupport.h         |   1 +
 Library/IA32/efilibplat.h    |   2 +-
 Library/IO.c                 |  13 +-
 Library/IO.h                 |   4 +-
 Library/IPF/efilibplat.h     |   1 +
 Library/IPF/libsalpal.h      |   2 +-
 Library/IPF/palproc.h        |   1 +
 Library/Init.c               |   2 +-
 Library/LinkedList.h         |   4 +-
 Library/Lock.c               |   2 +-
 Library/Lock.h               |   4 +-
 Library/Mem.c                |   2 +-
 Library/Mem.h                |   4 +-
 Library/Misc.c               |  15 +-
 Library/Misc.h               |   1 +
 Library/Perf.c               |   2 +-
 Library/RtData.c             |   2 +-
 Library/ShellDebug.c         |   2 +-
 Library/ShellDebug.h         |   1 +
 Library/ShellEnvInt.c        |   2 +-
 Library/ShellEnvInt.h        |   4 +-
 Library/Str.c                |   6 +-
 Library/Str.h                |   1 +
 Library/VarCheck.c           |   2 +-
 Library/VarCheck.h           |   3 +-
 Library/X64/efilibplat.h     |   1 +
 LoadPciRom/LoadPciRom.c      |   8 +-
 LoadPciRom/LoadPciRom.h      |   1 +
 LoadPciRom/LoadPciRom.inf    |  28 +--
 Ping/Ping.c                  |  27 ++-
 Ping/Ping.h                  |   1 +
 Ping/Ping.inf                |  34 +--
 Shell.inf                    | 305 +++++++++++++-------------
 ShellFull.inf                | 494 ++++++++++++++++++++++---------------------
 SmbiosView/EventLogInfo.c    |   2 +-
 SmbiosView/EventLogInfo.h    |   1 +
 SmbiosView/LibSmbios.h       |   1 +
 SmbiosView/LibSmbiosView.c   |  10 +-
 SmbiosView/LibSmbiosView.h   |   3 +-
 SmbiosView/PrintInfo.c       |   2 +-
 SmbiosView/PrintInfo.h       |   1 +
 SmbiosView/QueryTable.c      |   2 +-
 SmbiosView/QueryTable.h      |   1 +
 SmbiosView/Smbios.h          |   1 +
 SmbiosView/Smbiosview.inf    |  33 +--
 SmbiosView/smbiosview.c      |   4 +-
 SmbiosView/smbiosview.h      |   1 +
 TelnetMgmt/TelnetMgmt.c      |   4 +-
 TelnetMgmt/TelnetMgmt.h      |   2 +-
 TelnetMgmt/TelnetMgmt.inf    |  29 +--
 TelnetMgmt/TelnetServer.h    |   1 +
 attrib/attrib.c              |   6 +-
 attrib/attrib.h              |   3 +-
 attrib/attrib.inf            |  28 +--
 cls/cls.c                    |   4 +-
 cls/cls.h                    |   1 +
 cls/cls.inf                  |  29 +--
 comp/comp.c                  |   2 +-
 comp/comp.h                  |   2 +-
 comp/comp.inf                |  31 +--
 cp/cp.c                      |  10 +-
 cp/cp.h                      |   3 +-
 cp/cp.inf                    |  29 +--
 date/date.c                  |  10 +-
 date/date.h                  |   1 +
 date/date.inf                |  29 +--
 dblk/dblk.c                  |   2 +-
 dblk/dblk.h                  |   1 +
 dblk/dblk.inf                |  31 +--
 dblk/efidump.c               |  18 +-
 devices/devices.c            |   4 +-
 devices/devices.h            |   1 +
 devices/devices.inf          |  28 +--
 dmem/MemCommonPart.c         |  14 +-
 dmem/MemCommonPart.h         |   2 +-
 dmem/debug.h                 |   1 +
 dmem/dmem.inf                |  30 +--
 dmem/efidump.c               |  20 +-
 dmpstore/dmpstore.c          |   4 +-
 dmpstore/dmpstore.h          |   1 +
 dmpstore/dmpstore.inf        |  31 +--
 drivers/drivers.c            |   6 +-
 drivers/drivers.h            |   1 +
 drivers/drivers.inf          |  28 +--
 drvcfg/drvcfg.c              |   4 +-
 drvcfg/drvcfg.h              |   1 +
 drvcfg/drvcfg.inf            |  28 +--
 drvdiag/drvdiag.c            |   4 +-
 drvdiag/drvdiag.h            |   1 +
 drvdiag/drvdiag.inf          |  28 +--
 edit/edit.inf                |  32 +--
 edit/editor.h                |   5 +-
 edit/editortype.h            |   7 +-
 edit/libEditor.c             |  24 +--
 edit/libFileBuffer.c         |  24 ++-
 edit/libInputBar.c           |  26 +--
 edit/libMenuBar.c            |   9 +-
 edit/libMisc.h               |   1 +
 edit/libStatusBar.c          |  11 +-
 edit/libTitleBar.c           |  17 +-
 edit/libeditor.h             |   1 +
 edit/libfilebuffer.h         |   1 +
 edit/libinputbar.h           |   1 +
 edit/libmenubar.h            |   1 +
 edit/libstatusbar.h          |   1 +
 edit/libtitlebar.h           |   1 +
 edit/main.c                  |  30 +--
 err/DebugMask.h              |   1 +
 err/err.c                    |  12 +-
 err/err.h                    |   2 +-
 err/err.inf                  |  31 +--
 guid/guid.c                  |   4 +-
 guid/guid.h                  |   2 +-
 guid/guid.inf                |  33 +--
 hexedit/heditor.h            |   5 +-
 hexedit/heditortype.h        |   7 +-
 hexedit/hexedit.inf          |  31 +--
 hexedit/libBufferImage.c     |  37 ++--
 hexedit/libEditor.c          |  33 +--
 hexedit/libInputBar.c        |  11 +-
 hexedit/libMemImage.c        |   8 +-
 hexedit/libMenuBar.c         |  13 +-
 hexedit/libMisc.h            |   3 +-
 hexedit/libStatusBar.c       |   1 +
 hexedit/libTitleBar.c        |  24 ++-
 hexedit/libbufferimage.h     |   1 +
 hexedit/libclipboard.h       |   1 +
 hexedit/libdiskimage.c       |  17 +-
 hexedit/libdiskimage.h       |   1 +
 hexedit/libeditor.h          |   1 +
 hexedit/libfileimage.h       |   1 +
 hexedit/libinputbar.h        |   1 +
 hexedit/libmemimage.h        |   1 +
 hexedit/libmenubar.h         |   3 +-
 hexedit/libstatusbar.h       |   1 +
 hexedit/libtitlebar.h        |   1 +
 hexedit/main.c               |  78 +++----
 inc/shellenv.h               |   1 +
 inc/shelltypes.h             |   3 +-
 load/load.c                  |   2 +-
 load/load.h                  |   1 +
 load/load.inf                |  29 +--
 ls/ls.c                      |  11 +-
 ls/ls.h                      |   3 +-
 ls/ls.inf                    |  28 +--
 mem/MemCommonPart.c          |  14 +-
 mem/MemCommonPart.h          |   2 +-
 mem/debug.h                  |   1 +
 mem/efidump.c                |  20 +-
 mem/mem.inf                  |  30 +--
 memmap/memmap.c              |   6 +-
 memmap/memmap.h              |   1 +
 memmap/memmap.inf            |  28 +--
 mkdir/mkdir.c                |   4 +-
 mkdir/mkdir.h                |   3 +-
 mkdir/mkdir.inf              |  28 +--
 mm/mm.c                      |  72 +++----
 mm/mm.h                      |   1 +
 mm/mm.inf                    |  28 +--
 mode/mode.c                  |   2 +-
 mode/mode.h                  |   1 +
 mode/mode.inf                |  28 +--
 mount/mount.c                |   4 +-
 mount/mount.h                |   1 +
 mount/mount.inf              |  28 +--
 mv/mv.c                      |   4 +-
 mv/mv.h                      |   2 +-
 mv/mv.inf                    |  28 +--
 newshell/FakeHii.c           |   6 +-
 newshell/FakeHii.h           |   1 +
 newshell/init.c              |  18 +-
 newshell/nshell.h            |   3 +-
 newshell/nshell.inf          |  34 +--
 openinfo/openinfo.c          |   4 +-
 openinfo/openinfo.h          |   1 +
 openinfo/openinfo.inf        |  28 +--
 pci/pci.c                    |  19 +-
 pci/pci.h                    |   3 +-
 pci/pci.inf                  |  28 +--
 pci/pci_class.c              |   2 +-
 pci/pci_class.h              |   3 +-
 reset/reset.c                |   2 +-
 reset/reset.h                |   1 +
 reset/reset.inf              |  28 +--
 rm/rm.c                      |   2 +-
 rm/rm.h                      |   1 +
 rm/rm.inf                    |  28 +--
 sermode/sermode.c            |   8 +-
 sermode/sermode.h            |   1 +
 sermode/sermode.inf          |  28 +--
 shellenv/Connect.c           |  20 +-
 shellenv/ConsoleProxy.c      |   6 +-
 shellenv/batch.c             |  15 +-
 shellenv/conio.c             |   2 +-
 shellenv/dprot.c             |   8 +-
 shellenv/echo.c              |   2 +-
 shellenv/exec.c              |  18 +-
 shellenv/for.c               |   7 +-
 shellenv/help.c              |   2 +-
 shellenv/if.c                |   3 -
 shellenv/init.c              |   2 +-
 shellenv/map.c               |  16 +-
 shellenv/parsecmd.h          |   3 +-
 shellenv/pause.c             |   2 +-
 shellenv/protid.c            |  22 +-
 shellenv/shelle.h            |   1 +
 shellenv/shellenvguid.h      |   1 +
 shellenv/var.c               |   6 +-
 stall/stall.c                |   2 +-
 stall/stall.h                |   1 +
 stall/stall.inf              |  28 +--
 time/time.c                  |  10 +-
 time/time.h                  |   1 +
 time/time.inf                |  28 +--
 touch/touch.c                |   2 +-
 touch/touch.h                |   2 +-
 touch/touch.inf              |  29 +--
 type/type.c                  |   4 +-
 type/type.h                  |   1 +
 type/type.inf                |  28 +--
 tzone/timezone.inf           |  32 +--
 tzone/tzone.c                |   4 +-
 tzone/tzone.h                |   1 +
 unload/unload.c              |  18 +-
 unload/unload.h              |   1 +
 unload/unload.inf            |  29 +--
 ver/Ebc/verEbc.c             |   2 +-
 ver/Ver.inf                  |  36 ++--
 ver/ver.c                    |   2 +-
 ver/ver.h                    |   1 +
 vol/Vol.inf                  |  28 +--
 vol/vol.c                    |   4 +-
 vol/vol.h                    |   1 +
 270 files changed, 1985 insertions(+), 1610 deletions(-)
 create mode 100644 Library/Aarch64/efilibplat.h
 create mode 100644 Library/Arm/efilibplat.h

diff --git a/DeviceTree/devicetree.c b/DeviceTree/devicetree.c
index 147e2cb..77e3cf4 100644
--- a/DeviceTree/devicetree.c
+++ b/DeviceTree/devicetree.c
@@ -36,7 +36,7 @@ extern UINT8  STRING_ARRAY_NAME[];
 //
 // Global Variables
 //
-EFI_HII_HANDLE  HiiHandle;
+STATIC EFI_HII_HANDLE  HiiHandle;
 EFI_GUID        EfiDevicetreeGuid = EFI_DEVICETREE_GUID;
 SHELL_VAR_CHECK_ITEM    DevicetreeCheckList[] = {
   {
@@ -67,7 +67,7 @@ SHELL_VAR_CHECK_ITEM    DevicetreeCheckList[] = {
     NULL,
     0,
     0,
-    0
+    (SHELL_VAR_CHECK_FLAG_TYPE) 0
   }
 };
 
diff --git a/DeviceTree/devicetree.h b/DeviceTree/devicetree.h
index c452fc7..07bb939 100644
--- a/DeviceTree/devicetree.h
+++ b/DeviceTree/devicetree.h
@@ -32,3 +32,4 @@ Revision History
     0xf21044af, 0xeef6, 0x4d58, 0xb4, 0x56, 0x32, 0x86, 0xa0, 0x2b, 0x7c, 0x49 \
   }
 #endif
+
diff --git a/DeviceTree/devicetree.inf b/DeviceTree/devicetree.inf
index a86a1a0..7adc097 100644
--- a/DeviceTree/devicetree.inf
+++ b/DeviceTree/devicetree.inf
@@ -40,24 +40,24 @@ COMPONENT_TYPE       = APPLICATION
 
 
 [sources.common]
-  ..\ShCommonStrings.uni
+  ../ShCommonStrings.uni
   DevicetreeStrings.uni
   devicetree.c
   devicetree.h
   
 [includes.common]
   .
-  ..\Inc
-  ..\Library
-  $(EDK_SOURCE)\Foundation
-  $(EDK_SOURCE)\Foundation\Include
-  $(EDK_SOURCE)\Foundation\Include\IndustryStandard
-  $(EDK_SOURCE)\Foundation\Efi
-  $(EDK_SOURCE)\Foundation\Efi\Include
-  $(EDK_SOURCE)\Foundation\FrameWork
-  $(EDK_SOURCE)\Foundation\FrameWork\Include
-  $(EDK_SOURCE)\Foundation\Core\Dxe
-  $(DEST_DIR)\
+  ../Inc
+  ../Library
+  $(EDK_SOURCE)/Foundation
+  $(EDK_SOURCE)/Foundation/Include
+  $(EDK_SOURCE)/Foundation/Include/IndustryStandard
+  $(EDK_SOURCE)/Foundation/Efi
+  $(EDK_SOURCE)/Foundation/Efi/Include
+  $(EDK_SOURCE)/Foundation/FrameWork
+  $(EDK_SOURCE)/Foundation/FrameWork/Include
+  $(EDK_SOURCE)/Foundation/Core/Dxe
+  $(DEST_DIR./
 
 [libraries.common]  
   EfiShellLib
@@ -72,7 +72,11 @@ COMPONENT_TYPE       = APPLICATION
 
 [nmake.common]
   IMAGE_ENTRY_POINT=DevicetreeMain
+
+[nmake.IA32, nmake.EBC, nmake.X64, nmake.IPF]
   C_STD_FLAGS = $(C_STD_FLAGS) /DSTRING_ARRAY_NAME=$(BASE_NAME)Strings 
   C_STD_FLAGS = $(C_STD_FLAGS) /DSTRING_DEFINES_FILE=\"$(BASE_NAME)StrDefs.h\"
   C_STD_FLAGS = $(C_STD_FLAGS) /DEFI_BOOTSHELL
 
+[nmake.ARM, nmake.AARCH64]
+  C_STD_FLAGS = $(C_STD_FLAGS) -DEFI_BOOTSHELL
diff --git a/EfiCompress/Compress.h b/EfiCompress/Compress.h
index 6ce2bfc..4e8313f 100644
--- a/EfiCompress/Compress.h
+++ b/EfiCompress/Compress.h
@@ -57,4 +57,4 @@ Returns:
 
 --*/
 
-#endif
\ No newline at end of file
+#endif
diff --git a/EfiCompress/CompressMain.c b/EfiCompress/CompressMain.c
index 3edb17e..082046e 100644
--- a/EfiCompress/CompressMain.c
+++ b/EfiCompress/CompressMain.c
@@ -50,7 +50,7 @@ SHELL_VAR_CHECK_ITEM    CompressCheckList[] = {
     NULL,
     0,
     0,
-    0
+    (SHELL_VAR_CHECK_FLAG_TYPE)0
   }
 };
 
diff --git a/EfiCompress/compress.c b/EfiCompress/compress.c
index e21c1f6..012bbef 100644
--- a/EfiCompress/compress.c
+++ b/EfiCompress/compress.c
@@ -262,7 +262,7 @@ STATIC UINT32 mBufSiz = 0, mOutputPos, mOutputMask, mSubBitBuf, mCrc;
 STATIC UINT32 mCompSize, mOrigSize;
 
 STATIC UINT16 *mFreq, *mSortPtr, mLenCnt[17], mLeft[2 * NC - 1], mRight[2 * NC - 1],
-              mCrcTable[UINT8_MAX + 1], mCFreq[2 * NC - 1], mCTable[4096], mCCode[NC],
+              mCrcTable[UINT8_MAX + 1], mCFreq[2 * NC - 1], mCCode[NC],
               mPFreq[2 * NP - 1], mPTCode[NPT], mTFreq[2 * NT - 1];
 
 STATIC NODE   mPos, mMatchPos, mAvail, *mPosition, *mParent, *mPrev, *mNext = NULL;
diff --git a/EfiCompress/compress.inf b/EfiCompress/compress.inf
index 2e62fbf..f3194b5 100644
--- a/EfiCompress/compress.inf
+++ b/EfiCompress/compress.inf
@@ -25,7 +25,7 @@ FILE_GUID            = A6A236DB-F3FB-4f7f-93BC-0AF7DAA583B9
 COMPONENT_TYPE       = APPLICATION
 
 [sources.common]
-..\ShCommonStrings.uni
+../ShCommonStrings.uni
 CompressStrings.uni
 compressMain.c
 compress.c
@@ -34,17 +34,17 @@ compress.h
 
 [includes.common]
   .
-  ..\Inc
-  ..\Library
-  $(EDK_SOURCE)\Foundation
-  $(EDK_SOURCE)\Foundation\Include
-  $(EDK_SOURCE)\Foundation\Include\IndustryStandard
-  $(EDK_SOURCE)\Foundation\Efi
-  $(EDK_SOURCE)\Foundation\Efi\Include
-  $(EDK_SOURCE)\Foundation\FrameWork
-  $(EDK_SOURCE)\Foundation\FrameWork\Include
-  $(EDK_SOURCE)\Foundation\Core\Dxe
-  $(DEST_DIR)\
+  ../Inc
+  ../Library
+  $(EDK_SOURCE)/Foundation
+  $(EDK_SOURCE)/Foundation/Include
+  $(EDK_SOURCE)/Foundation/Include/IndustryStandard
+  $(EDK_SOURCE)/Foundation/Efi
+  $(EDK_SOURCE)/Foundation/Efi/Include
+  $(EDK_SOURCE)/Foundation/FrameWork
+  $(EDK_SOURCE)/Foundation/FrameWork/Include
+  $(EDK_SOURCE)/Foundation/Core/Dxe
+  $(DEST_DIR./
 
 [libraries.common]  
   EfiShellLib
@@ -64,11 +64,13 @@ compress.h
 # we will specify some additional DEFINEs on the compile command line.
 #
 [nmake.common]
-  C_PROJ_FLAGS = $(C_PROJ_FLAGS) /Zm500
   IMAGE_ENTRY_POINT=InitializeCompress
+
+[nmake.IA32, nmake.EBC, nmake.X64, nmake.IPF]
+  C_PROJ_FLAGS = $(C_PROJ_FLAGS) /Zm500
   C_STD_FLAGS = $(C_STD_FLAGS) /DSTRING_ARRAY_NAME=$(BASE_NAME)Strings 
   C_STD_FLAGS = $(C_STD_FLAGS) /DSTRING_DEFINES_FILE=\"$(BASE_NAME)StrDefs.h\"
   C_STD_FLAGS = $(C_STD_FLAGS) /DEFI_BOOTSHELL
 
-
- 
\ No newline at end of file
+[nmake.ARM, nmake.AARCH64]
+  C_STD_FLAGS = $(C_STD_FLAGS) -DEFI_BOOTSHELL
diff --git a/EfiDecompress/Decompress.c b/EfiDecompress/Decompress.c
index 918f673..2ee0404 100644
--- a/EfiDecompress/Decompress.c
+++ b/EfiDecompress/Decompress.c
@@ -22,7 +22,7 @@ Revision History
 --*/
 
 #include "EfiShellLib.h"
-#include "decompress.h"
+#include "Decompress.h"
 
 extern UINT8    STRING_ARRAY_NAME[];
 
@@ -31,7 +31,7 @@ extern UINT8    STRING_ARRAY_NAME[];
 //
 #include STRING_DEFINES_FILE
 
-#include EFI_PROTOCOL_DEFINITION (decompress)
+#include EFI_PROTOCOL_DEFINITION (Decompress)
 
 EFI_HII_HANDLE  HiiDecompressHandle;
 EFI_GUID        EfiDecompressGuid = EFI_DECOMPRESS_GUID;
@@ -52,7 +52,7 @@ SHELL_VAR_CHECK_ITEM    DecompressCheckList[] = {
     NULL,
     0,
     0,
-    0
+    (SHELL_VAR_CHECK_FLAG_TYPE) 0
   }
 };
 
@@ -192,7 +192,7 @@ Returns:
   //
   //
   //
-  Status = LibLocateProtocol (&gEfiDecompressProtocolGuid, &Decompress);
+  Status = LibLocateProtocol (&gEfiDecompressProtocolGuid, (VOID**)&Decompress);
   if (EFI_ERROR (Status)) {
     PrintToken (STRING_TOKEN (STR_DECOMPRESS_PROTOCOL_NOT_FOUND), HiiDecompressHandle, L"efidecompress");
     Status = EFI_UNSUPPORTED;
diff --git a/EfiDecompress/Decompress.h b/EfiDecompress/Decompress.h
index abfae65..3d4520c 100644
--- a/EfiDecompress/Decompress.h
+++ b/EfiDecompress/Decompress.h
@@ -29,4 +29,4 @@ Revision History
     0xe15963a9, 0xa05a, 0x480e, 0x91, 0x49, 0x32, 0xe9, 0x24, 0x5d, 0x98, 0xcb \
   }
 
-#endif
\ No newline at end of file
+#endif
diff --git a/EfiDecompress/Decompress.inf b/EfiDecompress/Decompress.inf
index f955220..7b2ff3d 100644
--- a/EfiDecompress/Decompress.inf
+++ b/EfiDecompress/Decompress.inf
@@ -25,7 +25,7 @@ FILE_GUID            = D9D42564-071C-4d73-8DB0-43C55C62DC4C
 COMPONENT_TYPE       = APPLICATION
 
 [sources.common]
-..\ShCommonStrings.uni
+../ShCommonStrings.uni
 DecompressStrings.uni
 decompress.c
 decompress.h
@@ -33,17 +33,17 @@ decompress.h
 
 [includes.common]
   .
-  ..\Inc
-  ..\Library
-  $(EDK_SOURCE)\Foundation
-  $(EDK_SOURCE)\Foundation\Include
-  $(EDK_SOURCE)\Foundation\Include\IndustryStandard
-  $(EDK_SOURCE)\Foundation\Efi
-  $(EDK_SOURCE)\Foundation\Efi\Include
-  $(EDK_SOURCE)\Foundation\FrameWork
-  $(EDK_SOURCE)\Foundation\FrameWork\Include
-  $(EDK_SOURCE)\Foundation\Core\Dxe
-  $(DEST_DIR)\
+  ../Inc
+  ../Library
+  $(EDK_SOURCE)/Foundation
+  $(EDK_SOURCE)/Foundation/Include
+  $(EDK_SOURCE)/Foundation/Include/IndustryStandard
+  $(EDK_SOURCE)/Foundation/Efi
+  $(EDK_SOURCE)/Foundation/Efi/Include
+  $(EDK_SOURCE)/Foundation/FrameWork
+  $(EDK_SOURCE)/Foundation/FrameWork/Include
+  $(EDK_SOURCE)/Foundation/Core/Dxe
+  $(DEST_DIR./
 
 [libraries.common]  
   EfiShellLib
@@ -63,11 +63,14 @@ decompress.h
 # we will specify some additional DEFINEs on the compile command line.
 #
 [nmake.common]
-  C_PROJ_FLAGS = $(C_PROJ_FLAGS) /Zm500
   IMAGE_ENTRY_POINT=InitializeDecompress
+
+[nmake.IA32, nmake.EBC, nmake.X64, nmake.IPF]
+  C_PROJ_FLAGS = $(C_PROJ_FLAGS) /Zm500
   C_STD_FLAGS = $(C_STD_FLAGS) /DSTRING_ARRAY_NAME=$(BASE_NAME)Strings 
   C_STD_FLAGS = $(C_STD_FLAGS) /DSTRING_DEFINES_FILE=\"$(BASE_NAME)StrDefs.h\"
   C_STD_FLAGS = $(C_STD_FLAGS) /DEFI_BOOTSHELL
 
-
- 
+[nmake.ARM, nmake.AARCH64]
+  C_STD_FLAGS = $(C_STD_FLAGS) -DEFI_BOOTSHELL
+ 
\ No newline at end of file
diff --git a/IfConfig/IfConfig.c b/IfConfig/IfConfig.c
index 07cedc2..52e1add 100644
--- a/IfConfig/IfConfig.c
+++ b/IfConfig/IfConfig.c
@@ -29,7 +29,7 @@ extern UINT8 STRING_ARRAY_NAME[];
 //
 #define NIC_ITEM_CONFIG_SIZE   sizeof (NIC_IP4_CONFIG_INFO) + sizeof (EFI_IP4_ROUTE_TABLE) * 16
 
-EFI_HII_HANDLE  HiiHandle;
+STATIC EFI_HII_HANDLE  HiiHandle;
 
 EFI_GUID  EfiIfConfigGuid = EFI_IFCONFIG_GUID;
 
@@ -75,7 +75,7 @@ SHELL_VAR_CHECK_ITEM  IfConfigCheckList[] = {
     NULL,
     0,
     0,
-    0
+    (SHELL_VAR_CHECK_FLAG_TYPE) 0
   }
 };
 
@@ -669,7 +669,7 @@ Returns:
   Status = BS->LocateProtocol (
                 &gEfiHiiConfigRoutingProtocolGuid,
                 NULL,
-                &mHiiConfigRouting
+                (VOID**)&mHiiConfigRouting
                 );
   if (EFI_ERROR (Status)) {
     return EFI_NOT_FOUND;
diff --git a/IfConfig/IfConfig.h b/IfConfig/IfConfig.h
index 4a9d3c5..b8f044e 100644
--- a/IfConfig/IfConfig.h
+++ b/IfConfig/IfConfig.h
@@ -60,3 +60,4 @@ typedef struct {
 } ARP_REQUEST;
 
 #endif
+
diff --git a/IfConfig/IfConfig.inf b/IfConfig/IfConfig.inf
index b2e4964..d8c5c23 100644
--- a/IfConfig/IfConfig.inf
+++ b/IfConfig/IfConfig.inf
@@ -25,7 +25,7 @@ FILE_GUID            = 6394CF3D-D3DC-4f69-926D-AF9FFE59F922
 COMPONENT_TYPE       = APPLICATION
 
 [sources.common]
-  ..\ShCommonStrings.uni
+  ../ShCommonStrings.uni
   IfConfigStrings.uni
   IfConfig.c
   IfConfig.h
@@ -33,30 +33,32 @@ COMPONENT_TYPE       = APPLICATION
   ShellNetHelper.h
   
 [includes.common]
-  ..\Inc
-  ..\Library
-  $(EDK_SOURCE)\Foundation\Efi
-  $(EDK_SOURCE)\Foundation
-  $(EDK_SOURCE)\Foundation\Efi\Include
-  $(EDK_SOURCE)\Foundation\Include
-  $(EDK_SOURCE)\Foundation\Include\IndustryStandard
-  $(EDK_SOURCE)\Foundation\FrameWork
-  $(EDK_SOURCE)\Foundation\FrameWork\Include
-  $(EDK_SOURCE)\Foundation\Core\Dxe
-  $(EDK_SOURCE)\Foundation\Library\Dxe\Include
-  $(DEST_DIR)\
+  ../Inc
+  ../Library
+  $(EDK_SOURCE)/Foundation/Efi
+  $(EDK_SOURCE)/Foundation
+  $(EDK_SOURCE)/Foundation/Efi/Include
+  $(EDK_SOURCE)/Foundation/Include
+  $(EDK_SOURCE)/Foundation/Include/IndustryStandard
+  $(EDK_SOURCE)/Foundation/FrameWork
+  $(EDK_SOURCE)/Foundation/FrameWork/Include
+  $(EDK_SOURCE)/Foundation/Core/Dxe
+  $(EDK_SOURCE)/Foundation/Library/Dxe/Include
+  $(DEST_DIR./
 
 [libraries.common]
   EfiShellLib
   EdkProtocolLib
   EfiProtocolLib
   EdkGuidLib
-  EfiDriverLib
 
 [nmake.common]
-  C_PROJ_FLAGS = $(C_PROJ_FLAGS)
   IMAGE_ENTRY_POINT=IfConfig
-  C_STD_FLAGS = $(C_STD_FLAGS) /DEFI_BOOTSHELL
+
+[nmake.IA32, nmake.EBC, nmake.X64, nmake.IPF]
   C_STD_FLAGS = $(C_STD_FLAGS) /DSTRING_ARRAY_NAME=$(BASE_NAME)Strings 
   C_STD_FLAGS = $(C_STD_FLAGS) /DSTRING_DEFINES_FILE=\"$(BASE_NAME)StrDefs.h\"
+  C_STD_FLAGS = $(C_STD_FLAGS) /DEFI_BOOTSHELL
 
+[nmake.ARM, nmake.AARCH64]
+  C_STD_FLAGS = $(C_STD_FLAGS) -DEFI_BOOTSHELL
diff --git a/IfConfig/ShellNetHelper.h b/IfConfig/ShellNetHelper.h
index 9a33d3f..87e6886 100644
--- a/IfConfig/ShellNetHelper.h
+++ b/IfConfig/ShellNetHelper.h
@@ -87,3 +87,4 @@ ShellDestroyServiceChild (
   IN  EFI_HANDLE  ChildHandle
 );
 #endif
+
diff --git a/IpConfig/IpConfig.c b/IpConfig/IpConfig.c
index 0c3e4c3..474e5f1 100644
--- a/IpConfig/IpConfig.c
+++ b/IpConfig/IpConfig.c
@@ -39,7 +39,7 @@ extern UINT8  STRING_ARRAY_NAME[];
 //
 // Global Variables
 //
-EFI_HII_HANDLE  HiiHandle;
+STATIC EFI_HII_HANDLE  HiiHandle;
 EFI_GUID        EfiIpConfigGuid = EFI_IPCONFIG_GUID;
 SHELL_VAR_CHECK_ITEM  IpconfigCheckList[] = {
   {
@@ -76,7 +76,7 @@ SHELL_VAR_CHECK_ITEM  IpconfigCheckList[] = {
     NULL,
     0,
     0,
-    0
+    (SHELL_VAR_CHECK_FLAG_TYPE) 0
   }
 };
 
diff --git a/IpConfig/IpConfig.h b/IpConfig/IpConfig.h
index 1806435..5c975a9 100644
--- a/IpConfig/IpConfig.h
+++ b/IpConfig/IpConfig.h
@@ -29,4 +29,4 @@ Revision History
     0x8252915c, 0xf1e9, 0x435c, 0x81, 0x91, 0xad, 0x2f, 0x82, 0x62, 0x23, 0x73 \
   }
 
-#endif
\ No newline at end of file
+#endif
diff --git a/IpConfig/IpConfig.inf b/IpConfig/IpConfig.inf
index bc8271c..8cb1e0f 100644
--- a/IpConfig/IpConfig.inf
+++ b/IpConfig/IpConfig.inf
@@ -25,24 +25,24 @@ FILE_GUID            = 1D73AC03-AF05-44b3-B21E-93A174893FA6
 COMPONENT_TYPE       = APPLICATION
 
 [sources.common]
-  ..\ShCommonStrings.uni
+  ../ShCommonStrings.uni
   IpConfigStrings.uni
   IpConfig.c
   IpConfig.h 
 
 [includes.common]
   .
-  ..\Inc
-  ..\Library
-  $(EDK_SOURCE)\Foundation
-  $(EDK_SOURCE)\Foundation\Include
-  $(EDK_SOURCE)\Foundation\Include\IndustryStandard
-  $(EDK_SOURCE)\Foundation\Efi
-  $(EDK_SOURCE)\Foundation\Efi\Include
-  $(EDK_SOURCE)\Foundation\FrameWork
-  $(EDK_SOURCE)\Foundation\FrameWork\Include
-  $(EDK_SOURCE)\Foundation\Core\Dxe
-  $(DEST_DIR)\
+  ../Inc
+  ../Library
+  $(EDK_SOURCE)/Foundation
+  $(EDK_SOURCE)/Foundation/Include
+  $(EDK_SOURCE)/Foundation/Include/IndustryStandard
+  $(EDK_SOURCE)/Foundation/Efi
+  $(EDK_SOURCE)/Foundation/Efi/Include
+  $(EDK_SOURCE)/Foundation/FrameWork
+  $(EDK_SOURCE)/Foundation/FrameWork/Include
+  $(EDK_SOURCE)/Foundation/Core/Dxe
+  $(DEST_DIR./
 
 [libraries.common]  
   EfiShellLib
@@ -56,9 +56,12 @@ COMPONENT_TYPE       = APPLICATION
 
 
 [nmake.common]
-  C_PROJ_FLAGS = $(C_PROJ_FLAGS) /Zm500
   IMAGE_ENTRY_POINT=InitializeIpConfig
+
+[nmake.IA32, nmake.EBC, nmake.X64, nmake.IPF]
   C_STD_FLAGS = $(C_STD_FLAGS) /DSTRING_ARRAY_NAME=$(BASE_NAME)Strings 
   C_STD_FLAGS = $(C_STD_FLAGS) /DSTRING_DEFINES_FILE=\"$(BASE_NAME)StrDefs.h\"
   C_STD_FLAGS = $(C_STD_FLAGS) /DEFI_BOOTSHELL
 
+[nmake.ARM, nmake.AARCH64]
+  C_STD_FLAGS = $(C_STD_FLAGS) -DEFI_BOOTSHELL
diff --git a/Library/Aarch64/efilibplat.h b/Library/Aarch64/efilibplat.h
new file mode 100644
index 0000000..185c8b7
--- /dev/null
+++ b/Library/Aarch64/efilibplat.h
@@ -0,0 +1,38 @@
+/*++
+
+Copyright (c) 2005, Intel Corporation
+All rights reserved. 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.
+
+Module Name:
+
+    efilibplat.h
+
+Abstract:
+
+    EFI to compile bindings
+
+
+
+Revision History
+
+--*/
+
+#ifndef _EFI_LIB_PLAT_H
+#define _EFI_LIB_PLAT_H
+
+VOID
+InitializeLibPlatform (
+  IN EFI_HANDLE           ImageHandle,
+  IN EFI_SYSTEM_TABLE     *SystemTable
+  );
+
+#define MIN_ALIGNMENT_SIZE  8
+
+#endif
+
diff --git a/Library/Arm/efilibplat.h b/Library/Arm/efilibplat.h
new file mode 100644
index 0000000..791018d
--- /dev/null
+++ b/Library/Arm/efilibplat.h
@@ -0,0 +1,39 @@
+/*++
+
+Copyright (c) 2005, Intel Corporation                                                         
+All rights reserved. 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.             
+
+Module Name:
+
+    efilibplat.h
+
+Abstract:
+
+    EFI to compile bindings
+
+
+
+
+Revision History
+
+--*/
+#ifndef _EFI_LIB_PLAT_H_
+#define _EFI_LIB_PLAT_H_
+
+VOID
+InitializeLibPlatform (
+  IN EFI_HANDLE           ImageHandle,
+  IN EFI_SYSTEM_TABLE     *SystemTable
+  );
+
+#define MIN_ALIGNMENT_SIZE  4
+
+#endif
+
+
diff --git a/Library/CRC.c b/Library/CRC.c
index ce5387b..ebbdf70 100644
--- a/Library/CRC.c
+++ b/Library/CRC.c
@@ -21,7 +21,7 @@ Revision History
 
 --*/
 
-#include "EfiShelllib.h"
+#include "EfiShellLib.h"
 
 UINT32  CRCTable[256] = {
   0x00000000,
diff --git a/Library/CRC.h b/Library/CRC.h
index 326a5e1..db1f765 100644
--- a/Library/CRC.h
+++ b/Library/CRC.h
@@ -53,4 +53,6 @@ CalculateCrc (
   UINTN Size
   );
 
-#endif
\ No newline at end of file
+#endif
+
+
diff --git a/Library/ConsistMapping.c b/Library/ConsistMapping.c
index b70fa06..61eda8b 100644
--- a/Library/ConsistMapping.c
+++ b/Library/ConsistMapping.c
@@ -21,7 +21,7 @@ Revision History
 
 --*/
 
-#include "EfiShelllib.h"
+#include "EfiShellLib.h"
 
 MTD_NAME  mMTDName[] = {
   {
diff --git a/Library/ConsistMapping.h b/Library/ConsistMapping.h
index bc8d6f0..d520f31 100644
--- a/Library/ConsistMapping.h
+++ b/Library/ConsistMapping.h
@@ -79,4 +79,6 @@ DevicePathConsistMappingCompare (
   IN  VOID *Buffer2
   );
 
-#endif
\ No newline at end of file
+#endif
+
+
diff --git a/Library/DPath.c b/Library/DPath.c
index f0974ac..73086d7 100644
--- a/Library/DPath.c
+++ b/Library/DPath.c
@@ -20,7 +20,7 @@ Revision History
 
 --*/
 
-#include "EfiShelllib.h"
+#include "EfiShellLib.h"
 
 EFI_GUID mEfiDevicePathMessagingUartFlowControlGuid = DEVICE_PATH_MESSAGING_UART_FLOW_CONTROL;
 
@@ -1468,7 +1468,7 @@ Returns:
   
   Status = LibLocateProtocol (
              &gEfiDevicePathToTextProtocolGuid,
-             &DevPathToText
+             (VOID**)&DevPathToText
              );
   if (!EFI_ERROR (Status)) {
     ToText = DevPathToText->ConvertDevicePathToText (
@@ -1766,7 +1766,7 @@ Returns:
       Status = BS->HandleProtocol (
                     Device,
                     Protocol,
-                    Interface
+                    (VOID**)Interface
                     );
     }
   }
diff --git a/Library/DPath.h b/Library/DPath.h
index 68da82b..0f2a33f 100644
--- a/Library/DPath.h
+++ b/Library/DPath.h
@@ -24,7 +24,7 @@ Revision History
 #ifndef _D_PATH_H
 #define _D_PATH_H
 
-#define NextStrA(a) ((UINT8 *) (((UINT8 *) (a)) + strlena (a) + 1))
+#define NextStrA(a) (CHAR8*)((UINT8 *) (((UINT8 *) (a)) + strlena (a) + 1))
 
 #include EFI_GUID_DEFINITION (PcAnsi)
 
@@ -153,3 +153,4 @@ GetNameGuidFromFwVolDevicePathNode (
   );
 
 #endif
+
diff --git a/Library/Data.c b/Library/Data.c
index d2ffe4a..979b3dd 100644
--- a/Library/Data.c
+++ b/Library/Data.c
@@ -21,7 +21,7 @@ Revision History
 
 --*/
 
-#include "EfiShelllib.h"
+#include "EfiShellLib.h"
 
 //
 // ShellLibInitialized - TRUE once InitializeShellLib() is called for the first time
diff --git a/Library/Ebc/EfiLibPlat.h b/Library/Ebc/EfiLibPlat.h
index 922c881..e4a8771 100644
--- a/Library/Ebc/EfiLibPlat.h
+++ b/Library/Ebc/EfiLibPlat.h
@@ -44,3 +44,4 @@ Returns:
 ;
 
 #define MIN_ALIGNMENT_SIZE  8
+
diff --git a/Library/EfiPart.h b/Library/EfiPart.h
index a62cd15..e59ae77 100644
--- a/Library/EfiPart.h
+++ b/Library/EfiPart.h
@@ -56,3 +56,4 @@ typedef struct {
 #pragma pack()
 
 #endif
+
diff --git a/Library/EfiShellLib.h b/Library/EfiShellLib.h
index 6243d1d..e0ffe43 100644
--- a/Library/EfiShellLib.h
+++ b/Library/EfiShellLib.h
@@ -25,7 +25,7 @@ Revision History
 #define _EFI_SHELL_LIB_INCLUDE_
 
 #include "Tiano.h"
-#include "ShellEnv.h"
+#include "shellenv.h"
 #include "pci22.h"
 
 #include EFI_ARCH_PROTOCOL_DEFINITION (Bds)
@@ -51,7 +51,7 @@ Revision History
 #include EFI_GUID_DEFINITION (PrimaryConsoleOutDevice)
 #include EFI_GUID_DEFINITION (PrimaryStandardErrorDevice)
 #include EFI_GUID_DEFINITION (SalSystemTable)
-#include EFI_GUID_DEFINITION (Smbios)
+#include EFI_GUID_DEFINITION (SmBios)
 #include EFI_GUID_DEFINITION (StandardErrorDevice)
 #include EFI_GUID_DEFINITION (FrameworkDevicePath)
 #include EFI_PROTOCOL_DEFINITION (AbsolutePointer)
@@ -67,7 +67,7 @@ Revision History
 #include EFI_PROTOCOL_DEFINITION (DebugPort)
 #include EFI_PROTOCOL_DEFINITION (DebugSupport)
 #include EFI_PROTOCOL_DEFINITION (Decompress)
-#include EFI_PROTOCOL_DEFINITION (DeviceIO)
+#include EFI_PROTOCOL_DEFINITION (DeviceIo)
 #include EFI_PROTOCOL_DEFINITION (DevicePath)
 #include EFI_PROTOCOL_DEFINITION (DevicePathFromText)
 #include EFI_PROTOCOL_DEFINITION (DevicePathToText)
@@ -111,7 +111,7 @@ Revision History
 #include EFI_PROTOCOL_DEFINITION (PciRootBridgeIo)
 #include EFI_PROTOCOL_DEFINITION (PlatformDriverOverride)
 #include EFI_PROTOCOL_DEFINITION (PxeBaseCode)
-#include EFI_PROTOCOL_DEFINITION (PxeBaseCodeCallback)
+#include EFI_PROTOCOL_DEFINITION (PxeBaseCodeCallBack)
 #include EFI_PROTOCOL_DEFINITION (ScsiIo)
 #include EFI_PROTOCOL_DEFINITION (ScsiPassThru)
 #include EFI_PROTOCOL_DEFINITION (SectionExtraction)
@@ -152,7 +152,7 @@ Revision History
 #include EFI_PROTOCOL_DEFINITION (PlatformToDriverConfiguration)
 
 #include "efilibplat.h"
-#include "efipart.h"
+#include "EfiPart.h"
 #include "ShellDebug.h"
 #include "CRC.h"
 #include "DPath.h"
@@ -358,3 +358,4 @@ LibGetControllerName (
   );
 
 #endif
+
diff --git a/Library/EfiShellLib.inf b/Library/EfiShellLib.inf
index d450f9d..a63406c 100644
--- a/Library/EfiShellLib.inf
+++ b/Library/EfiShellLib.inf
@@ -45,34 +45,42 @@ COMPONENT_TYPE  = LIBRARY
   HiiSupport.c
 
 [sources.ia32]
-  ia32\math.c
-  ia32\initplat.c
+  IA32/math.c
+  IA32/initplat.c
 
 [sources.ipf]
-  ipf\math.c
-  ipf\initplat.c
-  ipf\palproc.s
-  ipf\salpal.c
+  IPF/math.c
+  IPF/initplat.c
+  IPF/palproc.s
+  IPF/salpal.c
 
 [sources.EBC]
-  EBC\math.c
-  EBC\initplat.c
-  
+  Ebc/math.c
+  Ebc/initplat.c
+
 [sources.x64]
-  ipf\math.c
-  ia32\initplat.c
+  IPF/math.c
+  IA32/initplat.c
+
+[sources.ARM]
+  IPF/math.c
+  IA32/initplat.c
+
+[sources.AARCH64]
+  IPF/math.c
+  IA32/initplat.c
 
 [includes.common]
   .
-  ..\Inc
-  $(EDK_SOURCE)\Foundation
-  $(EDK_SOURCE)\Foundation\Include
-  $(EDK_SOURCE)\Foundation\Efi
-  $(EDK_SOURCE)\Foundation\Efi\Include
-  $(EDK_SOURCE)\Foundation\FrameWork
-  $(EDK_SOURCE)\Foundation\FrameWork\Include
-  $(EDK_SOURCE)\Foundation\Include\IndustryStandard
-  $(EDK_SOURCE)\Foundation\Core\Dxe
+  ../Inc
+  $(EDK_SOURCE)/Foundation
+  $(EDK_SOURCE)/Foundation/Include
+  $(EDK_SOURCE)/Foundation/Efi
+  $(EDK_SOURCE)/Foundation/Efi/Include
+  $(EDK_SOURCE)/Foundation/FrameWork
+  $(EDK_SOURCE)/Foundation/FrameWork/Include
+  $(EDK_SOURCE)/Foundation/Include/IndustryStandard
+  $(EDK_SOURCE)/Foundation/Core/Dxe
 
 [libraries.common]
   EdkFrameworkProtocolLib
@@ -81,4 +89,7 @@ COMPONENT_TYPE  = LIBRARY
   EfiGuidLib
   EdkGuidLib
 
+[libraries.ARM]
+  CompilerIntrinsicsLib, CompilerIntrinsicsLib
+
 [nmake.common]
diff --git a/Library/Event.c b/Library/Event.c
index 4929e4b..a0cbdc2 100644
--- a/Library/Event.c
+++ b/Library/Event.c
@@ -21,7 +21,7 @@ Revision History
 
 --*/
 
-#include "EfiShelllib.h"
+#include "EfiShellLib.h"
 
 EFI_EVENT
 LibCreateProtocolNotifyEvent (
diff --git a/Library/Event.h b/Library/Event.h
index b8df801..8e0e718 100644
--- a/Library/Event.h
+++ b/Library/Event.h
@@ -50,4 +50,6 @@ WaitForEventWithTimeout (
   OUT EFI_INPUT_KEY                 *Key
   );
 
-#endif
\ No newline at end of file
+#endif
+
+
diff --git a/Library/FileIO.c b/Library/FileIO.c
index 40c67d1..8820c52 100644
--- a/Library/FileIO.c
+++ b/Library/FileIO.c
@@ -21,7 +21,7 @@ Revision History
 
 --*/
 
-#include "EfiShelllib.h"
+#include "EfiShellLib.h"
 
 typedef struct _PATH_COMPONENTS {
   CHAR16                  *Name;
@@ -719,7 +719,6 @@ LibSplitFsAndPath (
   IN OUT CHAR16                       **Path
   )
 {
-  EFI_STATUS  Status;
   CHAR16      *p;
   UINTN       Size;
 
@@ -728,7 +727,6 @@ LibSplitFsAndPath (
 
   *Fs     = NULL;
   *Path   = NULL;
-  Status  = EFI_SUCCESS;
 
   p       = AbPath;
   while (*p) {
@@ -1017,13 +1015,11 @@ Return:
   EFI_LIST_ENTRY  SrcList;
   EFI_LIST_ENTRY  DstList;
   EFI_STATUS      Status;
-  EFI_LIST_ENTRY  *Link;
   SHELL_FILE_ARG  *SrcArg;
   SHELL_FILE_ARG  *DstArg;
   
   ASSERT (IsSame != NULL);
 
-  Link    = NULL;
   SrcArg  = NULL;
   DstArg  = NULL;
   InitializeListHead (&SrcList);
diff --git a/Library/FileIO.h b/Library/FileIO.h
index bb07d91..e568e17 100644
--- a/Library/FileIO.h
+++ b/Library/FileIO.h
@@ -208,4 +208,6 @@ CloseSimpleReadFile (
   IN SIMPLE_READ_FILE               SimpleReadHandle
   );
 
-#endif
\ No newline at end of file
+#endif
+
+
diff --git a/Library/Handle.c b/Library/Handle.c
index 25da2a1..45e623c 100644
--- a/Library/Handle.c
+++ b/Library/Handle.c
@@ -21,7 +21,7 @@ Revision History
 
 --*/
 
-#include "EfiShelllib.h"
+#include "EfiShellLib.h"
 
 EFI_STATUS
 LibLocateHandle (
@@ -131,7 +131,6 @@ Returns:
   EFI_HANDLE                *BlockIoBuffer;
   EFI_DEVICE_PATH_PROTOCOL  *DevicePath;
   UINTN                     Index;
-  EFI_DEVICE_PATH_PROTOCOL  *Start;
   EFI_DEVICE_PATH_PROTOCOL  *Next;
   EFI_DEVICE_PATH_PROTOCOL  *DevPath;
   HARDDRIVE_DEVICE_PATH     *HardDriveDevicePath;
@@ -204,7 +203,6 @@ Returns:
       PreviousNodeIsHardDriveDevicePath = FALSE;
 
       DevPath = DevicePath;
-      Start = DevPath;
       //
       // Check for end of device path type
       //
@@ -796,14 +794,12 @@ LibScanHandleDatabase (
   UINTN                               OpenInfoIndex;
   UINTN                               ChildIndex;
   BOOLEAN                             DriverBindingHandleIndexValid;
-  BOOLEAN                             ControllerHandleIndexValid;
 
   DriverBindingHandleIndexValid = FALSE;
   if (DriverBindingHandleIndex != NULL) {
     *DriverBindingHandleIndex = 0xffffffff;
   }
 
-  ControllerHandleIndexValid = FALSE;
   if (ControllerHandleIndex != NULL) {
     *ControllerHandleIndex = 0xffffffff;
   }
@@ -847,7 +843,6 @@ LibScanHandleDatabase (
 
     if (ControllerHandle != NULL && ControllerHandleIndex != NULL && (*HandleBuffer)[HandleIndex] == ControllerHandle) {
       *ControllerHandleIndex      = (UINT32) HandleIndex;
-      ControllerHandleIndexValid  = TRUE;
     }
 
   }
@@ -1305,7 +1300,7 @@ Returns:
     Status = BS->HandleProtocol (
                   Handles[Index],
                   ProtocolGuid,
-                  Interface
+                  (VOID**)Interface
                   );
 
     if (!EFI_ERROR (Status)) {
diff --git a/Library/Handle.h b/Library/Handle.h
index 40ad40b..010e2cf 100644
--- a/Library/Handle.h
+++ b/Library/Handle.h
@@ -161,3 +161,4 @@ ShellGetHandleNum (
   );
 
 #endif
+
diff --git a/Library/HiiSupport.c b/Library/HiiSupport.c
index bce645b..5f70712 100644
--- a/Library/HiiSupport.c
+++ b/Library/HiiSupport.c
@@ -21,7 +21,7 @@ Revision History
 
 --*/
 
-#include "EfiShelllib.h"
+#include "EfiShellLib.h"
 
 #if (EFI_SPECIFICATION_VERSION >= 0x0002000A)
 
@@ -56,11 +56,11 @@ Returns:
     return EFI_SUCCESS;
   }
 
-  Status = LibLocateProtocol (&gEfiHiiDatabaseProtocolGuid, &gLibHiiDatabase);
+  Status = LibLocateProtocol (&gEfiHiiDatabaseProtocolGuid, (VOID**)&gLibHiiDatabase);
   if (EFI_ERROR (Status)) {
     return Status;
   }
-  Status = LibLocateProtocol (&gEfiHiiStringProtocolGuid, &gLibHiiString);
+  Status = LibLocateProtocol (&gEfiHiiStringProtocolGuid, (VOID**)&gLibHiiString);
   if (EFI_ERROR (Status)) {
     return Status;
   }  
diff --git a/Library/HiiSupport.h b/Library/HiiSupport.h
index b04c443..bfeb077 100644
--- a/Library/HiiSupport.h
+++ b/Library/HiiSupport.h
@@ -142,3 +142,4 @@ LibGetString (
 ;
 
 #endif
+
diff --git a/Library/IA32/efilibplat.h b/Library/IA32/efilibplat.h
index 4e58f50..a6eb87f 100644
--- a/Library/IA32/efilibplat.h
+++ b/Library/IA32/efilibplat.h
@@ -34,4 +34,4 @@ InitializeLibPlatform (
 
 #define MIN_ALIGNMENT_SIZE  4
 
-#endif
\ No newline at end of file
+#endif
diff --git a/Library/IO.c b/Library/IO.c
index 81f26fd..b976e32 100644
--- a/Library/IO.c
+++ b/Library/IO.c
@@ -21,7 +21,7 @@ Revision History
 
 --*/
 
-#include "EfiShelllib.h"
+#include "EfiShellLib.h"
 
 #define PRINT_STRING_LEN        1024
 #define PRINT_ITEM_BUFFER_LEN   100
@@ -86,8 +86,8 @@ typedef struct _pstate {
 typedef struct {
   BOOLEAN PageBreak;
   BOOLEAN AutoWrap;
-  INTN    MaxRow;
-  INTN    MaxColumn;
+  UINTN   MaxRow;
+  UINTN   MaxColumn;
   INTN    InitRow;
   INTN    Row;
   INTN    Column;
@@ -1575,7 +1575,7 @@ Returns:
 {
   BOOLEAN       Done;
   UINTN         Column;
-  INTN          Row;
+  UINTN         Row;
   UINTN         StartColumn;
   UINTN         Update;
   UINTN         Delete;
@@ -1769,7 +1769,7 @@ Returns:
     //
     // If we need to update the output do so now
     //
-    if (Update != -1) {
+    if (Update != (UINTN)  -1) {
       PrintAt (Column, Row, L"%s%.*s", InStr + Update, Delete, L"");
       Len = StrLen (InStr);
 
@@ -1928,8 +1928,8 @@ LibGetPageBreak (
   return mPrintMode.PageBreak;
 }
 
+#if 0
 STATIC
-
 BOOLEAN
 GetOutputPause (
   VOID
@@ -1937,6 +1937,7 @@ GetOutputPause (
 {
   return mPrintMode.OutputPause;
 }
+#endif
 
 INTN
 DbgPrint (
diff --git a/Library/IO.h b/Library/IO.h
index 7469c32..6dfc743 100644
--- a/Library/IO.h
+++ b/Library/IO.h
@@ -157,4 +157,6 @@ LibGetPageBreak (
   );
 
 
-#endif
\ No newline at end of file
+#endif
+
+
diff --git a/Library/IPF/efilibplat.h b/Library/IPF/efilibplat.h
index 90659b4..aad0dd0 100644
--- a/Library/IPF/efilibplat.h
+++ b/Library/IPF/efilibplat.h
@@ -35,3 +35,4 @@ InitializeLibPlatform (
 #define MIN_ALIGNMENT_SIZE  8
 
 #endif
+
diff --git a/Library/IPF/libsalpal.h b/Library/IPF/libsalpal.h
index fc25995..1461669 100644
--- a/Library/IPF/libsalpal.h
+++ b/Library/IPF/libsalpal.h
@@ -74,4 +74,4 @@ LibSalProc (
   IN  UINT64    Arg8
   );
 
-#endif
\ No newline at end of file
+#endif
diff --git a/Library/IPF/palproc.h b/Library/IPF/palproc.h
index 6d1edf8..ea426bf 100644
--- a/Library/IPF/palproc.h
+++ b/Library/IPF/palproc.h
@@ -58,3 +58,4 @@
 #define PAL_MC_REGISTER_MEM   0x001b
 
 #endif // _PALPROC_H
+
diff --git a/Library/Init.c b/Library/Init.c
index 3ef0c8e..e791ff1 100644
--- a/Library/Init.c
+++ b/Library/Init.c
@@ -20,7 +20,7 @@ Revision History
 
 --*/
 
-#include "EfiShelllib.h"
+#include "EfiShellLib.h"
 
 extern EFI_UNICODE_COLLATION_PROTOCOL LibStubUnicodeInterface;
 
diff --git a/Library/LinkedList.h b/Library/LinkedList.h
index d39e5a3..0c82b61 100644
--- a/Library/LinkedList.h
+++ b/Library/LinkedList.h
@@ -77,11 +77,10 @@ typedef struct _EFI_LIST_ENTRY {
   }
 
 #define SwapListEntries(Entry1, Entry2) { \
-    EFI_LIST_ENTRY  *Entry1Flink, *Entry1Blink; \
+    EFI_LIST_ENTRY  *Entry1Blink; \
     EFI_LIST_ENTRY  *Entry2Flink, *Entry2Blink; \
     Entry2Flink         = (Entry2)->Flink; \
     Entry2Blink         = (Entry2)->Blink; \
-    Entry1Flink         = (Entry1)->Flink; \
     Entry1Blink         = (Entry1)->Blink; \
     Entry2Blink->Flink  = Entry2Flink; \
     Entry2Flink->Blink  = Entry2Blink; \
@@ -100,3 +99,4 @@ typedef struct _EFI_LIST_ENTRY {
 // A lock structure
 //
 #endif
+
diff --git a/Library/Lock.c b/Library/Lock.c
index 8a40db5..b3f9bad 100644
--- a/Library/Lock.c
+++ b/Library/Lock.c
@@ -21,7 +21,7 @@ Revision History
 
 --*/
 
-#include "EfiShelllib.h"
+#include "EfiShellLib.h"
 
 VOID
 InitializeLock (
diff --git a/Library/Lock.h b/Library/Lock.h
index 9e35b92..bd5304e 100644
--- a/Library/Lock.h
+++ b/Library/Lock.h
@@ -45,4 +45,6 @@ ReleaseLock (
   IN FLOCK    *Lock
   );
 
-#endif
\ No newline at end of file
+#endif
+
+
diff --git a/Library/Mem.c b/Library/Mem.c
index f82cb52..9675b52 100644
--- a/Library/Mem.c
+++ b/Library/Mem.c
@@ -21,7 +21,7 @@ Revision History
 
 --*/
 
-#include "EfiShelllib.h"
+#include "EfiShellLib.h"
 
 VOID
 SetMem (
diff --git a/Library/Mem.h b/Library/Mem.h
index bca1e1d..1e0b331 100644
--- a/Library/Mem.h
+++ b/Library/Mem.h
@@ -73,4 +73,6 @@ ZeroMem (
   IN UINTN    Size
   );
 
-#endif
\ No newline at end of file
+#endif
+
+
diff --git a/Library/Misc.c b/Library/Misc.c
index 1564c49..e3204ff 100644
--- a/Library/Misc.c
+++ b/Library/Misc.c
@@ -21,7 +21,7 @@ Revision History
 
 --*/
 
-#include "EfiShelllib.h"
+#include "EfiShellLib.h"
 
 #if (PLATFORM == NT32)
 #define LOCAL_EFI_WIN_NT_THUNK_PROTOCOL_GUID \
@@ -348,7 +348,7 @@ Returns:
   ASSERT (Buffer != NULL);
 
   if (mShellEnv == NULL) {
-    Status = LibLocateProtocol (&ShellEnvProtocol, &mShellEnv);
+    Status = LibLocateProtocol (&ShellEnvProtocol, (VOID**)&mShellEnv);
     if (EFI_ERROR (Status)) {
       mShellEnv = NULL;
     }
@@ -1171,7 +1171,7 @@ Returns:
       Status = BS->HandleProtocol (
                     Image->DeviceHandle,
                     &gEfiFirmwareVolumeProtocolGuid,
-                    &FV
+                    (VOID**)&FV
                     );
       if (!EFI_ERROR (Status)) {
         Status = FV->ReadSection (
@@ -1192,7 +1192,7 @@ Returns:
         Status = BS->HandleProtocol (
                       Image->DeviceHandle,
                       &gEfiFirmwareVolume2ProtocolGuid,
-                      &FV2
+                      (VOID**)&FV2
                       );
         if (!EFI_ERROR (Status)) {
           Status = FV2->ReadSection (
@@ -1339,7 +1339,7 @@ LibCmdGetStringByToken (
 {
   EFI_STATUS      Status;
   CHAR16          *String;
-  EFI_HII_HANDLE  HiiHandle;
+  STATIC EFI_HII_HANDLE  HiiHandle;
 
   ASSERT (Str);
 
@@ -1730,6 +1730,8 @@ Returns:
     return L"X64";
   case EFI_IMAGE_MACHINE_IA64:
     return L"IA64";
+  case EFI_IMAGE_MACHINE_AARCH64:
+    return L"AARCH64";
   default:
     return L"UNKNOWN";
   }
@@ -2544,4 +2546,5 @@ Returns:
   }
 
   return Status;
-}
\ No newline at end of file
+}
+
diff --git a/Library/Misc.h b/Library/Misc.h
index 7a99186..a7a6825 100644
--- a/Library/Misc.h
+++ b/Library/Misc.h
@@ -258,3 +258,4 @@ LibGetExitCode (
   );
 
 #endif
+
diff --git a/Library/Perf.c b/Library/Perf.c
index 43e09ea..87c4113 100644
--- a/Library/Perf.c
+++ b/Library/Perf.c
@@ -19,7 +19,7 @@ Abstract:
 
 --*/
 
-#include "EfiShelllib.h"
+#include "EfiShellLib.h"
 
 #include EFI_PROTOCOL_DEFINITION (Performance)
 
diff --git a/Library/RtData.c b/Library/RtData.c
index af55cb4..145e933 100644
--- a/Library/RtData.c
+++ b/Library/RtData.c
@@ -21,7 +21,7 @@ Revision History
 
 --*/
 
-#include "EfiShelllib.h"
+#include "EfiShellLib.h"
 
 //
 // RT - pointer to the runtime table
diff --git a/Library/ShellDebug.c b/Library/ShellDebug.c
index b31ef06..c8b93d5 100644
--- a/Library/ShellDebug.c
+++ b/Library/ShellDebug.c
@@ -19,7 +19,7 @@ Abstract:
 
 --*/
 
-#include "EfiShelllib.h"
+#include "EfiShellLib.h"
 #include EFI_PROTOCOL_DEFINITION (DebugAssert)
 
 EFI_DEBUG_ASSERT_PROTOCOL *mDebugAssert = NULL;
diff --git a/Library/ShellDebug.h b/Library/ShellDebug.h
index 039197e..aedb3fa 100644
--- a/Library/ShellDebug.h
+++ b/Library/ShellDebug.h
@@ -99,3 +99,4 @@ EFIDebugVariable (
   );
 #endif
     
+
diff --git a/Library/ShellEnvInt.c b/Library/ShellEnvInt.c
index b99d973..53de481 100644
--- a/Library/ShellEnvInt.c
+++ b/Library/ShellEnvInt.c
@@ -21,7 +21,7 @@ Revision History
 
 --*/
 
-#include "EfiShelllib.h"
+#include "EfiShellLib.h"
 
 EFI_STATUS
 ShellExecute (
diff --git a/Library/ShellEnvInt.h b/Library/ShellEnvInt.h
index 4182dff..653f997 100644
--- a/Library/ShellEnvInt.h
+++ b/Library/ShellEnvInt.h
@@ -196,4 +196,6 @@ ShellGetHandleNum (
   VOID
   );
 
-#endif
\ No newline at end of file
+#endif
+
+
diff --git a/Library/Str.c b/Library/Str.c
index ca0c76b..d881dae 100644
--- a/Library/Str.c
+++ b/Library/Str.c
@@ -22,7 +22,7 @@ Revision History
 
 --*/
 
-#include "EfiShelllib.h"
+#include "EfiShellLib.h"
 
 INTN
 StrCmp (
@@ -421,7 +421,7 @@ Returns:
         return (UINTN) -1;
       }
 
-      u = u << 4 | c - (c >= 'A' ? 'A' - 10 : '0');
+      u = (u << 4) | (c - (c >= 'A' ? 'A' - 10 : '0'));
     } else {
       break;
     }
@@ -472,7 +472,7 @@ Returns:
   c = *(str++);
   while (c) {
     if (c >= '0' && c <= '9') {
-      if (u > m || u == m && c - '0' > (INTN) n) {
+      if ((u > m) || ((u == m) && (c - '0' > (INTN) n))) {
         return (UINTN) -1;
       }
 
diff --git a/Library/Str.h b/Library/Str.h
index 3f73bc5..7b01848 100644
--- a/Library/Str.h
+++ b/Library/Str.h
@@ -248,3 +248,4 @@ LibStubStrUpr (
   );
 
 #endif
+
diff --git a/Library/VarCheck.c b/Library/VarCheck.c
index 53597ff..1abec9d 100644
--- a/Library/VarCheck.c
+++ b/Library/VarCheck.c
@@ -21,7 +21,7 @@ Revision History
 
 --*/
 
-#include "EfiShelllib.h"
+#include "EfiShellLib.h"
 
 VOID
 LibCheckVarFreeVarList (
diff --git a/Library/VarCheck.h b/Library/VarCheck.h
index bc1f412..d2bfa66 100644
--- a/Library/VarCheck.h
+++ b/Library/VarCheck.h
@@ -41,7 +41,7 @@ typedef enum {
   ARG_PARTIALLY_QUOTED  = 0x2,
   ARG_FIRST_HALF_QUOTED = 0x4,
   ARG_FIRST_CHAR_IS_ESC = 0x8
-};
+} SHELL_ARG_EXPR;
 
 typedef struct {
   CHAR16                    *FlagStr;
@@ -116,3 +116,4 @@ LibGetErrRedirFilename (
   );
 
 #endif
+
diff --git a/Library/X64/efilibplat.h b/Library/X64/efilibplat.h
index 90659b4..aad0dd0 100644
--- a/Library/X64/efilibplat.h
+++ b/Library/X64/efilibplat.h
@@ -35,3 +35,4 @@ InitializeLibPlatform (
 #define MIN_ALIGNMENT_SIZE  8
 
 #endif
+
diff --git a/LoadPciRom/LoadPciRom.c b/LoadPciRom/LoadPciRom.c
index f8854b7..99fd99d 100644
--- a/LoadPciRom/LoadPciRom.c
+++ b/LoadPciRom/LoadPciRom.c
@@ -24,7 +24,7 @@ Revision History
 
 #include "EfiShellLib.h"
 #include "LoadPciRom.h"
-#include "Pci22.h"
+#include "pci22.h"
 
 extern UINT8    STRING_ARRAY_NAME[];
 
@@ -56,7 +56,7 @@ LoadEfiDriversFromRomImage (
   );
 
 EFI_HANDLE      gMyImageHandle;
-EFI_HII_HANDLE  HiiHandle;
+STATIC EFI_HII_HANDLE  HiiHandle;
 EFI_GUID        EfiLoadPciRomGuid = EFI_LOADPCIROM_GUID;
 SHELL_VAR_CHECK_ITEM    LPRCheckList[] = {
   {
@@ -81,7 +81,7 @@ SHELL_VAR_CHECK_ITEM    LPRCheckList[] = {
     NULL,
     0,
     0,
-    0
+    (SHELL_VAR_CHECK_FLAG_TYPE) 0
   }
 };
 
@@ -377,7 +377,7 @@ Returns:
         }
 
         if (EfiRomHeader->CompressionType == EFI_PCI_EXPANSION_ROM_HEADER_COMPRESSED) {
-          Status = BS->LocateProtocol (&gEfiDecompressProtocolGuid, NULL, &Decompress);
+          Status = BS->LocateProtocol (&gEfiDecompressProtocolGuid, NULL, (VOID**)&Decompress);
           if (EFI_ERROR (Status)) {
             PrintToken (STRING_TOKEN (STR_LOADPCIROM_DECOMP_NOT_FOUND), HiiHandle);
             SkipImage = TRUE;
diff --git a/LoadPciRom/LoadPciRom.h b/LoadPciRom/LoadPciRom.h
index e9db96d..116bb89 100644
--- a/LoadPciRom/LoadPciRom.h
+++ b/LoadPciRom/LoadPciRom.h
@@ -30,3 +30,4 @@ Revision History
   }
 
 #endif
+
diff --git a/LoadPciRom/LoadPciRom.inf b/LoadPciRom/LoadPciRom.inf
index 8e79af7..83744ef 100644
--- a/LoadPciRom/LoadPciRom.inf
+++ b/LoadPciRom/LoadPciRom.inf
@@ -41,23 +41,23 @@ COMPONENT_TYPE       = APPLICATION
 
 [sources.common]
   LoadPciRomStrings.uni
-  ..\ShCommonStrings.uni
+  ../ShCommonStrings.uni
   LoadPciRom.c
   LoadPciRom.h  
   
 [includes.common]
   .
-  ..\Inc
-  ..\Library
-  $(EDK_SOURCE)\Foundation
-  $(EDK_SOURCE)\Foundation\Include
-  $(EDK_SOURCE)\Foundation\Include\IndustryStandard
-  $(EDK_SOURCE)\Foundation\Efi
-  $(EDK_SOURCE)\Foundation\Efi\Include
-  $(EDK_SOURCE)\Foundation\FrameWork
-  $(EDK_SOURCE)\Foundation\FrameWork\Include
-  $(EDK_SOURCE)\Foundation\Core\Dxe
-  $(DEST_DIR)\
+  ../Inc
+  ../Library
+  $(EDK_SOURCE)/Foundation
+  $(EDK_SOURCE)/Foundation/Include
+  $(EDK_SOURCE)/Foundation/Include/IndustryStandard
+  $(EDK_SOURCE)/Foundation/Efi
+  $(EDK_SOURCE)/Foundation/Efi/Include
+  $(EDK_SOURCE)/Foundation/FrameWork
+  $(EDK_SOURCE)/Foundation/FrameWork/Include
+  $(EDK_SOURCE)/Foundation/Core/Dxe
+  $(DEST_DIR./
 
 [libraries.common]  
   EfiShellLib
@@ -72,7 +72,11 @@ COMPONENT_TYPE       = APPLICATION
 
 [nmake.common]
   IMAGE_ENTRY_POINT=InitializeLoadPciRom
+
+[nmake.IA32, nmake.EBC, nmake.X64, nmake.IPF]
   C_STD_FLAGS = $(C_STD_FLAGS) /DSTRING_ARRAY_NAME=$(BASE_NAME)Strings 
   C_STD_FLAGS = $(C_STD_FLAGS) /DSTRING_DEFINES_FILE=\"$(BASE_NAME)StrDefs.h\"
   C_STD_FLAGS = $(C_STD_FLAGS) /DEFI_BOOTSHELL
 
+[nmake.ARM, nmake.AARCH64]
+  C_STD_FLAGS = $(C_STD_FLAGS) -DEFI_BOOTSHELL
diff --git a/Ping/Ping.c b/Ping/Ping.c
index 7d92881..65e45b7 100644
--- a/Ping/Ping.c
+++ b/Ping/Ping.c
@@ -20,14 +20,14 @@ Abstract:
 --*/
 
 #include "EfiShellLib.h"
-#include "CpuFuncs.h"
+//#include "CpuFuncs.h"
 #include EFI_ARCH_PROTOCOL_DEFINITION (Cpu)
 #include EFI_PROTOCOL_DEFINITION (Ip4)
 #include "Ping.h"
 #include STRING_DEFINES_FILE
 extern UINT8 STRING_ARRAY_NAME[];
 
-EFI_HII_HANDLE  HiiHandle;
+STATIC EFI_HII_HANDLE  HiiHandle;
 
 EFI_GUID  EfiPingGuid = EFI_PING_GUID;
 SHELL_VAR_CHECK_ITEM  PingCheckList[] = {
@@ -59,7 +59,7 @@ SHELL_VAR_CHECK_ITEM  PingCheckList[] = {
     NULL,
     0,
     0,
-    0
+    (SHELL_VAR_CHECK_FLAG_TYPE) 0
   }
 };
 
@@ -114,6 +114,8 @@ UINT32            RttSum;
 UINT32            RttMin;
 UINT32            RttMax;
 
+EFI_CPU_ARCH_PROTOCOL  *gCpu = NULL;
+
 STATIC
 UINT64
 GetTimerValue (
@@ -135,7 +137,22 @@ Returns:
 
 --*/
 {
-  return EfiReadTsc ();
+  static UINT64          CurrentTick = 0;
+  UINT64                 TimerPeriod;
+  EFI_STATUS             Status;
+
+  ASSERT (gCpu != NULL);
+
+  Status = gCpu->GetTimerValue (gCpu, 0, &CurrentTick, &TimerPeriod);
+  if (EFI_ERROR (Status)) {
+    //
+    // The WinntGetTimerValue will return EFI_UNSUPPORTED. Set the
+    // TimerPeriod by ourselves.
+    //
+    CurrentTick += 1000000;
+  }
+  
+  return CurrentTick;
 }
 
 STATIC
@@ -168,7 +185,7 @@ Returns:
   //
   // Locate the Cpu Arch Protocol.
   //
-  Status = BS->LocateProtocol (&gEfiCpuArchProtocolGuid, NULL, &Cpu);
+  Status = BS->LocateProtocol (&gEfiCpuArchProtocolGuid, NULL, (VOID**)&Cpu);
   if (EFI_ERROR (Status)) {
     return Status;
   }
diff --git a/Ping/Ping.h b/Ping/Ping.h
index 7867caf..6f59a0c 100644
--- a/Ping/Ping.h
+++ b/Ping/Ping.h
@@ -78,3 +78,4 @@ typedef struct _ICMP_TX_INFO {
 } ICMP_TX_INFO;
 
 #endif
+
diff --git a/Ping/Ping.inf b/Ping/Ping.inf
index 64dec5c..a678489 100644
--- a/Ping/Ping.inf
+++ b/Ping/Ping.inf
@@ -25,24 +25,24 @@ FILE_GUID            = FAAA94BA-7095-4c0f-8D69-8E00C8328863
 COMPONENT_TYPE       = APPLICATION
 
 [sources.common]
-  ..\ShCommonStrings.uni
+  ../ShCommonStrings.uni
   PingStrings.uni
   Ping.h
   Ping.c
 
 [includes.common]
-  ..\Inc
-  ..\Library
-  $(EDK_SOURCE)\Foundation\Efi
-  $(EDK_SOURCE)\Foundation
-  $(EDK_SOURCE)\Foundation\Efi\Include
-  $(EDK_SOURCE)\Foundation\Include
-  $(EDK_SOURCE)\Foundation\Include\IndustryStandard
-  $(EDK_SOURCE)\Foundation\FrameWork
-  $(EDK_SOURCE)\Foundation\FrameWork\Include
-  $(EDK_SOURCE)\Foundation\Core\Dxe
-  $(EDK_SOURCE)\Foundation\Library\Dxe\Include
-  $(DEST_DIR)\
+  ../Inc
+  ../Library
+  $(EDK_SOURCE)/Foundation/Efi
+  $(EDK_SOURCE)/Foundation
+  $(EDK_SOURCE)/Foundation/Efi/Include
+  $(EDK_SOURCE)/Foundation/Include
+  $(EDK_SOURCE)/Foundation/Include/IndustryStandard
+  $(EDK_SOURCE)/Foundation/FrameWork
+  $(EDK_SOURCE)/Foundation/FrameWork/Include
+  $(EDK_SOURCE)/Foundation/Core/Dxe
+  $(EDK_SOURCE)/Foundation/Library/Dxe/Include
+  $(DEST_DIR./
 
 [libraries.common]  
   EfiShellLib
@@ -52,7 +52,6 @@ COMPONENT_TYPE       = APPLICATION
   ArchProtocolLib
   EdkGuidLib
   EdkFrameworkGuidLib
-  EfiDriverLib
 
 [libraries.Ia32]
   CpuIA32Lib
@@ -64,9 +63,12 @@ COMPONENT_TYPE       = APPLICATION
   CpuIA32Lib
 
 [nmake.common]
-  C_PROJ_FLAGS = $(C_PROJ_FLAGS)
   IMAGE_ENTRY_POINT=Ping
-  C_STD_FLAGS = $(C_STD_FLAGS) /DEFI_BOOTSHELL
+
+[nmake.IA32, nmake.EBC, nmake.X64, nmake.IPF]
   C_STD_FLAGS = $(C_STD_FLAGS) /DSTRING_ARRAY_NAME=$(BASE_NAME)Strings 
   C_STD_FLAGS = $(C_STD_FLAGS) /DSTRING_DEFINES_FILE=\"$(BASE_NAME)StrDefs.h\"
+  C_STD_FLAGS = $(C_STD_FLAGS) /DEFI_BOOTSHELL
 
+[nmake.ARM, nmake.AARCH64]
+  C_STD_FLAGS = $(C_STD_FLAGS) -DEFI_BOOTSHELL
diff --git a/Shell.inf b/Shell.inf
index fee3558..b1dc90e 100644
--- a/Shell.inf
+++ b/Shell.inf
@@ -25,179 +25,189 @@ FILE_GUID            = c57ad6b7-0515-40a8-9d21-551652854e37
 COMPONENT_TYPE       = APPLICATION
 
 [sources.common]
-  Library\ShellDebug.c
-  Library\DPath.c
-  Library\Init.c
-  Library\Lock.c
-  Library\Str.c
-  Library\IO.c
-  Library\Mem.c
-  Library\Misc.c
-  Library\Data.c
-  Library\RtData.c
-  Library\ShellEnvInt.c
-  Library\Handle.c
-  Library\FileIO.c
-  Library\ConsistMapping.c
-  Library\CRC.c
-  Library\Event.c
-  Library\Perf.c
-  Library\VarCheck.c
-  Library\HiiSupport.c  
-
-  newshell\NshellStrings.uni
-  newshell\init.c
-  newshell\nshell.h
-  newshell\fakehii.c
+  Library/ShellDebug.c
+  Library/DPath.c
+  Library/Init.c
+  Library/Lock.c
+  Library/Str.c
+  Library/IO.c
+  Library/Mem.c
+  Library/Misc.c
+  Library/Data.c
+  Library/RtData.c
+  Library/ShellEnvInt.c
+  Library/Handle.c
+  Library/FileIO.c
+  Library/ConsistMapping.c
+  Library/CRC.c
+  Library/Event.c
+  Library/Perf.c
+  Library/VarCheck.c
+  Library/HiiSupport.c  
+
+  newshell/NshellStrings.uni
+  newshell/init.c
+  newshell/nshell.h
+  newshell/fakehii.c
 
   ShCommonStrings.uni
-  shellenv\ShellenvHelpStrings.uni
-  shellenv\ShellenvStrings.uni
-  shellenv\ScriptCmdStrings.uni
-  shellenv\ConnectStrings.uni
-  shellenv\EchoStrings.uni
-  shellenv\HelpStrings.uni
-  shellenv\MapStrings.uni
-  shellenv\CdStrings.uni
-  shellenv\DhStrings.uni
+  shellenv/ShellenvHelpStrings.uni
+  shellenv/ShellenvStrings.uni
+  shellenv/ScriptCmdStrings.uni
+  shellenv/ConnectStrings.uni
+  shellenv/EchoStrings.uni
+  shellenv/HelpStrings.uni
+  shellenv/MapStrings.uni
+  shellenv/CdStrings.uni
+  shellenv/DhStrings.uni
   
-  shellenv\cmddisp.c
-  shellenv\connect.c
-  shellenv\data.c
-  shellenv\exec.c
-  shellenv\init.c
-  shellenv\protid.c
-  shellenv\var.c
-  shellenv\conio.c
-  shellenv\consoleproxy.c
-  shellenv\handle.c
-  shellenv\dprot.c
-  shellenv\map.c
-  shellenv\marg.c
-  shellenv\batch.c
-  shellenv\if.c
-  shellenv\goto.c
-  shellenv\echo.c
-  shellenv\pause.c
-  shellenv\for.c
-  shellenv\wait.c
-  shellenv\help.c
-  shellenv\shelle.h
-  shellenv\shellenvguid.h
-  shellenv\parsecmd.c
-  shellenv\shift.c
+  shellenv/cmddisp.c
+  shellenv/connect.c
+  shellenv/data.c
+  shellenv/exec.c
+  shellenv/init.c
+  shellenv/protid.c
+  shellenv/var.c
+  shellenv/conio.c
+  shellenv/consoleproxy.c
+  shellenv/handle.c
+  shellenv/dprot.c
+  shellenv/map.c
+  shellenv/marg.c
+  shellenv/batch.c
+  shellenv/if.c
+  shellenv/goto.c
+  shellenv/echo.c
+  shellenv/pause.c
+  shellenv/for.c
+  shellenv/wait.c
+  shellenv/help.c
+  shellenv/shelle.h
+  shellenv/shellenvguid.h
+  shellenv/parsecmd.c
+  shellenv/shift.c
  
-  unload\UnloadStrings.uni
-  unload\unload.c
+  unload/UnloadStrings.uni
+  unload/unload.c
   
-  attrib\AttribStrings.uni
-  attrib\attrib.c
-  attrib\attrib.h
+  attrib/AttribStrings.uni
+  attrib/attrib.c
+  attrib/attrib.h
 
-  cls\clsstrings.uni
-  cls\cls.c
+  cls/clsstrings.uni
+  cls/cls.c
 
-  cp\CpStrings.uni
-  cp\cp.h
-  cp\cp.c
+  cp/CpStrings.uni
+  cp/cp.h
+  cp/cp.c
  
-  date\DateStrings.uni
-  date\date.c
-  date\date.h
+  date/DateStrings.uni
+  date/date.c
+  date/date.h
 
-  load\LoadStrings.uni
-  load\load.c
-  load\load.h
+  load/LoadStrings.uni
+  load/load.c
+  load/load.h
 
-  ls\LsStrings.uni
-  ls\ls.h
-  ls\ls.c
+  ls/LsStrings.uni
+  ls/ls.h
+  ls/ls.c
 
-  mkdir\MkdirStrings.uni
-  mkdir\mkdir.c
-  mkdir\mkdir.h
+  mkdir/MkdirStrings.uni
+  mkdir/mkdir.c
+  mkdir/mkdir.h
 
-  mv\MvStrings.uni
-  mv\mv.c
-  mv\mv.h
+  mv/MvStrings.uni
+  mv/mv.c
+  mv/mv.h
  
-  reset\ResetStrings.uni
-  reset\reset.c
-  reset\reset.h
+  reset/ResetStrings.uni
+  reset/reset.c
+  reset/reset.h
   
-  rm\RmStrings.uni
-  rm\rm.h
-  rm\rm.c
+  rm/RmStrings.uni
+  rm/rm.h
+  rm/rm.c
   
-  type\TypeStrings.uni
-  type\type.c
-  type\type.h
-  time\TimeStrings.uni
-  time\time.c
-  time\time.h
-
-  touch\TouchStrings.uni
-  touch\touch.c
-  touch\touch.h
-
-  vol\VolStrings.uni
-  vol\vol.c
-  vol\vol.h
-
-  ver\VerStrings.uni
-  ver\ver.c
-  ver\ver.h
+  type/TypeStrings.uni
+  type/type.c
+  type/type.h
+  time/TimeStrings.uni
+  time/time.c
+  time/time.h
+
+  touch/TouchStrings.uni
+  touch/touch.c
+  touch/touch.h
+
+  vol/VolStrings.uni
+  vol/vol.c
+  vol/vol.h
+
+  ver/VerStrings.uni
+  ver/ver.c
+  ver/ver.h
   
-  drivers\driversStrings.uni
-  drivers\drivers.c
-  drivers\drivers.h
+  drivers/driversStrings.uni
+  drivers/drivers.c
+  drivers/drivers.h
   
-  drvcfg\DrvcfgStrings.uni
-  drvcfg\drvcfg.c
-  drvcfg\drvcfg.h
+  drvcfg/DrvcfgStrings.uni
+  drvcfg/drvcfg.c
+  drvcfg/drvcfg.h
         
-  drvdiag\DrvdiagStrings.uni
-  drvdiag\drvdiag.c
-  drvdiag\drvdiag.h
+  drvdiag/DrvdiagStrings.uni
+  drvdiag/drvdiag.c
+  drvdiag/drvdiag.h
  
 
 
 [sources.ia32]
-  ver\ia32\ver32.c
-  Library\ia32\math.c
-  Library\ia32\initplat.c
+  ver/IA32/ver32.c
+  Library/IA32/math.c
+  Library/IA32/initplat.c
 
 
 [sources.ipf]
-  ver\ipf\ver64.c
-  Library\ipf\math.c
-  Library\ipf\initplat.c
-  Library\ipf\palproc.s
-  Library\ipf\salpal.c
+  ver/IPF/ver64.c
+  Library/IPF/math.c
+  Library/IPF/initplat.c
+  Library/IPF/palproc.s
+  Library/IPF/salpal.c
 
 [sources.EBC]
-  ver\ebc\verEbc.c
-  Library\EBC\math.c
-  Library\EBC\initplat.c
+  ver/ebc/verEbc.c
+  Library/Ebc/math.c
+  Library/Ebc/initplat.c
 
 [sources.x64]
-  ver\ia32\ver32.c
-  Library\ipf\math.c
-  Library\ia32\initplat.c
+  ver/IA32/ver32.c
+  Library/IPF/math.c
+  Library/IA32/initplat.c
+
+[sources.ARM]
+  ver/ia32/ver32.c
+  Library/IPF/math.c
+  Library/IA32/initplat.c
+
+[sources.AARCH64]
+  ver/ia32/ver32.c
+  Library/IPF/math.c
+  Library/IA32/initplat.c
 
 [includes.common]
   .
-  .\Inc
-  .\ver
-  .\Library
-  $(EDK_SOURCE)\Foundation
-  $(EDK_SOURCE)\Foundation\Include
-  $(EDK_SOURCE)\Foundation\Include\IndustryStandard
-  $(EDK_SOURCE)\Foundation\Efi
-  $(EDK_SOURCE)\Foundation\Efi\Include
-  $(EDK_SOURCE)\Foundation\FrameWork
-  $(EDK_SOURCE)\Foundation\FrameWork\Include
-  $(EDK_SOURCE)\Foundation\Core\Dxe
+  ./Inc
+  ./ver
+  ./Library
+  $(EDK_SOURCE)/Foundation
+  $(EDK_SOURCE)/Foundation/Include
+  $(EDK_SOURCE)/Foundation/Include/IndustryStandard
+  $(EDK_SOURCE)/Foundation/Efi
+  $(EDK_SOURCE)/Foundation/Efi/Include
+  $(EDK_SOURCE)/Foundation/FrameWork
+  $(EDK_SOURCE)/Foundation/FrameWork/Include
+  $(EDK_SOURCE)/Foundation/Core/Dxe
   $(DEST_DIR)
 
 [libraries.common]
@@ -216,17 +226,18 @@ COMPONENT_TYPE       = APPLICATION
 # we will specify some additional DEFINEs on the compile command line.
 #
 [nmake.common]
-  C_PROJ_FLAGS = $(C_PROJ_FLAGS) /Zm500
   IMAGE_ENTRY_POINT=InitializeShell
-  C_STD_FLAGS = $(C_STD_FLAGS) /DEFI_MONOSHELL
+
+[nmake.IA32, nmake.EBC, nmake.X64, nmake.IPF]
+  C_PROJ_FLAGS = $(C_PROJ_FLAGS) /Zm500
   C_STD_FLAGS = $(C_STD_FLAGS) /DSTRING_ARRAY_NAME=$(BASE_NAME)Strings 
   C_STD_FLAGS = $(C_STD_FLAGS) /DSTRING_DEFINES_FILE=\"$(BASE_NAME)StrDefs.h\"
+  C_STD_FLAGS = $(C_STD_FLAGS) /DEFI_MONOSHELL
+
+[nmake.ARM, nmake.AARCH64]
+  C_STD_FLAGS = $(C_STD_FLAGS) -DEFI_MONOSHELL
 
 [nmake.ebc]
   EBC_C_STD_FLAGS = $(EBC_C_STD_FLAGS) /DEFI_MONOSHELL
   EBC_C_STD_FLAGS = $(EBC_C_STD_FLAGS) /DSTRING_ARRAY_NAME=$(BASE_NAME)Strings 
   EBC_C_STD_FLAGS = $(EBC_C_STD_FLAGS) /DSTRING_DEFINES_FILE=\"$(BASE_NAME)StrDefs.h\"
-
-
-
- 
\ No newline at end of file
diff --git a/ShellFull.inf b/ShellFull.inf
index 832dc79..48fa7aa 100644
--- a/ShellFull.inf
+++ b/ShellFull.inf
@@ -20,300 +20,310 @@
 #--*/
 
 [defines]
-BASE_NAME            = Shell
-FILE_GUID            = c57ad6b7-0515-40a8-9d21-551652854e37
+BASE_NAME            = ShellFull
+FILE_GUID            = 1903FB23-E526-4BDA-85E4-D68F2EEF0C20 
 COMPONENT_TYPE       = APPLICATION
 
 [sources.common]
-  Library\ShellDebug.c
-  Library\DPath.c
-  Library\Init.c
-  Library\Lock.c
-  Library\Str.c
-  Library\IO.c
-  Library\Mem.c
-  Library\Misc.c
-  Library\Data.c
-  Library\RtData.c
-  Library\ShellEnvInt.c
-  Library\Handle.c
-  Library\FileIO.c
-  Library\ConsistMapping.c
-  Library\CRC.c
-  Library\Event.c
-  Library\Perf.c
-  Library\VarCheck.c
-  Library\HiiSupport.c
-
-  newshell\NshellStrings.uni
-  newshell\init.c
-  newshell\nshell.h
-  newshell\fakehii.c
+  Library/ShellDebug.c
+  Library/DPath.c
+  Library/Init.c
+  Library/Lock.c
+  Library/Str.c
+  Library/IO.c
+  Library/Mem.c
+  Library/Misc.c
+  Library/Data.c
+  Library/RtData.c
+  Library/ShellEnvInt.c
+  Library/Handle.c
+  Library/FileIO.c
+  Library/ConsistMapping.c
+  Library/CRC.c
+  Library/Event.c
+  Library/Perf.c
+  Library/VarCheck.c
+  Library/HiiSupport.c
+
+  newshell/NshellStrings.uni
+  newshell/init.c
+  newshell/nshell.h
+  newshell/fakehii.c
 
   ShCommonStrings.uni
-  shellenv\ShellenvHelpStrings.uni
-  shellenv\ShellenvStrings.uni
-  shellenv\ScriptCmdStrings.uni
-  shellenv\ConnectStrings.uni
-  shellenv\EchoStrings.uni
-  shellenv\HelpStrings.uni
-  shellenv\MapStrings.uni
-  shellenv\CdStrings.uni
-  shellenv\DhStrings.uni
+  shellenv/ShellenvHelpStrings.uni
+  shellenv/ShellenvStrings.uni
+  shellenv/ScriptCmdStrings.uni
+  shellenv/ConnectStrings.uni
+  shellenv/EchoStrings.uni
+  shellenv/HelpStrings.uni
+  shellenv/MapStrings.uni
+  shellenv/CdStrings.uni
+  shellenv/DhStrings.uni
   
-  shellenv\cmddisp.c
-  shellenv\connect.c
-  shellenv\data.c
-  shellenv\exec.c
-  shellenv\init.c
-  shellenv\protid.c
-  shellenv\var.c
-  shellenv\conio.c
-  shellenv\consoleproxy.c
-  shellenv\handle.c
-  shellenv\dprot.c
-  shellenv\map.c
-  shellenv\marg.c
-  shellenv\batch.c
-  shellenv\if.c
-  shellenv\goto.c
-  shellenv\echo.c
-  shellenv\pause.c
-  shellenv\for.c
-  shellenv\wait.c
-  shellenv\help.c
-  shellenv\shelle.h
-  shellenv\shellenvguid.h
-  shellenv\parsecmd.c
-  shellenv\shift.c
+  shellenv/cmddisp.c
+  shellenv/connect.c
+  shellenv/data.c
+  shellenv/exec.c
+  shellenv/init.c
+  shellenv/protid.c
+  shellenv/var.c
+  shellenv/conio.c
+  shellenv/consoleproxy.c
+  shellenv/handle.c
+  shellenv/dprot.c
+  shellenv/map.c
+  shellenv/marg.c
+  shellenv/batch.c
+  shellenv/if.c
+  shellenv/goto.c
+  shellenv/echo.c
+  shellenv/pause.c
+  shellenv/for.c
+  shellenv/wait.c
+  shellenv/help.c
+  shellenv/shelle.h
+  shellenv/shellenvguid.h
+  shellenv/parsecmd.c
+  shellenv/shift.c
  
-  unload\UnloadStrings.uni
-  unload\unload.c
+  unload/UnloadStrings.uni
+  unload/unload.c
   
-  attrib\AttribStrings.uni
-  attrib\attrib.c
-  attrib\attrib.h
+  attrib/AttribStrings.uni
+  attrib/attrib.c
+  attrib/attrib.h
 
-  cls\clsstrings.uni
-  cls\cls.c
+  cls/clsstrings.uni
+  cls/cls.c
 
-  cp\CpStrings.uni
-  cp\cp.h
-  cp\cp.c
+  cp/CpStrings.uni
+  cp/cp.h
+  cp/cp.c
  
-  date\DateStrings.uni
-  date\date.c
-  date\date.h
+  date/DateStrings.uni
+  date/date.c
+  date/date.h
 
-  load\LoadStrings.uni
-  load\load.c
-  load\load.h
+  load/LoadStrings.uni
+  load/load.c
+  load/load.h
 
-  ls\LsStrings.uni
-  ls\ls.h
-  ls\ls.c
+  ls/LsStrings.uni
+  ls/ls.h
+  ls/ls.c
 
-  mkdir\MkdirStrings.uni
-  mkdir\mkdir.c
-  mkdir\mkdir.h
+  mkdir/MkdirStrings.uni
+  mkdir/mkdir.c
+  mkdir/mkdir.h
 
-  mv\MvStrings.uni
-  mv\mv.c
-  mv\mv.h
+  mv/MvStrings.uni
+  mv/mv.c
+  mv/mv.h
  
-  reset\ResetStrings.uni
-  reset\reset.c
-  reset\reset.h
+  reset/ResetStrings.uni
+  reset/reset.c
+  reset/reset.h
   
-  rm\RmStrings.uni
-  rm\rm.h
-  rm\rm.c
+  rm/RmStrings.uni
+  rm/rm.h
+  rm/rm.c
   
-  type\TypeStrings.uni
-  type\type.c
-  type\type.h
-  time\TimeStrings.uni
-  time\time.c
-  time\time.h
-
-  touch\TouchStrings.uni
-  touch\touch.c
-  touch\touch.h
-
-  vol\VolStrings.uni
-  vol\vol.c
-  vol\vol.h
-
-  ver\VerStrings.uni
-  ver\ver.c
-  ver\ver.h
+  type/TypeStrings.uni
+  type/type.c
+  type/type.h
+  time/TimeStrings.uni
+  time/time.c
+  time/time.h
+
+  touch/TouchStrings.uni
+  touch/touch.c
+  touch/touch.h
+
+  vol/VolStrings.uni
+  vol/vol.c
+  vol/vol.h
+
+  ver/VerStrings.uni
+  ver/ver.c
+  ver/ver.h
   
-  drivers\driversStrings.uni
-  drivers\drivers.c
-  drivers\drivers.h
+  drivers/driversStrings.uni
+  drivers/drivers.c
+  drivers/drivers.h
   
-  drvcfg\DrvcfgStrings.uni
-  drvcfg\drvcfg.c
-  drvcfg\drvcfg.h
+  drvcfg/DrvcfgStrings.uni
+  drvcfg/drvcfg.c
+  drvcfg/drvcfg.h
         
-  drvdiag\DrvdiagStrings.uni
-  drvdiag\drvdiag.c
-  drvdiag\drvdiag.h
+  drvdiag/DrvdiagStrings.uni
+  drvdiag/drvdiag.c
+  drvdiag/drvdiag.h
   
-  comp\CompStrings.uni
-  comp\comp.c
+  comp/CompStrings.uni
+  comp/comp.c
   
-  dblk\dblkStrings.uni
-  dblk\dblk.c
-  dblk\efidump.c
+  dblk/dblkStrings.uni
+  dblk/dblk.c
+  dblk/efidump.c
  
-  devices\DevicesStrings.uni
-  devices\devices.c
+  devices/DevicesStrings.uni
+  devices/devices.c
   
-  devicetree\DevicetreeStrings.uni
-  devicetree\devicetree.c
+  devicetree/DevicetreeStrings.uni
+  devicetree/devicetree.c
   
-  dmem\MemStrings.uni
-  dmem\DebugStrings.uni  
-  dmem\mem.c
-  dmem\MemCommonPart.c
-  dmem\efidump.c  
+  dmem/MemStrings.uni
+  dmem/DebugStrings.uni  
+  dmem/mem.c
+  dmem/MemCommonPart.c
+  dmem/efidump.c  
   
-  dmpstore\DmpstoreStrings.uni
-  dmpstore\dmpstore.c
+  dmpstore/DmpstoreStrings.uni
+  dmpstore/dmpstore.c
   
-  edit\EditStrings.uni
-  edit\main.c
-  edit\libFileBuffer.c
-  edit\libEditor.c
-  edit\libTitleBar.c
-  edit\libStatusBar.c
-  edit\libInputBar.c
-  edit\libMenuBar.c
-  edit\libMisc.c 
+  edit/EditStrings.uni
+  edit/main.c
+  edit/libFileBuffer.c
+  edit/libEditor.c
+  edit/libTitleBar.c
+  edit/libStatusBar.c
+  edit/libInputBar.c
+  edit/libMenuBar.c
+  edit/libMisc.c 
   
-  eficompress\CompressStrings.uni
-  eficompress\compressMain.c
-  eficompress\compress.c   
+  eficompress/CompressStrings.uni
+  eficompress/compressMain.c
+  eficompress/compress.c   
   
-  efidecompress\DecompressStrings.uni
-  efidecompress\decompress.c
+  efidecompress/DecompressStrings.uni
+  efidecompress/decompress.c
   
-  err\ErrStrings.uni
-  err\err.c
+  err/ErrStrings.uni
+  err/err.c
   
-  guid\GuidStrings.uni
-  guid\guid.c
+  guid/GuidStrings.uni
+  guid/guid.c
   
-  hexedit\HexeditStrings.uni
-  hexedit\main.c
-  hexedit\libBufferImage.c
-  hexedit\libFileImage.c
-  hexedit\libDiskImage.c
-  hexedit\libMemImage.c
-  hexedit\libEditor.c
-  hexedit\libTitleBar.c
-  hexedit\libStatusBar.c
-  hexedit\libInputBar.c
-  hexedit\libMenuBar.c
-  hexedit\libClipBoard.c
-  hexedit\libMisc.c
-
-  IfConfig\IfConfigStrings.uni
-  IfConfig\IfConfig.c
-  IfConfig\IfConfig.h
-  IfConfig\ShellNetHelper.c
-
-  ipconfig\IpConfigStrings.uni
-  ipconfig\IpConfig.c
+  hexedit/HexeditStrings.uni
+  hexedit/main.c
+  hexedit/libBufferImage.c
+  hexedit/libFileImage.c
+  hexedit/libDiskImage.c
+  hexedit/libMemImage.c
+  hexedit/libEditor.c
+  hexedit/libTitleBar.c
+  hexedit/libStatusBar.c
+  hexedit/libInputBar.c
+  hexedit/libMenuBar.c
+  hexedit/libClipBoard.c
+  hexedit/libMisc.c
+
+  IfConfig/IfConfigStrings.uni
+  IfConfig/IfConfig.c
+  IfConfig/IfConfig.h
+  IfConfig/ShellNetHelper.c
+
+  IpConfig/IpConfigStrings.uni
+  IpConfig/IpConfig.c
   
-  loadpcirom\LoadPciRomStrings.uni
-  loadpcirom\LoadPciRom.c
+  loadpcirom/LoadPciRomStrings.uni
+  loadpcirom/LoadPciRom.c
   
-  mem\MemStrings.uni
-  mem\DebugStrings.uni  
-  mem\mm.c
-  mem\MemCommonPart.c
-  mem\efidump.c  
+  mem/MemStrings.uni
+  mem/DebugStrings.uni  
+  mem/mm.c
+  mem/MemCommonPart.c
+  mem/efidump.c  
   
-  memmap\memmapStrings.uni
-  memmap\memmap.c
+  memmap/memmapStrings.uni
+  memmap/memmap.c
   
-  mm\MmStrings.uni
-  mm\mm.c
+  mm/MmStrings.uni
+  mm/mm.c
   
-  mode\ModeStrings.uni
-  mode\mode.c
+  mode/ModeStrings.uni
+  mode/mode.c
   
-  mount\MountStrings.uni
-  mount\mount.c
+  mount/MountStrings.uni
+  mount/mount.c
   
-  openinfo\OPeninfoStrings.uni
-  openinfo\openinfo.c
+  openinfo/OPeninfoStrings.uni
+  openinfo/openinfo.c
 
-  Ping\PingStrings.uni
-  Ping\Ping.c
+  Ping/PingStrings.uni
+  Ping/Ping.c
 
-  pci\PciStrings.uni
-  pci\pci.c
-  pci\pci_class.c
+  pci/PciStrings.uni
+  pci/pci.c
+  pci/pci_class.c
   
-  sermode\SermodeStrings.uni
-  sermode\sermode.c
+  sermode/SermodeStrings.uni
+  sermode/sermode.c
   
-  smbiosview\SmBiosViewStrings.uni
-  smbiosview\QueryTable.c
-  smbiosview\EventLogInfo.c
-  smbiosview\PrintInfo.c
-  smbiosview\LibSmbiosView.c
-  smbiosview\smbiosview.c
-  smbiosview\smbios.c
+  smbiosview/SmBiosViewStrings.uni
+  smbiosview/QueryTable.c
+  smbiosview/EventLogInfo.c
+  smbiosview/PrintInfo.c
+  smbiosview/LibSmbiosView.c
+  smbiosview/smbiosview.c
+  smbiosview/smbios.c
   
-  stall\stallStrings.uni
-  stall\stall.c
+  stall/stallStrings.uni
+  stall/stall.c
   
-  telnetmgmt\TelnetMgmtStrings.uni
-  telnetmgmt\TelnetMgmt.c
+  telnetmgmt/TelnetMgmtStrings.uni
+  telnetmgmt/TelnetMgmt.c
   
-  tzone\TZoneStrings.uni
-  tzone\tzone.c
+  tzone/TZoneStrings.uni
+  tzone/tzone.c
 
 [sources.ia32]
-  ver\ia32\ver32.c
-  Library\ia32\math.c
-  Library\ia32\initplat.c
+  ver/IA32/ver32.c
+  Library/IA32/math.c
+  Library/IA32/initplat.c
 
 [sources.ipf]
-  ver\ipf\ver64.c
-  Library\ipf\math.c
-  Library\ipf\initplat.c
-  Library\ipf\palproc.s
-  Library\ipf\salpal.c
+  ver/IPF/ver64.c
+  Library/IPF/math.c
+  Library/IPF/initplat.c
+  Library/IPF/palproc.s
+  Library/IPF/salpal.c
 
 [sources.EBC]
-  ver\ebc\verEbc.c
-  Library\EBC\math.c
-  Library\EBC\initplat.c
+  ver/ebc/verEbc.c
+  Library/Ebc/math.c
+  Library/Ebc/initplat.c
 
 [sources.x64]
-  ver\ia32\ver32.c
-  Library\ipf\math.c
-  Library\ia32\initplat.c
+  ver/IA32/ver32.c
+  Library/IPF/math.c
+  Library/IA32/initplat.c
+
+[sources.ARM]
+  ver/ia32/ver32.c
+  Library/IPF/math.c
+  Library/IA32/initplat.c
+
+[sources.AARCH64]
+  ver/ia32/ver32.c
+  Library/IPF/math.c
+  Library/IA32/initplat.c
 
 [includes.common]
   .
-  .\Inc
-  .\ver
-  .\Library
-  $(EDK_SOURCE)\Foundation
-  $(EDK_SOURCE)\Foundation\Include
-  $(EDK_SOURCE)\Foundation\Include\IndustryStandard
-  $(EDK_SOURCE)\Foundation\Efi
-  $(EDK_SOURCE)\Foundation\Efi\Include
-  $(EDK_SOURCE)\Foundation\FrameWork
-  $(EDK_SOURCE)\Foundation\FrameWork\Include
-  $(EDK_SOURCE)\Foundation\Core\Dxe
-  $(EDK_SOURCE)\Foundation\Library\Dxe\Include
+  ./Inc
+  ./ver
+  ./Library
+  $(EDK_SOURCE)/Foundation
+  $(EDK_SOURCE)/Foundation/Include
+  $(EDK_SOURCE)/Foundation/Include/IndustryStandard
+  $(EDK_SOURCE)/Foundation/Efi
+  $(EDK_SOURCE)/Foundation/Efi/Include
+  $(EDK_SOURCE)/Foundation/FrameWork
+  $(EDK_SOURCE)/Foundation/FrameWork/Include
+  $(EDK_SOURCE)/Foundation/Core/Dxe
+  $(EDK_SOURCE)/Foundation/Library/Dxe/Include
   $(DEST_DIR)
 
 [libraries.common]
@@ -341,16 +351,18 @@ COMPONENT_TYPE       = APPLICATION
 # we will specify some additional DEFINEs on the compile command line.
 #
 [nmake.common]
-  C_PROJ_FLAGS = $(C_PROJ_FLAGS) /Zm500
   IMAGE_ENTRY_POINT=InitializeShell
-  C_STD_FLAGS = $(C_STD_FLAGS) /DEFI_MONOSHELL /DEFI_FULLSHELL
+
+[nmake.IA32, nmake.EBC, nmake.X64, nmake.IPF]
+  C_PROJ_FLAGS = $(C_PROJ_FLAGS) /Zm500
   C_STD_FLAGS = $(C_STD_FLAGS) /DSTRING_ARRAY_NAME=$(BASE_NAME)Strings 
   C_STD_FLAGS = $(C_STD_FLAGS) /DSTRING_DEFINES_FILE=\"$(BASE_NAME)StrDefs.h\"
+  C_STD_FLAGS = $(C_STD_FLAGS) /DEFI_MONOSHELL /DEFI_FULLSHELL
+
+[nmake.ARM, nmake.AARCH64]
+  C_STD_FLAGS = $(C_STD_FLAGS) -DEFI_MONOSHELL -DEFI_FULLSHELL
 
 [nmake.ebc]
   EBC_C_STD_FLAGS = $(EBC_C_STD_FLAGS) /DEFI_MONOSHELL /DEFI_FULLSHELL
   EBC_C_STD_FLAGS = $(EBC_C_STD_FLAGS) /DSTRING_ARRAY_NAME=$(BASE_NAME)Strings 
   EBC_C_STD_FLAGS = $(EBC_C_STD_FLAGS) /DSTRING_DEFINES_FILE=\"$(BASE_NAME)StrDefs.h\"
-
-
- 
\ No newline at end of file
diff --git a/SmbiosView/EventLogInfo.c b/SmbiosView/EventLogInfo.c
index 7f9b726..33e3549 100644
--- a/SmbiosView/EventLogInfo.c
+++ b/SmbiosView/EventLogInfo.c
@@ -25,7 +25,7 @@ Revision History
 #include "PrintInfo.h"
 #include "QueryTable.h"
 #include "EventLogInfo.h"
-#include "smbios.h"
+#include "Smbios.h"
 #include STRING_DEFINES_FILE
 
 VOID
diff --git a/SmbiosView/EventLogInfo.h b/SmbiosView/EventLogInfo.h
index d1591c0..ca58380 100644
--- a/SmbiosView/EventLogInfo.h
+++ b/SmbiosView/EventLogInfo.h
@@ -85,3 +85,4 @@ DisplaySysEventLogData (
   );
 
 #endif
+
diff --git a/SmbiosView/LibSmbios.h b/SmbiosView/LibSmbios.h
index b13fd6b..c2e6b5e 100644
--- a/SmbiosView/LibSmbios.h
+++ b/SmbiosView/LibSmbios.h
@@ -642,3 +642,4 @@ LibGetSmbiosSystemGuidAndSerialNumber (
 
 
 #endif
+
diff --git a/SmbiosView/LibSmbiosView.c b/SmbiosView/LibSmbiosView.c
index d31ed01..f1438bc 100644
--- a/SmbiosView/LibSmbiosView.c
+++ b/SmbiosView/LibSmbiosView.c
@@ -22,10 +22,10 @@ Revision History
 --*/
 
 #include "EfiShellLib.h"
-#include "LIbSmbios.h"
+#include "LibSmbios.h"
 #include "LibSmbiosView.h"
 #include "smbiosview.h"
-#include "smbios.h"
+#include "Smbios.h"
 #include STRING_DEFINES_FILE
 
 STATIC UINT8                    mInit         = 0;
@@ -62,7 +62,7 @@ Returns:
   //
   // Get SMBIOS table from System Configure table
   //
-  Status = LibGetSystemConfigurationTable (&gEfiSmbiosTableGuid, &mSmbiosTable);
+  Status = LibGetSystemConfigurationTable (&gEfiSmbiosTableGuid, (VOID**)&mSmbiosTable);
 
   if (mSmbiosTable == NULL) {
     PrintToken (STRING_TOKEN (STR_SMBIOSVIEW_LIBSMBIOSVIEW_CANNOT_GET_TABLE), HiiHandle);
@@ -110,13 +110,13 @@ LibSmbiosGetEPS (
 
 VOID
 LibSmbiosGetStructHead (
-  SMBIOS_STRUCTURE_POINTER *pHead
+  SMBIOS_STRUCTURE_POINTER **pHead
   )
 {
   //
   // return SMBIOS structure table address
   //
-  pHead = mSmbiosStruct;
+  *pHead = mSmbiosStruct;
 }
 
 EFI_STATUS
diff --git a/SmbiosView/LibSmbiosView.h b/SmbiosView/LibSmbiosView.h
index d763937..b7f7989 100644
--- a/SmbiosView/LibSmbiosView.h
+++ b/SmbiosView/LibSmbiosView.h
@@ -66,7 +66,7 @@ LibSmbiosGetEPS (
 
 VOID
 LibSmbiosGetStructHead (
-  SMBIOS_STRUCTURE_POINTER *pHead
+  SMBIOS_STRUCTURE_POINTER **pHead
   );
 
 EFI_STATUS
@@ -128,3 +128,4 @@ SmbiosCheckStructure (
   );
 
 #endif
+
diff --git a/SmbiosView/PrintInfo.c b/SmbiosView/PrintInfo.c
index ff1f63c..1789ef6 100644
--- a/SmbiosView/PrintInfo.c
+++ b/SmbiosView/PrintInfo.c
@@ -26,7 +26,7 @@ Revision History
 #include "LibSmbiosView.h"
 #include "QueryTable.h"
 #include "EventLogInfo.h"
-#include "smbios.h"
+#include "Smbios.h"
 #include STRING_DEFINES_FILE
 
 //
diff --git a/SmbiosView/PrintInfo.h b/SmbiosView/PrintInfo.h
index 608dfb1..10faf21 100644
--- a/SmbiosView/PrintInfo.h
+++ b/SmbiosView/PrintInfo.h
@@ -199,3 +199,4 @@ DisplaySPSCharacteristics (
   );
 
 #endif
+
diff --git a/SmbiosView/QueryTable.c b/SmbiosView/QueryTable.c
index 4570938..1d9d60f 100644
--- a/SmbiosView/QueryTable.c
+++ b/SmbiosView/QueryTable.c
@@ -23,7 +23,7 @@ Revision History
 #include "EfiShellLib.h"
 #include "QueryTable.h"
 #include "PrintInfo.h"
-#include "smbios.h"
+#include "Smbios.h"
 
 #include STRING_DEFINES_FILE
 
diff --git a/SmbiosView/QueryTable.h b/SmbiosView/QueryTable.h
index 727a053..ceb02fe 100644
--- a/SmbiosView/QueryTable.h
+++ b/SmbiosView/QueryTable.h
@@ -437,3 +437,4 @@ DisplayIPMIDIBMCInterfaceType (
   );
 
 #endif
+
diff --git a/SmbiosView/Smbios.h b/SmbiosView/Smbios.h
index 8a91b9e..15eb89c 100644
--- a/SmbiosView/Smbios.h
+++ b/SmbiosView/Smbios.h
@@ -37,3 +37,4 @@ extern EFI_HII_HANDLE HiiHandle;
 
 
 #endif
+
diff --git a/SmbiosView/Smbiosview.inf b/SmbiosView/Smbiosview.inf
index f9e8c0b..d35b669 100644
--- a/SmbiosView/Smbiosview.inf
+++ b/SmbiosView/Smbiosview.inf
@@ -25,7 +25,7 @@ FILE_GUID            = 0F4C0280-B581-4940-AF19-D0CB5559CC95
 COMPONENT_TYPE       = APPLICATION
 
 [sources.common]
-  ..\ShCommonStrings.uni
+  ../ShCommonStrings.uni
   SmBiosViewStrings.uni
   QueryTable.c
   QueryTable.h
@@ -43,19 +43,19 @@ COMPONENT_TYPE       = APPLICATION
 
 [includes.common]
   .
-  ..\Inc
-  ..\Library
-  $(EDK_SOURCE)\Foundation
-  $(EDK_SOURCE)\Foundation\Include
-  $(EDK_SOURCE)\Foundation\Include\IndustryStandard
-  $(EDK_SOURCE)\Foundation\Efi
-  $(EDK_SOURCE)\Foundation\Efi\Include
-  $(EDK_SOURCE)\Foundation\FrameWork
-  $(EDK_SOURCE)\Foundation\FrameWork\Include
-  $(EDK_SOURCE)\Foundation\Core\Dxe
-  $(DEST_DIR)\
-  $(EFI_SOURCE)\Application\Shell\Inc
-  $(EFI_SOURCE)\Application\Shell\Library
+  ../Inc
+  ../Library
+  $(EDK_SOURCE)/Foundation
+  $(EDK_SOURCE)/Foundation/Include
+  $(EDK_SOURCE)/Foundation/Include/IndustryStandard
+  $(EDK_SOURCE)/Foundation/Efi
+  $(EDK_SOURCE)/Foundation/Efi/Include
+  $(EDK_SOURCE)/Foundation/FrameWork
+  $(EDK_SOURCE)/Foundation/FrameWork/Include
+  $(EDK_SOURCE)/Foundation/Core/Dxe
+  $(DEST_DIR./
+  $(EFI_SOURCE)/Applicatio./Shels/Inc
+  $(EFI_SOURCE)/Applicatio./Shels/Library
 
 [libraries.common]  
   EfiShellLib
@@ -70,7 +70,12 @@ COMPONENT_TYPE       = APPLICATION
 
 [nmake.common]
   IMAGE_ENTRY_POINT=InitializeSmbiosViewApplication
+
+[nmake.IA32, nmake.EBC, nmake.X64, nmake.IPF]
   L_PROJ_FLAGS=/align:4096
   C_STD_FLAGS = $(C_STD_FLAGS) /DSTRING_ARRAY_NAME=$(BASE_NAME)Strings 
   C_STD_FLAGS = $(C_STD_FLAGS) /DSTRING_DEFINES_FILE=\"$(BASE_NAME)StrDefs.h\"
   C_STD_FLAGS = $(C_STD_FLAGS) /DEFI_BOOTSHELL
+
+[nmake.ARM, nmake.AARCH64]
+  C_STD_FLAGS = $(C_STD_FLAGS) -DEFI_BOOTSHELL
diff --git a/SmbiosView/smbiosview.c b/SmbiosView/smbiosview.c
index 13b4fb7..79716d3 100644
--- a/SmbiosView/smbiosview.c
+++ b/SmbiosView/smbiosview.c
@@ -26,7 +26,7 @@ Revision History
 #include "smbiosview.h"
 #include "PrintInfo.h"
 #include "QueryTable.h"
-#include "smbios.h"
+#include "Smbios.h"
 
 extern UINT8                STRING_ARRAY_NAME[];
 
@@ -88,7 +88,7 @@ SHELL_VAR_CHECK_ITEM        SmbiosviewCheckList[] = {
     NULL,
     0,
     0,
-    0
+    (SHELL_VAR_CHECK_FLAG_TYPE)0
   }
 };
 
diff --git a/SmbiosView/smbiosview.h b/SmbiosView/smbiosview.h
index dd65bc1..2101551 100644
--- a/SmbiosView/smbiosview.h
+++ b/SmbiosView/smbiosview.h
@@ -84,3 +84,4 @@ GetShowTypeString (
 extern UINT8  gShowType;
 
 #endif
+
diff --git a/TelnetMgmt/TelnetMgmt.c b/TelnetMgmt/TelnetMgmt.c
index 9d779df..04088d1 100644
--- a/TelnetMgmt/TelnetMgmt.c
+++ b/TelnetMgmt/TelnetMgmt.c
@@ -32,7 +32,7 @@ extern UINT8    STRING_ARRAY_NAME[];
 //
 #include STRING_DEFINES_FILE
 
-EFI_HII_HANDLE  HiiHandle;
+STATIC EFI_HII_HANDLE  HiiHandle;
 EFI_GUID        EfiTelnetMgmtGuid = EFI_TELNETMGMT_GUID;
 EFI_GUID        mEfiTelnetServerGuid = EFI_TELNET_SERVER_PROTOCOL_GUID;
 SHELL_VAR_CHECK_ITEM        TelnetmgmtCheckList[] = {
@@ -58,7 +58,7 @@ SHELL_VAR_CHECK_ITEM        TelnetmgmtCheckList[] = {
     NULL,
     0,
     0,
-    0
+    (SHELL_VAR_CHECK_FLAG_TYPE) 0
   }
 };
 
diff --git a/TelnetMgmt/TelnetMgmt.h b/TelnetMgmt/TelnetMgmt.h
index 224fc3b..ed3c2f2 100644
--- a/TelnetMgmt/TelnetMgmt.h
+++ b/TelnetMgmt/TelnetMgmt.h
@@ -29,4 +29,4 @@ Revision History
     0x55d41b9a, 0x954d, 0x4fbb, 0x8d, 0x6d, 0x24, 0x75, 0xf5, 0x30, 0x9d, 0x37 \
   }
 
-#endif
\ No newline at end of file
+#endif
diff --git a/TelnetMgmt/TelnetMgmt.inf b/TelnetMgmt/TelnetMgmt.inf
index ad8b8bd..d2d9edb 100644
--- a/TelnetMgmt/TelnetMgmt.inf
+++ b/TelnetMgmt/TelnetMgmt.inf
@@ -25,23 +25,23 @@ FILE_GUID            = 0C6282F4-F575-469d-BD55-7693AAC9D812
 COMPONENT_TYPE       = APPLICATION
 
 [sources.common]
-  ..\ShCommonStrings.uni
+  ../ShCommonStrings.uni
   TelnetMgmtStrings.uni
   TelnetMgmt.c
 
 [includes.common]
   .
-  ..\Inc
-  ..\Library
-  $(EDK_SOURCE)\Foundation
-  $(EDK_SOURCE)\Foundation\Include
-  $(EDK_SOURCE)\Foundation\Include\IndustryStandard
-  $(EDK_SOURCE)\Foundation\Efi
-  $(EDK_SOURCE)\Foundation\Efi\Include
-  $(EDK_SOURCE)\Foundation\FrameWork
-  $(EDK_SOURCE)\Foundation\FrameWork\Include
-  $(EDK_SOURCE)\Foundation\Core\Dxe
-  $(DEST_DIR)\
+  ../Inc
+  ../Library
+  $(EDK_SOURCE)/Foundation
+  $(EDK_SOURCE)/Foundation/Include
+  $(EDK_SOURCE)/Foundation/Include/IndustryStandard
+  $(EDK_SOURCE)/Foundation/Efi
+  $(EDK_SOURCE)/Foundation/Efi/Include
+  $(EDK_SOURCE)/Foundation/FrameWork
+  $(EDK_SOURCE)/Foundation/FrameWork/Include
+  $(EDK_SOURCE)/Foundation/Core/Dxe
+  $(DEST_DIR./
 
 [libraries.common]  
   EfiShellLib
@@ -55,6 +55,11 @@ COMPONENT_TYPE       = APPLICATION
 
 [nmake.common]
   IMAGE_ENTRY_POINT=InitializeTelnetMgmt
+
+[nmake.IA32, nmake.EBC, nmake.X64, nmake.IPF]
   C_STD_FLAGS = $(C_STD_FLAGS) /DSTRING_ARRAY_NAME=$(BASE_NAME)Strings 
   C_STD_FLAGS = $(C_STD_FLAGS) /DSTRING_DEFINES_FILE=\"$(BASE_NAME)StrDefs.h\"
   C_STD_FLAGS = $(C_STD_FLAGS) /DEFI_BOOTSHELL
+
+[nmake.ARM, nmake.AARCH64]
+  C_STD_FLAGS = $(C_STD_FLAGS) -DEFI_BOOTSHELL
diff --git a/TelnetMgmt/TelnetServer.h b/TelnetMgmt/TelnetServer.h
index 5eca179..8e0610f 100644
--- a/TelnetMgmt/TelnetServer.h
+++ b/TelnetMgmt/TelnetServer.h
@@ -81,3 +81,4 @@ typedef struct _EFI_TELNET_SERVER_PROTOCOL {
 extern EFI_GUID gEfiTelnetServerGuid;
 
 #endif
+
diff --git a/attrib/attrib.c b/attrib/attrib.c
index 3599d6d..6d1e677 100644
--- a/attrib/attrib.c
+++ b/attrib/attrib.c
@@ -57,7 +57,7 @@ AttribFile (
 //
 // Global Variables
 //
-EFI_HII_HANDLE  HiiHandle;
+STATIC EFI_HII_HANDLE  HiiHandle;
 EFI_GUID        EfiAttribGuid = EFI_ATTRIB_GUID;
 SHELL_VAR_CHECK_ITEM    AttribCheckList[] = {
   {
@@ -124,7 +124,7 @@ SHELL_VAR_CHECK_ITEM    AttribCheckList[] = {
     NULL,
     0,
     0,
-    0
+    (SHELL_VAR_CHECK_FLAG_TYPE) 0
   }
 };
 
@@ -438,7 +438,7 @@ Returns:
     //
     Info = Arg->Info;
     if (Add || Remove) {
-      Info->Attribute = Info->Attribute & (~Remove) | Add;
+      Info->Attribute = (Info->Attribute & (~Remove)) | Add;
       Status = Arg->Handle->SetInfo (
                               Arg->Handle,
                               &gEfiFileInfoGuid,
diff --git a/attrib/attrib.h b/attrib/attrib.h
index 69ebd2f..c40c2df 100644
--- a/attrib/attrib.h
+++ b/attrib/attrib.h
@@ -29,4 +29,5 @@ Revision History
     0xcd691c77, 0xfc45, 0x4d7b, 0xb8, 0x92, 0x92, 0xa, 0x86, 0x2d, 0x67, 0xdc \
   }
 
-#endif
\ No newline at end of file
+#endif
+
diff --git a/attrib/attrib.inf b/attrib/attrib.inf
index 38cc094..a35f1a7 100644
--- a/attrib/attrib.inf
+++ b/attrib/attrib.inf
@@ -41,24 +41,24 @@ COMPONENT_TYPE       = APPLICATION
 
 [sources.common]
    AttribStrings.uni      
-   ..\ShCommonStrings.uni   
+   ../ShCommonStrings.uni   
    attrib.c             
    attrib.h             
     
 
 [includes.common]
   .
-  ..\Inc
-  ..\Library
-  $(EDK_SOURCE)\Foundation
-  $(EDK_SOURCE)\Foundation\Include
-  $(EDK_SOURCE)\Foundation\Include\IndustryStandard
-  $(EDK_SOURCE)\Foundation\Efi
-  $(EDK_SOURCE)\Foundation\Efi\Include
-  $(EDK_SOURCE)\Foundation\FrameWork
-  $(EDK_SOURCE)\Foundation\FrameWork\Include
-  $(EDK_SOURCE)\Foundation\Core\Dxe
-  $(DEST_DIR)\
+  ../Inc
+  ../Library
+  $(EDK_SOURCE)/Foundation
+  $(EDK_SOURCE)/Foundation/Include
+  $(EDK_SOURCE)/Foundation/Include/IndustryStandard
+  $(EDK_SOURCE)/Foundation/Efi
+  $(EDK_SOURCE)/Foundation/Efi/Include
+  $(EDK_SOURCE)/Foundation/FrameWork
+  $(EDK_SOURCE)/Foundation/FrameWork/Include
+  $(EDK_SOURCE)/Foundation/Core/Dxe
+  $(DEST_DIR./
 
 [libraries.common]  
   EfiShellLib
@@ -73,7 +73,11 @@ COMPONENT_TYPE       = APPLICATION
 
 [nmake.common]
   IMAGE_ENTRY_POINT=InitializeAttrib
+
+[nmake.IA32, nmake.EBC, nmake.X64, nmake.IPF]
   C_STD_FLAGS = $(C_STD_FLAGS) /DSTRING_ARRAY_NAME=$(BASE_NAME)Strings 
   C_STD_FLAGS = $(C_STD_FLAGS) /DSTRING_DEFINES_FILE=\"$(BASE_NAME)StrDefs.h\"
   C_STD_FLAGS = $(C_STD_FLAGS) /DEFI_BOOTSHELL
 
+[nmake.ARM, nmake.AARCH64]
+  C_STD_FLAGS = $(C_STD_FLAGS) -DEFI_BOOTSHELL
diff --git a/cls/cls.c b/cls/cls.c
index 572cc82..bd9826a 100644
--- a/cls/cls.c
+++ b/cls/cls.c
@@ -30,7 +30,7 @@ extern UINT8    STRING_ARRAY_NAME[];
 //
 #include STRING_DEFINES_FILE
 
-EFI_HII_HANDLE  HiiHandle;
+STATIC EFI_HII_HANDLE  HiiHandle;
 EFI_GUID        EfiClsGuid = EFI_CLS_GUID;
 SHELL_VAR_CHECK_ITEM    ClsCheckList[] = {
   {
@@ -49,7 +49,7 @@ SHELL_VAR_CHECK_ITEM    ClsCheckList[] = {
     NULL,
     0,
     0,
-    0
+    (SHELL_VAR_CHECK_FLAG_TYPE) 0
   }
 };
 
diff --git a/cls/cls.h b/cls/cls.h
index eab21eb..31361c7 100644
--- a/cls/cls.h
+++ b/cls/cls.h
@@ -36,3 +36,4 @@ Revision History
   }
 
 #endif
+
diff --git a/cls/cls.inf b/cls/cls.inf
index 1e5ef66..70e676a 100644
--- a/cls/cls.inf
+++ b/cls/cls.inf
@@ -40,24 +40,24 @@ COMPONENT_TYPE       = APPLICATION
 
 
 [sources.common]
-   ..\ShCommonStrings.uni   
+   ../ShCommonStrings.uni   
    ClsStrings.uni
    Cls.c
    Cls.h 
                                           
 [includes.common]
   .
-  ..\Inc
-  ..\Library
-  $(EDK_SOURCE)\Foundation
-  $(EDK_SOURCE)\Foundation\Include
-  $(EDK_SOURCE)\Foundation\Include\IndustryStandard
-  $(EDK_SOURCE)\Foundation\Efi
-  $(EDK_SOURCE)\Foundation\Efi\Include
-  $(EDK_SOURCE)\Foundation\FrameWork
-  $(EDK_SOURCE)\Foundation\FrameWork\Include
-  $(EDK_SOURCE)\Foundation\Core\Dxe
-  $(DEST_DIR)\
+  ../Inc
+  ../Library
+  $(EDK_SOURCE)/Foundation
+  $(EDK_SOURCE)/Foundation/Include
+  $(EDK_SOURCE)/Foundation/Include/IndustryStandard
+  $(EDK_SOURCE)/Foundation/Efi
+  $(EDK_SOURCE)/Foundation/Efi/Include
+  $(EDK_SOURCE)/Foundation/FrameWork
+  $(EDK_SOURCE)/Foundation/FrameWork/Include
+  $(EDK_SOURCE)/Foundation/Core/Dxe
+  $(DEST_DIR./
 
 [libraries.common]  
   EfiShellLib
@@ -72,7 +72,12 @@ COMPONENT_TYPE       = APPLICATION
 
 [nmake.common]
   IMAGE_ENTRY_POINT=InitializeCls
+
+[nmake.IA32, nmake.EBC, nmake.X64, nmake.IPF]
   C_STD_FLAGS = $(C_STD_FLAGS) /DSTRING_ARRAY_NAME=$(BASE_NAME)Strings 
   C_STD_FLAGS = $(C_STD_FLAGS) /DSTRING_DEFINES_FILE=\"$(BASE_NAME)StrDefs.h\"
   C_STD_FLAGS = $(C_STD_FLAGS) /DEFI_BOOTSHELL
 
+[nmake.ARM, nmake.AARCH64]
+  C_STD_FLAGS = $(C_STD_FLAGS) -DEFI_BOOTSHELL
+
diff --git a/comp/comp.c b/comp/comp.c
index 734bbe7..888f53f 100644
--- a/comp/comp.c
+++ b/comp/comp.c
@@ -50,7 +50,7 @@ SHELL_VAR_CHECK_ITEM    CompCheckList[] = {
     NULL,
     0,
     0,
-    0
+    (SHELL_VAR_CHECK_FLAG_TYPE) 0
   }
 };
 
diff --git a/comp/comp.h b/comp/comp.h
index 4dd667c..4d6c647 100644
--- a/comp/comp.h
+++ b/comp/comp.h
@@ -29,4 +29,4 @@ Revision History
     0x7761e2c2, 0x7297, 0x434d, 0xb6, 0x52, 0xa9, 0x76, 0x91, 0xb8, 0x66, 0xf3 \
   }
 
-#endif
\ No newline at end of file
+#endif
diff --git a/comp/comp.inf b/comp/comp.inf
index 7a525e4..86c464d 100644
--- a/comp/comp.inf
+++ b/comp/comp.inf
@@ -28,21 +28,21 @@ COMPONENT_TYPE       = APPLICATION
 CompStrings.uni
 comp.c
 comp.h
-..\ShCommonStrings.uni
+../ShCommonStrings.uni
   
 [includes.common]
   .
-  ..\Inc
-  ..\Library
-  $(EDK_SOURCE)\Foundation
-  $(EDK_SOURCE)\Foundation\Include
-  $(EDK_SOURCE)\Foundation\Include\IndustryStandard
-  $(EDK_SOURCE)\Foundation\Efi
-  $(EDK_SOURCE)\Foundation\Efi\Include
-  $(EDK_SOURCE)\Foundation\FrameWork
-  $(EDK_SOURCE)\Foundation\FrameWork\Include
-  $(EDK_SOURCE)\Foundation\Core\Dxe
-  $(DEST_DIR)\
+  ../Inc
+  ../Library
+  $(EDK_SOURCE)/Foundation
+  $(EDK_SOURCE)/Foundation/Include
+  $(EDK_SOURCE)/Foundation/Include/IndustryStandard
+  $(EDK_SOURCE)/Foundation/Efi
+  $(EDK_SOURCE)/Foundation/Efi/Include
+  $(EDK_SOURCE)/Foundation/FrameWork
+  $(EDK_SOURCE)/Foundation/FrameWork/Include
+  $(EDK_SOURCE)/Foundation/Core/Dxe
+  $(DEST_DIR./
 
 [libraries.common]  
   EfiShellLib
@@ -61,11 +61,16 @@ comp.h
 # we will specify some additional DEFINEs on the compile command line.
 #
 [nmake.common]
-  C_PROJ_FLAGS = $(C_PROJ_FLAGS) /Zm500
   IMAGE_ENTRY_POINT=InitializeComp
+
+[nmake.IA32, nmake.EBC, nmake.X64, nmake.IPF]
+  C_PROJ_FLAGS = $(C_PROJ_FLAGS) /Zm500
   C_STD_FLAGS = $(C_STD_FLAGS) /DSTRING_ARRAY_NAME=$(BASE_NAME)Strings 
   C_STD_FLAGS = $(C_STD_FLAGS) /DSTRING_DEFINES_FILE=\"$(BASE_NAME)StrDefs.h\"
   C_STD_FLAGS = $(C_STD_FLAGS) /DEFI_BOOTSHELL
 
+[nmake.ARM, nmake.AARCH64]
+  C_STD_FLAGS = $(C_STD_FLAGS) -DEFI_BOOTSHELL
+
 
  
\ No newline at end of file
diff --git a/cp/cp.c b/cp/cp.c
index 25ac3cf..9299af4 100644
--- a/cp/cp.c
+++ b/cp/cp.c
@@ -66,7 +66,7 @@ SHELL_VAR_CHECK_ITEM      CpCheckList[] = {
     NULL,
     0,
     0,
-    0
+    (SHELL_VAR_CHECK_FLAG_TYPE) 0
   }
 };
 
@@ -578,7 +578,7 @@ Returns:
     //
     if (SrcArg->Status == EFI_SUCCESS &&
         (SrcArg->Info->Attribute & EFI_FILE_DIRECTORY) &&
-        (DstArg->Status == EFI_SUCCESS && (DstArg->Info->Attribute & EFI_FILE_DIRECTORY) || DstMustDir && DstHandle)
+        (DstArg->Status == EFI_SUCCESS && ((DstArg->Info->Attribute & EFI_FILE_DIRECTORY) || (DstMustDir && DstHandle)))
         ) {
       if (StrCmp (SrcFilePath, DstFilePath) == 0) {
         PrintToken (STRING_TOKEN (STR_CP_CANNOT_COPY_ITSELF), HiiCpyHandle, L"cp/copy", SrcArg->FullName);
@@ -592,7 +592,7 @@ Returns:
     // we need to compose a full name of dir\file for the source
     //
     if (SrcArg->Status == EFI_SUCCESS &&
-      (DstArg->Status == EFI_SUCCESS && (DstArg->Info->Attribute & EFI_FILE_DIRECTORY) || DstMustDir && DstHandle)) {
+      (DstArg->Status == EFI_SUCCESS && ((DstArg->Info->Attribute & EFI_FILE_DIRECTORY) || (DstMustDir && DstHandle)))) {
       if (DstFullName) {
         FreePool (DstFullName);
       }
@@ -869,7 +869,6 @@ Returns:
   EFI_STATUS                      Status;
   EFI_FILE_INFO                   *SrcInfo;
   EFI_FILE_INFO                   *DstInfo;
-  EFI_SIMPLE_FILE_SYSTEM_PROTOCOL *DstVol;
   EFI_FILE_SYSTEM_INFO            *DstFsInfo;
   CHAR16                          InputString[10];
   UINTN                           BufSize;
@@ -894,7 +893,6 @@ Returns:
   SrcInfo           = NULL;
   DstInfo           = NULL;
   FileInfo          = NULL;
-  DstVol            = NULL;
   DstFsInfo         = NULL;
   InputString[0]    = 0;
   BufSize           = 0;
@@ -1789,7 +1787,7 @@ Returns:
     //
     if (SrcArg->Status == EFI_SUCCESS &&
         !(SrcArg->Info->Attribute & EFI_FILE_DIRECTORY) &&
-        (DstArg->Status == EFI_SUCCESS && (DstArg->Info->Attribute & EFI_FILE_DIRECTORY) || DstDir && DstHandle)
+        (DstArg->Status == EFI_SUCCESS && ((DstArg->Info->Attribute & EFI_FILE_DIRECTORY) || (DstDir && DstHandle)))
         ) {
       if (DstFullName) {
         FreePool (DstFullName);
diff --git a/cp/cp.h b/cp/cp.h
index 338cdaa..89d22dd 100644
--- a/cp/cp.h
+++ b/cp/cp.h
@@ -67,4 +67,5 @@ CPMainProcOld (
   IN EFI_SYSTEM_TABLE     *SystemTable
   );
 
-#endif
\ No newline at end of file
+#endif
+
diff --git a/cp/cp.inf b/cp/cp.inf
index 714c7bb..160434c 100644
--- a/cp/cp.inf
+++ b/cp/cp.inf
@@ -41,23 +41,23 @@ COMPONENT_TYPE       = APPLICATION
 
 [sources.common]
   CpStrings.uni
-  ..\ShCommonStrings.uni
+  ../ShCommonStrings.uni
   cp.h
   cp.c
   
 [includes.common]
   .
-  ..\Inc
-  ..\Library
-  $(EDK_SOURCE)\Foundation
-  $(EDK_SOURCE)\Foundation\Include
-  $(EDK_SOURCE)\Foundation\Include\IndustryStandard
-  $(EDK_SOURCE)\Foundation\Efi
-  $(EDK_SOURCE)\Foundation\Efi\Include
-  $(EDK_SOURCE)\Foundation\FrameWork
-  $(EDK_SOURCE)\Foundation\FrameWork\Include
-  $(EDK_SOURCE)\Foundation\Core\Dxe
-  $(DEST_DIR)\
+  ../Inc
+  ../Library
+  $(EDK_SOURCE)/Foundation
+  $(EDK_SOURCE)/Foundation/Include
+  $(EDK_SOURCE)/Foundation/Include/IndustryStandard
+  $(EDK_SOURCE)/Foundation/Efi
+  $(EDK_SOURCE)/Foundation/Efi/Include
+  $(EDK_SOURCE)/Foundation/FrameWork
+  $(EDK_SOURCE)/Foundation/FrameWork/Include
+  $(EDK_SOURCE)/Foundation/Core/Dxe
+  $(DEST_DIR./
 
 [libraries.common]  
   EfiShellLib
@@ -72,7 +72,12 @@ COMPONENT_TYPE       = APPLICATION
 
 [nmake.common]
   IMAGE_ENTRY_POINT=InitializeCP
+
+[nmake.IA32, nmake.EBC, nmake.X64, nmake.IPF]
   C_STD_FLAGS = $(C_STD_FLAGS) /DSTRING_ARRAY_NAME=$(BASE_NAME)Strings 
   C_STD_FLAGS = $(C_STD_FLAGS) /DSTRING_DEFINES_FILE=\"$(BASE_NAME)StrDefs.h\"
   C_STD_FLAGS = $(C_STD_FLAGS) /DEFI_BOOTSHELL
 
+[nmake.ARM, nmake.AARCH64]
+  C_STD_FLAGS = $(C_STD_FLAGS) -DEFI_BOOTSHELL
+
diff --git a/date/date.c b/date/date.c
index fb2f765..0416abe 100644
--- a/date/date.c
+++ b/date/date.c
@@ -53,8 +53,8 @@ STATIC
 BOOLEAN
 GetNumber (
   IN      CHAR16  *Str,
-  IN OUT  INTN    *Position,
-  IN OUT  INTN    *Number,
+  IN OUT  UINTN   *Position,
+  IN OUT  UINTN   *Number,
   IN BOOLEAN      EndNum
   );
 
@@ -92,7 +92,7 @@ SHELL_VAR_CHECK_ITEM    DateCheckList[] = {
     NULL,
     0,
     0,
-    0
+    (SHELL_VAR_CHECK_FLAG_TYPE) 0
   }
 };
 
@@ -330,8 +330,8 @@ STATIC
 BOOLEAN
 GetNumber (
   IN      CHAR16    *Str,
-  IN OUT  INTN      *Position,
-  IN OUT  INTN      *Number,
+  IN OUT  UINTN     *Position,
+  IN OUT  UINTN     *Number,
   IN BOOLEAN        EndNum
   )
 {
diff --git a/date/date.h b/date/date.h
index c95ac4d..d327c33 100644
--- a/date/date.h
+++ b/date/date.h
@@ -32,3 +32,4 @@ Revision History
   }
 
 #endif
+
diff --git a/date/date.inf b/date/date.inf
index 2c40f72..affbb73 100644
--- a/date/date.inf
+++ b/date/date.inf
@@ -40,24 +40,24 @@ COMPONENT_TYPE       = APPLICATION
 
 
 [sources.common]
-   ..\ShCommonStrings.uni   
+   ../ShCommonStrings.uni   
    DateStrings.uni
    Date.c
    Date.h 
                                           
 [includes.common]
   .
-  ..\Inc
-  ..\Library
-  $(EDK_SOURCE)\Foundation
-  $(EDK_SOURCE)\Foundation\Include
-  $(EDK_SOURCE)\Foundation\Include\IndustryStandard
-  $(EDK_SOURCE)\Foundation\Efi
-  $(EDK_SOURCE)\Foundation\Efi\Include
-  $(EDK_SOURCE)\Foundation\FrameWork
-  $(EDK_SOURCE)\Foundation\FrameWork\Include
-  $(EDK_SOURCE)\Foundation\Core\Dxe
-  $(DEST_DIR)\
+  ../Inc
+  ../Library
+  $(EDK_SOURCE)/Foundation
+  $(EDK_SOURCE)/Foundation/Include
+  $(EDK_SOURCE)/Foundation/Include/IndustryStandard
+  $(EDK_SOURCE)/Foundation/Efi
+  $(EDK_SOURCE)/Foundation/Efi/Include
+  $(EDK_SOURCE)/Foundation/FrameWork
+  $(EDK_SOURCE)/Foundation/FrameWork/Include
+  $(EDK_SOURCE)/Foundation/Core/Dxe
+  $(DEST_DIR./
 
 [libraries.common]  
   EfiShellLib
@@ -71,7 +71,12 @@ COMPONENT_TYPE       = APPLICATION
 
 [nmake.common]
   IMAGE_ENTRY_POINT=InitializeDate
+
+[nmake.IA32, nmake.EBC, nmake.X64, nmake.IPF]
   C_STD_FLAGS = $(C_STD_FLAGS) /DSTRING_ARRAY_NAME=$(BASE_NAME)Strings 
   C_STD_FLAGS = $(C_STD_FLAGS) /DSTRING_DEFINES_FILE=\"$(BASE_NAME)StrDefs.h\"
   C_STD_FLAGS = $(C_STD_FLAGS) /DEFI_BOOTSHELL
 
+[nmake.ARM, nmake.AARCH64]
+  C_STD_FLAGS = $(C_STD_FLAGS) -DEFI_BOOTSHELL
+
diff --git a/dblk/dblk.c b/dblk/dblk.c
index 3019627..21c841e 100644
--- a/dblk/dblk.c
+++ b/dblk/dblk.c
@@ -52,7 +52,7 @@ SHELL_VAR_CHECK_ITEM      DblkCheckList[] = {
     NULL,
     0,
     0,
-    0
+    (SHELL_VAR_CHECK_FLAG_TYPE) 0
   }
 };
 
diff --git a/dblk/dblk.h b/dblk/dblk.h
index 0341aeb..d7ec371 100644
--- a/dblk/dblk.h
+++ b/dblk/dblk.h
@@ -168,3 +168,4 @@ DblkStructsPrint (
 extern EFI_HII_HANDLE HiiDblkHandle;
 
 #endif
+
diff --git a/dblk/dblk.inf b/dblk/dblk.inf
index f15392c..3c5dd45 100644
--- a/dblk/dblk.inf
+++ b/dblk/dblk.inf
@@ -26,23 +26,23 @@ COMPONENT_TYPE       = APPLICATION
 
 [sources.common]
   DblkStrings.uni
-  ..\ShCommonStrings.uni
+  ../ShCommonStrings.uni
   dblk.c
   efidump.c
 
 [includes.common]
   .
-  ..\Inc
-  ..\Library
-  $(EDK_SOURCE)\Foundation
-  $(EDK_SOURCE)\Foundation\Include
-  $(EDK_SOURCE)\Foundation\Include\IndustryStandard
-  $(EDK_SOURCE)\Foundation\Efi
-  $(EDK_SOURCE)\Foundation\Efi\Include
-  $(EDK_SOURCE)\Foundation\FrameWork
-  $(EDK_SOURCE)\Foundation\FrameWork\Include
-  $(EDK_SOURCE)\Foundation\Core\Dxe
-  $(DEST_DIR)\
+  ../Inc
+  ../Library
+  $(EDK_SOURCE)/Foundation
+  $(EDK_SOURCE)/Foundation/Include
+  $(EDK_SOURCE)/Foundation/Include/IndustryStandard
+  $(EDK_SOURCE)/Foundation/Efi
+  $(EDK_SOURCE)/Foundation/Efi/Include
+  $(EDK_SOURCE)/Foundation/FrameWork
+  $(EDK_SOURCE)/Foundation/FrameWork/Include
+  $(EDK_SOURCE)/Foundation/Core/Dxe
+  $(DEST_DIR./
 
 [libraries.common]  
   EfiShellLib
@@ -61,11 +61,16 @@ COMPONENT_TYPE       = APPLICATION
 # we will specify some additional DEFINEs on the compile command line.
 #
 [nmake.common]
-  C_PROJ_FLAGS = $(C_PROJ_FLAGS) /Zm500
   IMAGE_ENTRY_POINT=DumpBlockDev
+
+[nmake.IA32, nmake.EBC, nmake.X64, nmake.IPF]
+  C_PROJ_FLAGS = $(C_PROJ_FLAGS) /Zm500
   C_STD_FLAGS = $(C_STD_FLAGS) /DSTRING_ARRAY_NAME=$(BASE_NAME)Strings 
   C_STD_FLAGS = $(C_STD_FLAGS) /DSTRING_DEFINES_FILE=\"$(BASE_NAME)StrDefs.h\"
   C_STD_FLAGS = $(C_STD_FLAGS) /DEFI_BOOTSHELL
 
+[nmake.ARM, nmake.AARCH64]
+  C_STD_FLAGS = $(C_STD_FLAGS) -DEFI_BOOTSHELL
+
 
  
\ No newline at end of file
diff --git a/dblk/efidump.c b/dblk/efidump.c
index 7fc0337..c18b826 100644
--- a/dblk/efidump.c
+++ b/dblk/efidump.c
@@ -24,7 +24,7 @@ Revision History
 --*/
 
 #include "dblk.h"
-#include "Efipart.h"
+#include "EfiPart.h"
 #include "EfiShellLib.h"
 
 #include STRING_DEFINES_FILE
@@ -320,13 +320,11 @@ DblkDumpSystemTable (
   VOID                      *AcpiTable;
   VOID                      *Acpi20Table;
   VOID                      *SMBIOSTable;
-  VOID                      *SalSystemTable;
   VOID                      *MpsTable;
 
   AcpiTable       = NULL;
   Acpi20Table     = NULL;
   SMBIOSTable     = NULL;
-  SalSystemTable  = NULL;
   MpsTable        = NULL;
 
   PrintToken (
@@ -352,10 +350,12 @@ DblkDumpSystemTable (
     PrintToken (STRING_TOKEN (STR_DEBUG_STD_ERROR_ON), HiiDblkHandle, LibDevicePathToStr (DevicePath));
   }
 
-  PrintToken (STRING_TOKEN (STR_DEBUG_RUNTIME_SERVICES), HiiDblkHandle, (UINT64) Tbl.Sys->RuntimeServices);
-  PrintToken (STRING_TOKEN (STR_DEBUG_BOOT_SERVICES), HiiDblkHandle, (UINT64) Tbl.Sys->BootServices);
+  PrintToken (STRING_TOKEN (STR_DEBUG_RUNTIME_SERVICES), HiiDblkHandle, (UINT64)(UINTN) Tbl.Sys->RuntimeServices);
+  PrintToken (STRING_TOKEN (STR_DEBUG_BOOT_SERVICES), HiiDblkHandle, (UINT64)(UINTN) Tbl.Sys->BootServices);
 
   EFI64_CODE (
+    VOID                      *SalSystemTable;
+
     Status = LibGetSystemConfigurationTable(&gEfiSalSystemTableGuid, &SalSystemTable);
     if (!EFI_ERROR(Status)) {
       PrintToken (STRING_TOKEN(STR_DEBUG_SAL_SYSTEM_TABLE), HiiDblkHandle, (UINT64)SalSystemTable);
@@ -364,22 +364,22 @@ DblkDumpSystemTable (
 
   Status = LibGetSystemConfigurationTable (&gEfiAcpiTableGuid, &AcpiTable);
   if (!EFI_ERROR (Status)) {
-    PrintToken (STRING_TOKEN (STR_DEBUG_ACPI_TABLE), HiiDblkHandle, (UINT64) AcpiTable);
+    PrintToken (STRING_TOKEN (STR_DEBUG_ACPI_TABLE), HiiDblkHandle, (UINT64)(UINTN) AcpiTable);
   }
 
   Status = LibGetSystemConfigurationTable (&gEfiAcpi20TableGuid, &Acpi20Table);
   if (!EFI_ERROR (Status)) {
-    PrintToken (STRING_TOKEN (STR_DEBUG_APCI_2_TABLE), HiiDblkHandle, (UINT64) Acpi20Table);
+    PrintToken (STRING_TOKEN (STR_DEBUG_APCI_2_TABLE), HiiDblkHandle, (UINT64)(UINTN) Acpi20Table);
   }
 
   Status = LibGetSystemConfigurationTable (&gEfiMpsTableGuid, &MpsTable);
   if (!EFI_ERROR (Status)) {
-    PrintToken (STRING_TOKEN (STR_DEBUG_MPS_TABLE), HiiDblkHandle, (UINT64) MpsTable);
+    PrintToken (STRING_TOKEN (STR_DEBUG_MPS_TABLE), HiiDblkHandle, (UINT64)(UINTN) MpsTable);
   }
 
   Status = LibGetSystemConfigurationTable (&gEfiSmbiosTableGuid, &SMBIOSTable);
   if (!EFI_ERROR (Status)) {
-    PrintToken (STRING_TOKEN (STR_DEBUG_SMBIOS_TABLE), HiiDblkHandle, (UINT64) SMBIOSTable);
+    PrintToken (STRING_TOKEN (STR_DEBUG_SMBIOS_TABLE), HiiDblkHandle, (UINT64)(UINTN) SMBIOSTable);
   }
 }
 
diff --git a/devices/devices.c b/devices/devices.c
index bcc8beb..1934ef5 100644
--- a/devices/devices.c
+++ b/devices/devices.c
@@ -36,7 +36,7 @@ extern UINT8  STRING_ARRAY_NAME[];
 //
 // Global Variables
 //
-EFI_HII_HANDLE  HiiHandle;
+STATIC EFI_HII_HANDLE  HiiHandle;
 EFI_GUID        EfiDevicesGuid = EFI_DEVICES_GUID;
 SHELL_VAR_CHECK_ITEM    DevicesCheckList[] = {
   {
@@ -61,7 +61,7 @@ SHELL_VAR_CHECK_ITEM    DevicesCheckList[] = {
     NULL,
     0,
     0,
-    0
+    (SHELL_VAR_CHECK_FLAG_TYPE) 0
   }
 };
 
diff --git a/devices/devices.h b/devices/devices.h
index 19e0983..6aff8bf 100644
--- a/devices/devices.h
+++ b/devices/devices.h
@@ -32,3 +32,4 @@ Revision History
     0x6fabed98, 0x2a7, 0x46a4, 0x84, 0xd1, 0x76, 0xcd, 0x5c, 0x49, 0x78, 0x74 \
   }
 #endif
+
diff --git a/devices/devices.inf b/devices/devices.inf
index c380f7d..f9356da 100644
--- a/devices/devices.inf
+++ b/devices/devices.inf
@@ -41,23 +41,23 @@ COMPONENT_TYPE       = APPLICATION
 
 [sources.common]
   DevicesStrings.uni
-  ..\ShCommonStrings.uni
+  ../ShCommonStrings.uni
   devices.c
   devices.h
     
 [includes.common]
   .
-  ..\Inc
-  ..\Library
-  $(EDK_SOURCE)\Foundation
-  $(EDK_SOURCE)\Foundation\Include
-  $(EDK_SOURCE)\Foundation\Include\IndustryStandard
-  $(EDK_SOURCE)\Foundation\Efi
-  $(EDK_SOURCE)\Foundation\Efi\Include
-  $(EDK_SOURCE)\Foundation\FrameWork
-  $(EDK_SOURCE)\Foundation\FrameWork\Include
-  $(EDK_SOURCE)\Foundation\Core\Dxe
-  $(DEST_DIR)\
+  ../Inc
+  ../Library
+  $(EDK_SOURCE)/Foundation
+  $(EDK_SOURCE)/Foundation/Include
+  $(EDK_SOURCE)/Foundation/Include/IndustryStandard
+  $(EDK_SOURCE)/Foundation/Efi
+  $(EDK_SOURCE)/Foundation/Efi/Include
+  $(EDK_SOURCE)/Foundation/FrameWork
+  $(EDK_SOURCE)/Foundation/FrameWork/Include
+  $(EDK_SOURCE)/Foundation/Core/Dxe
+  $(DEST_DIR./
 
 [libraries.common]  
   EfiShellLib
@@ -72,7 +72,11 @@ COMPONENT_TYPE       = APPLICATION
 
 [nmake.common]
   IMAGE_ENTRY_POINT=DevicesMain
+
+[nmake.IA32, nmake.EBC, nmake.X64, nmake.IPF]
   C_STD_FLAGS = $(C_STD_FLAGS) /DSTRING_ARRAY_NAME=$(BASE_NAME)Strings 
   C_STD_FLAGS = $(C_STD_FLAGS) /DSTRING_DEFINES_FILE=\"$(BASE_NAME)StrDefs.h\"
   C_STD_FLAGS = $(C_STD_FLAGS) /DEFI_BOOTSHELL
 
+[nmake.ARM, nmake.AARCH64]
+  C_STD_FLAGS = $(C_STD_FLAGS) -DEFI_BOOTSHELL
diff --git a/dmem/MemCommonPart.c b/dmem/MemCommonPart.c
index 377da17..c4807a3 100644
--- a/dmem/MemCommonPart.c
+++ b/dmem/MemCommonPart.c
@@ -58,7 +58,7 @@ SHELL_VAR_CHECK_ITEM    DmemCheckList[] = {
     NULL,
     0,
     0,
-    0
+    (SHELL_VAR_CHECK_FLAG_TYPE) 0
   }
 };
 
@@ -148,7 +148,7 @@ Return:
     return EFI_SUCCESS;
   }
 
-  Address = (AddressStr) ? Xtoi (AddressStr) : (UINT64) SystemTable;
+  Address = (AddressStr) ? Xtoi (AddressStr) : (UINT64)(UINTN) SystemTable;
   Size    = (SizeStr) ? Xtoi (SizeStr) : 512;
 
   //
@@ -156,7 +156,7 @@ Return:
   //
   PrintToken (STRING_TOKEN (STR_DMEM_MEMORY_ADDR), HiiDmemHandle, 2 * sizeof (UINTN), Address, Size);
   if (MMIo) {
-    Status = BS->LocateProtocol (&gEfiPciRootBridgeIoProtocolGuid, NULL, &PciRootBridgeIo);
+    Status = BS->LocateProtocol (&gEfiPciRootBridgeIoProtocolGuid, NULL, (VOID**)&PciRootBridgeIo);
     if (EFI_ERROR (Status)) {
       PrintToken (STRING_TOKEN (STR_SHELLENV_GNC_LOC_PROT_ERR_EX), HiiDmemHandle, L"dmem", L"PciRootBridgeIo");
       return Status;
@@ -171,7 +171,7 @@ Return:
       return Status;
     }
 
-    PciRootBridgeIo->Mem.Read (PciRootBridgeIo, EfiPciIoWidthUint8, Address, Size, Buffer);
+    PciRootBridgeIo->Mem.Read (PciRootBridgeIo, EfiPciWidthUint8, Address, Size, Buffer);
   } else {
     Buffer = (UINT8 *) (UINTN) Address;
   }
@@ -233,7 +233,7 @@ Return:
   //
   MMIo                  = FALSE;
   AddressStr            = SizeStr = NULL;
-  Address               = (UINT64) SystemTable;
+  Address               = (UINT64)(UINTN) SystemTable;
   Size                  = 512;
   RetCode               = LibCheckVariables (SI, DmemCheckList, &ChkPck, &Useful);
   if (VarCheckOk != RetCode) {
@@ -316,7 +316,7 @@ Return:
   //
   PrintToken (STRING_TOKEN (STR_DMEM_NEW_MEMORY_ADDR), HiiDmemHandle, 2 * sizeof (UINTN), Address, Size);
   if (MMIo) {
-    Status = BS->LocateProtocol (&gEfiPciRootBridgeIoProtocolGuid, NULL, &PciRootBridgeIo);
+    Status = BS->LocateProtocol (&gEfiPciRootBridgeIoProtocolGuid, NULL, (VOID**)&PciRootBridgeIo);
     if (EFI_ERROR (Status)) {
       PrintToken (STRING_TOKEN (STR_SHELLENV_GNC_LOC_PROT_ERR_EX), HiiDmemHandle, L"dmem", L"PciRootBridgeIo");
       return Status;
@@ -331,7 +331,7 @@ Return:
       return Status;
     }
 
-    PciRootBridgeIo->Mem.Read (PciRootBridgeIo, EfiPciIoWidthUint8, Address, Size, Buffer);
+    PciRootBridgeIo->Mem.Read (PciRootBridgeIo, EfiPciWidthUint8, Address, Size, Buffer);
   } else {
     Buffer = (UINT8 *) (UINTN) Address;
   }
diff --git a/dmem/MemCommonPart.h b/dmem/MemCommonPart.h
index f57e32a..f094fbb 100644
--- a/dmem/MemCommonPart.h
+++ b/dmem/MemCommonPart.h
@@ -61,4 +61,4 @@ EFIStructsPrint (
   IN  EFI_BLOCK_IO_PROTOCOL   *BlkIo
   );
 
-#endif
\ No newline at end of file
+#endif
diff --git a/dmem/debug.h b/dmem/debug.h
index 50df0ed..8d5cd4e 100644
--- a/dmem/debug.h
+++ b/dmem/debug.h
@@ -156,3 +156,4 @@ EFIStructsPrint (
 extern EFI_HII_HANDLE HiiDmemHandle;
 
 #endif
+
diff --git a/dmem/dmem.inf b/dmem/dmem.inf
index ca0dcaf..acdf279 100644
--- a/dmem/dmem.inf
+++ b/dmem/dmem.inf
@@ -25,7 +25,7 @@ FILE_GUID            = 644E259E-FF88-4d31-8092-B99D8777F1C4
 COMPONENT_TYPE       = APPLICATION
 
 [sources.common]
-  ..\ShCommonStrings.uni
+  ../ShCommonStrings.uni
   MemStrings.uni
   DebugStrings.uni  
   mem.c
@@ -34,17 +34,17 @@ COMPONENT_TYPE       = APPLICATION
   
 [includes.common]
   .
-  ..\Inc
-  ..\Library
-  $(EDK_SOURCE)\Foundation
-  $(EDK_SOURCE)\Foundation\Include
-  $(EDK_SOURCE)\Foundation\Include\IndustryStandard
-  $(EDK_SOURCE)\Foundation\Efi
-  $(EDK_SOURCE)\Foundation\Efi\Include
-  $(EDK_SOURCE)\Foundation\FrameWork
-  $(EDK_SOURCE)\Foundation\FrameWork\Include
-  $(EDK_SOURCE)\Foundation\Core\Dxe
-  $(DEST_DIR)\
+  ../Inc
+  ../Library
+  $(EDK_SOURCE)/Foundation
+  $(EDK_SOURCE)/Foundation/Include
+  $(EDK_SOURCE)/Foundation/Include/IndustryStandard
+  $(EDK_SOURCE)/Foundation/Efi
+  $(EDK_SOURCE)/Foundation/Efi/Include
+  $(EDK_SOURCE)/Foundation/FrameWork
+  $(EDK_SOURCE)/Foundation/FrameWork/Include
+  $(EDK_SOURCE)/Foundation/Core/Dxe
+  $(DEST_DIR./
 
 [libraries.common]  
   EfiShellLib
@@ -64,9 +64,13 @@ COMPONENT_TYPE       = APPLICATION
 # we will specify some additional DEFINEs on the compile command line.
 #
 [nmake.common]
-  C_PROJ_FLAGS = $(C_PROJ_FLAGS) /Zm500
   IMAGE_ENTRY_POINT=DumpMem
+
+[nmake.IA32, nmake.EBC, nmake.X64, nmake.IPF]
+  C_PROJ_FLAGS = $(C_PROJ_FLAGS) /Zm500
   C_STD_FLAGS = $(C_STD_FLAGS) /DSTRING_ARRAY_NAME=$(BASE_NAME)Strings 
   C_STD_FLAGS = $(C_STD_FLAGS) /DSTRING_DEFINES_FILE=\"$(BASE_NAME)StrDefs.h\"
   C_STD_FLAGS = $(C_STD_FLAGS) /DEFI_BOOTSHELL
 
+[nmake.ARM, nmake.AARCH64]
+  C_STD_FLAGS = $(C_STD_FLAGS) -DEFI_BOOTSHELL
diff --git a/dmem/efidump.c b/dmem/efidump.c
index 051f6a0..11526f2 100644
--- a/dmem/efidump.c
+++ b/dmem/efidump.c
@@ -24,7 +24,7 @@ Revision History
 --*/
 
 #include "debug.h"
-#include "Efipart.h"
+#include "EfiPart.h"
 #include "EfiShellLib.h"
 
 #include STRING_DEFINES_FILE
@@ -320,13 +320,11 @@ DumpSystemTable (
   VOID                      *AcpiTable;
   VOID                      *Acpi20Table;
   VOID                      *SMBIOSTable;
-  VOID                      *SalSystemTable;
   VOID                      *MpsTable;
 
   AcpiTable       = NULL;
   Acpi20Table     = NULL;
   SMBIOSTable     = NULL;
-  SalSystemTable  = NULL;
   MpsTable        = NULL;
 
   PrintToken (
@@ -352,11 +350,13 @@ DumpSystemTable (
     PrintToken (STRING_TOKEN (STR_DEBUG_STD_ERROR_ON), HiiDmemHandle, LibDevicePathToStr (DevicePath));
   }
 
-  PrintToken (STRING_TOKEN (STR_DEBUG_RUNTIME_SERVICES), HiiDmemHandle, (UINT64) Tbl.Sys->RuntimeServices);
-  PrintToken (STRING_TOKEN (STR_DEBUG_BOOT_SERVICES), HiiDmemHandle, (UINT64) Tbl.Sys->BootServices);
+  PrintToken (STRING_TOKEN (STR_DEBUG_RUNTIME_SERVICES), HiiDmemHandle, (UINT64)(UINTN) Tbl.Sys->RuntimeServices);
+  PrintToken (STRING_TOKEN (STR_DEBUG_BOOT_SERVICES), HiiDmemHandle, (UINT64)(UINTN) Tbl.Sys->BootServices);
 
   EFI64_CODE (
-    Status = LibGetSystemConfigurationTable(&gEfiSalSystemTableGuid, &SalSystemTable);
+     VOID                      *SalSystemTable;
+
+     Status = LibGetSystemConfigurationTable(&gEfiSalSystemTableGuid, &SalSystemTable);
     if (!EFI_ERROR(Status)) {
       PrintToken (STRING_TOKEN(STR_DEBUG_SAL_SYSTEM_TABLE), HiiDmemHandle, (UINT64)SalSystemTable);
     }
@@ -364,22 +364,22 @@ DumpSystemTable (
   
   Status = LibGetSystemConfigurationTable (&gEfiAcpiTableGuid, &AcpiTable);
   if (!EFI_ERROR (Status)) {
-    PrintToken (STRING_TOKEN (STR_DEBUG_ACPI_TABLE), HiiDmemHandle, (UINT64) AcpiTable);
+    PrintToken (STRING_TOKEN (STR_DEBUG_ACPI_TABLE), HiiDmemHandle, (UINT64)(UINTN) AcpiTable);
   }
 
   Status = LibGetSystemConfigurationTable (&gEfiAcpi20TableGuid, &Acpi20Table);
   if (!EFI_ERROR (Status)) {
-    PrintToken (STRING_TOKEN (STR_DEBUG_APCI_2_TABLE), HiiDmemHandle, (UINT64) Acpi20Table);
+    PrintToken (STRING_TOKEN (STR_DEBUG_APCI_2_TABLE), HiiDmemHandle, (UINT64)(UINTN) Acpi20Table);
   }
 
   Status = LibGetSystemConfigurationTable (&gEfiMpsTableGuid, &MpsTable);
   if (!EFI_ERROR (Status)) {
-    PrintToken (STRING_TOKEN (STR_DEBUG_MPS_TABLE), HiiDmemHandle, (UINT64) MpsTable);
+    PrintToken (STRING_TOKEN (STR_DEBUG_MPS_TABLE), HiiDmemHandle, (UINT64)(UINTN) MpsTable);
   }
 
   Status = LibGetSystemConfigurationTable (&gEfiSmbiosTableGuid, &SMBIOSTable);
   if (!EFI_ERROR (Status)) {
-    PrintToken (STRING_TOKEN (STR_DEBUG_SMBIOS_TABLE), HiiDmemHandle, (UINT64) SMBIOSTable);
+    PrintToken (STRING_TOKEN (STR_DEBUG_SMBIOS_TABLE), HiiDmemHandle, (UINT64)(UINTN) SMBIOSTable);
   }
 }
 
diff --git a/dmpstore/dmpstore.c b/dmpstore/dmpstore.c
index 747762e..3473d19 100644
--- a/dmpstore/dmpstore.c
+++ b/dmpstore/dmpstore.c
@@ -95,7 +95,7 @@ SetFileVariable (
 //
 // Global Variables
 //
-EFI_HII_HANDLE  HiiHandle;
+STATIC EFI_HII_HANDLE  HiiHandle;
 EFI_GUID        EfiDmpstoreGuid = EFI_DMPSTORE_GUID;
 SHELL_VAR_CHECK_ITEM    DmpstoreCheckList[] = {
   {
@@ -132,7 +132,7 @@ SHELL_VAR_CHECK_ITEM    DmpstoreCheckList[] = {
     NULL,
     0,
     0,
-    0
+    (SHELL_VAR_CHECK_FLAG_TYPE) 0
   }
 };
 
diff --git a/dmpstore/dmpstore.h b/dmpstore/dmpstore.h
index 32d72ec..278fb59 100644
--- a/dmpstore/dmpstore.h
+++ b/dmpstore/dmpstore.h
@@ -40,3 +40,4 @@ typedef struct {
 } DMPSTORE_VARIABLE;
 
 #endif
+
diff --git a/dmpstore/dmpstore.inf b/dmpstore/dmpstore.inf
index f380759..4a5563d 100644
--- a/dmpstore/dmpstore.inf
+++ b/dmpstore/dmpstore.inf
@@ -25,24 +25,24 @@ FILE_GUID            = 7185D15A-A0AE-4dd1-A58F-C6EAD28EC9A8
 COMPONENT_TYPE       = APPLICATION
 
 [sources.common]
-  ..\ShCommonStrings.uni
+  ../ShCommonStrings.uni
   DmpstoreStrings.uni
   dmpstore.c
   dmpstore.h
   
 [includes.common]
   .
-  ..\Inc
-  ..\Library
-  $(EDK_SOURCE)\Foundation
-  $(EDK_SOURCE)\Foundation\Include
-  $(EDK_SOURCE)\Foundation\Include\IndustryStandard
-  $(EDK_SOURCE)\Foundation\Efi
-  $(EDK_SOURCE)\Foundation\Efi\Include
-  $(EDK_SOURCE)\Foundation\FrameWork
-  $(EDK_SOURCE)\Foundation\FrameWork\Include
-  $(EDK_SOURCE)\Foundation\Core\Dxe
-  $(DEST_DIR)\
+  ../Inc
+  ../Library
+  $(EDK_SOURCE)/Foundation
+  $(EDK_SOURCE)/Foundation/Include
+  $(EDK_SOURCE)/Foundation/Include/IndustryStandard
+  $(EDK_SOURCE)/Foundation/Efi
+  $(EDK_SOURCE)/Foundation/Efi/Include
+  $(EDK_SOURCE)/Foundation/FrameWork
+  $(EDK_SOURCE)/Foundation/FrameWork/Include
+  $(EDK_SOURCE)/Foundation/Core/Dxe
+  $(DEST_DIR./
 
 [libraries.common]  
   EfiShellLib
@@ -61,11 +61,14 @@ COMPONENT_TYPE       = APPLICATION
 # we will specify some additional DEFINEs on the compile command line.
 #
 [nmake.common]
-  C_PROJ_FLAGS = $(C_PROJ_FLAGS) /Zm500
   IMAGE_ENTRY_POINT=InitializeDumpStore
+
+[nmake.IA32, nmake.EBC, nmake.X64, nmake.IPF]
+  C_PROJ_FLAGS = $(C_PROJ_FLAGS) /Zm500
   C_STD_FLAGS = $(C_STD_FLAGS) /DSTRING_ARRAY_NAME=$(BASE_NAME)Strings 
   C_STD_FLAGS = $(C_STD_FLAGS) /DSTRING_DEFINES_FILE=\"$(BASE_NAME)StrDefs.h\"
   C_STD_FLAGS = $(C_STD_FLAGS) /DEFI_BOOTSHELL
 
-
+[nmake.ARM, nmake.AARCH64]
+  C_STD_FLAGS = $(C_STD_FLAGS) -DEFI_BOOTSHELL
  
\ No newline at end of file
diff --git a/drivers/drivers.c b/drivers/drivers.c
index 0c6cfc0..84271b9 100644
--- a/drivers/drivers.c
+++ b/drivers/drivers.c
@@ -43,7 +43,7 @@ extern UINT8  STRING_ARRAY_NAME[];
 //
 // Global Variables
 //
-EFI_HII_HANDLE  HiiHandle;
+STATIC EFI_HII_HANDLE  HiiHandle;
 EFI_GUID        EfiDriversGuid = EFI_DRIVERS_GUID;
 SHELL_VAR_CHECK_ITEM    DriversCheckList[] = {
   {
@@ -68,7 +68,7 @@ SHELL_VAR_CHECK_ITEM    DriversCheckList[] = {
     NULL,
     0,
     0,
-    0
+    (SHELL_VAR_CHECK_FLAG_TYPE) 0
   }
 };
 
@@ -133,7 +133,6 @@ Returns:
   EFI_HANDLE                   *ControllerHandleBuffer;
   UINTN                        ChildControllerHandleCount;
   CHAR16                       *ImageName;
-  BOOLEAN                      IsHelp;
   SHELL_VAR_CHECK_CODE         RetCode;
   CHAR16                       *Useful;
   SHELL_ARG_LIST               *Item;
@@ -143,7 +142,6 @@ Returns:
   Language                = NULL;
   DriverImageHandleCount  = 0;
   DriverImageHandleBuffer = NULL;
-  IsHelp                  = FALSE;
   ZeroMem (&ChkPck, sizeof (SHELL_VAR_CHECK_PACKAGE));
 
   EFI_SHELL_APP_INIT (ImageHandle, SystemTable);
diff --git a/drivers/drivers.h b/drivers/drivers.h
index 6ef5e12..7c29cb0 100644
--- a/drivers/drivers.h
+++ b/drivers/drivers.h
@@ -33,3 +33,4 @@ Revision History
   }
 
 #endif
+
diff --git a/drivers/drivers.inf b/drivers/drivers.inf
index befa6cd..056bf90 100644
--- a/drivers/drivers.inf
+++ b/drivers/drivers.inf
@@ -40,7 +40,7 @@ COMPONENT_TYPE       = APPLICATION
 
 
 [sources.common]
-  ..\ShCommonStrings.uni
+  ../ShCommonStrings.uni
   DriversStrings.uni
   drivers.c
   drivers.h
@@ -48,17 +48,17 @@ COMPONENT_TYPE       = APPLICATION
   
 [includes.common]
   .
-  ..\Inc
-  ..\Library
-  $(EDK_SOURCE)\Foundation
-  $(EDK_SOURCE)\Foundation\Include
-  $(EDK_SOURCE)\Foundation\Include\IndustryStandard
-  $(EDK_SOURCE)\Foundation\Efi
-  $(EDK_SOURCE)\Foundation\Efi\Include
-  $(EDK_SOURCE)\Foundation\FrameWork
-  $(EDK_SOURCE)\Foundation\FrameWork\Include
-  $(EDK_SOURCE)\Foundation\Core\Dxe
-  $(DEST_DIR)\
+  ../Inc
+  ../Library
+  $(EDK_SOURCE)/Foundation
+  $(EDK_SOURCE)/Foundation/Include
+  $(EDK_SOURCE)/Foundation/Include/IndustryStandard
+  $(EDK_SOURCE)/Foundation/Efi
+  $(EDK_SOURCE)/Foundation/Efi/Include
+  $(EDK_SOURCE)/Foundation/FrameWork
+  $(EDK_SOURCE)/Foundation/FrameWork/Include
+  $(EDK_SOURCE)/Foundation/Core/Dxe
+  $(DEST_DIR./
 
 [libraries.common]  
   EfiShellLib
@@ -73,7 +73,11 @@ COMPONENT_TYPE       = APPLICATION
 
 [nmake.common]
   IMAGE_ENTRY_POINT=DriversMain
+
+[nmake.IA32, nmake.EBC, nmake.X64, nmake.IPF]
   C_STD_FLAGS = $(C_STD_FLAGS) /DSTRING_ARRAY_NAME=$(BASE_NAME)Strings 
   C_STD_FLAGS = $(C_STD_FLAGS) /DSTRING_DEFINES_FILE=\"$(BASE_NAME)StrDefs.h\"
   C_STD_FLAGS = $(C_STD_FLAGS) /DEFI_BOOTSHELL
 
+[nmake.ARM, nmake.AARCH64]
+  C_STD_FLAGS = $(C_STD_FLAGS) -DEFI_BOOTSHELL
diff --git a/drvcfg/drvcfg.c b/drvcfg/drvcfg.c
index b604432..a037ac6 100644
--- a/drvcfg/drvcfg.c
+++ b/drvcfg/drvcfg.c
@@ -38,7 +38,7 @@ extern UINT8  STRING_ARRAY_NAME[];
 //
 // Global Variables
 //
-EFI_HII_HANDLE  HiiHandle;
+STATIC EFI_HII_HANDLE  HiiHandle;
 EFI_GUID        EfiDrvcfgGuid = EFI_DRVCFG_GUID;
 SHELL_VAR_CHECK_ITEM  DrvcfgCheckList[] = {
   {
@@ -87,7 +87,7 @@ SHELL_VAR_CHECK_ITEM  DrvcfgCheckList[] = {
     NULL,
     0,
     0,
-    0
+    (SHELL_VAR_CHECK_FLAG_TYPE) 0
   }
 };
 
diff --git a/drvcfg/drvcfg.h b/drvcfg/drvcfg.h
index 9e14b9f..4255940 100644
--- a/drvcfg/drvcfg.h
+++ b/drvcfg/drvcfg.h
@@ -33,3 +33,4 @@ Revision History
   }
 
 #endif
+
diff --git a/drvcfg/drvcfg.inf b/drvcfg/drvcfg.inf
index 71b2778..1abd9f2 100644
--- a/drvcfg/drvcfg.inf
+++ b/drvcfg/drvcfg.inf
@@ -40,24 +40,24 @@ COMPONENT_TYPE       = APPLICATION
 
 
 [sources.common]
-  ..\ShCommonStrings.uni
+  ../ShCommonStrings.uni
   DrvcfgStrings.uni
   drvcfg.c
   drvcfg.h
     
 [includes.common]
   .
-  ..\Inc
-  ..\Library
-  $(EDK_SOURCE)\Foundation
-  $(EDK_SOURCE)\Foundation\Include
-  $(EDK_SOURCE)\Foundation\Include\IndustryStandard
-  $(EDK_SOURCE)\Foundation\Efi
-  $(EDK_SOURCE)\Foundation\Efi\Include
-  $(EDK_SOURCE)\Foundation\FrameWork
-  $(EDK_SOURCE)\Foundation\FrameWork\Include
-  $(EDK_SOURCE)\Foundation\Core\Dxe
-  $(DEST_DIR)\
+  ../Inc
+  ../Library
+  $(EDK_SOURCE)/Foundation
+  $(EDK_SOURCE)/Foundation/Include
+  $(EDK_SOURCE)/Foundation/Include/IndustryStandard
+  $(EDK_SOURCE)/Foundation/Efi
+  $(EDK_SOURCE)/Foundation/Efi/Include
+  $(EDK_SOURCE)/Foundation/FrameWork
+  $(EDK_SOURCE)/Foundation/FrameWork/Include
+  $(EDK_SOURCE)/Foundation/Core/Dxe
+  $(DEST_DIR./
 
 [libraries.common]  
   EfiShellLib
@@ -72,7 +72,11 @@ COMPONENT_TYPE       = APPLICATION
 
 [nmake.common]
   IMAGE_ENTRY_POINT=DrvcfgMain
+
+[nmake.IA32, nmake.EBC, nmake.X64, nmake.IPF]
   C_STD_FLAGS = $(C_STD_FLAGS) /DSTRING_ARRAY_NAME=$(BASE_NAME)Strings 
   C_STD_FLAGS = $(C_STD_FLAGS) /DSTRING_DEFINES_FILE=\"$(BASE_NAME)StrDefs.h\"
   C_STD_FLAGS = $(C_STD_FLAGS) /DEFI_BOOTSHELL
 
+[nmake.ARM, nmake.AARCH64]
+  C_STD_FLAGS = $(C_STD_FLAGS) -DEFI_BOOTSHELL
diff --git a/drvdiag/drvdiag.c b/drvdiag/drvdiag.c
index 3a9435c..0db01de 100644
--- a/drvdiag/drvdiag.c
+++ b/drvdiag/drvdiag.c
@@ -41,7 +41,7 @@ extern UINT8  STRING_ARRAY_NAME[];
 //
 // Global Variables
 //
-EFI_HII_HANDLE  HiiHandle;
+STATIC EFI_HII_HANDLE  HiiHandle;
 EFI_GUID        EfiDrvdiagGuid = EFI_DRVDIAG_GUID;
 SHELL_VAR_CHECK_ITEM  DrvdiagCheckList[] = {
   {
@@ -90,7 +90,7 @@ SHELL_VAR_CHECK_ITEM  DrvdiagCheckList[] = {
     NULL,
     0,
     0,
-    0
+    (SHELL_VAR_CHECK_FLAG_TYPE) 0
   }
 };
 
diff --git a/drvdiag/drvdiag.h b/drvdiag/drvdiag.h
index 53d0478..8e10686 100644
--- a/drvdiag/drvdiag.h
+++ b/drvdiag/drvdiag.h
@@ -33,3 +33,4 @@ Revision History
   }
 
 #endif
+
diff --git a/drvdiag/drvdiag.inf b/drvdiag/drvdiag.inf
index f27c238..097b31b 100644
--- a/drvdiag/drvdiag.inf
+++ b/drvdiag/drvdiag.inf
@@ -40,7 +40,7 @@ COMPONENT_TYPE       = APPLICATION
 
 
 [sources.common]
-  ..\ShCommonStrings.uni
+  ../ShCommonStrings.uni
   DrvdiagStrings.uni
   drvdiag.c
   drvdiag.h
@@ -48,17 +48,17 @@ COMPONENT_TYPE       = APPLICATION
   
 [includes.common]
   .
-  ..\Inc
-  ..\Library
-  $(EDK_SOURCE)\Foundation
-  $(EDK_SOURCE)\Foundation\Include
-  $(EDK_SOURCE)\Foundation\Include\IndustryStandard
-  $(EDK_SOURCE)\Foundation\Efi
-  $(EDK_SOURCE)\Foundation\Efi\Include
-  $(EDK_SOURCE)\Foundation\FrameWork
-  $(EDK_SOURCE)\Foundation\FrameWork\Include
-  $(EDK_SOURCE)\Foundation\Core\Dxe
-  $(DEST_DIR)\
+  ../Inc
+  ../Library
+  $(EDK_SOURCE)/Foundation
+  $(EDK_SOURCE)/Foundation/Include
+  $(EDK_SOURCE)/Foundation/Include/IndustryStandard
+  $(EDK_SOURCE)/Foundation/Efi
+  $(EDK_SOURCE)/Foundation/Efi/Include
+  $(EDK_SOURCE)/Foundation/FrameWork
+  $(EDK_SOURCE)/Foundation/FrameWork/Include
+  $(EDK_SOURCE)/Foundation/Core/Dxe
+  $(DEST_DIR./
 
 [libraries.common]  
   EfiShellLib
@@ -73,7 +73,11 @@ COMPONENT_TYPE       = APPLICATION
 
 [nmake.common]
   IMAGE_ENTRY_POINT=DrvdiagMain
+
+[nmake.IA32, nmake.EBC, nmake.X64, nmake.IPF]
   C_STD_FLAGS = $(C_STD_FLAGS) /DSTRING_ARRAY_NAME=$(BASE_NAME)Strings 
   C_STD_FLAGS = $(C_STD_FLAGS) /DSTRING_DEFINES_FILE=\"$(BASE_NAME)StrDefs.h\"
   C_STD_FLAGS = $(C_STD_FLAGS) /DEFI_BOOTSHELL
 
+[nmake.ARM, nmake.AARCH64]
+  C_STD_FLAGS = $(C_STD_FLAGS) -DEFI_BOOTSHELL
diff --git a/edit/edit.inf b/edit/edit.inf
index 0a48e87..3d69d4b 100644
--- a/edit/edit.inf
+++ b/edit/edit.inf
@@ -25,7 +25,7 @@ FILE_GUID            = 51A60577-F1F6-444a-A372-244BED272023
 COMPONENT_TYPE       = APPLICATION
 
 [sources.common]
- ..\ShCommonStrings.uni
+ ../ShCommonStrings.uni
  EditStrings.uni
  editor.h
  editortype.h
@@ -41,17 +41,17 @@ COMPONENT_TYPE       = APPLICATION
 
 [includes.common]
   .
-  ..\Inc
-  ..\Library
-  $(EDK_SOURCE)\Foundation
-  $(EDK_SOURCE)\Foundation\Include
-  $(EDK_SOURCE)\Foundation\Include\IndustryStandard
-  $(EDK_SOURCE)\Foundation\Efi
-  $(EDK_SOURCE)\Foundation\Efi\Include
-  $(EDK_SOURCE)\Foundation\FrameWork
-  $(EDK_SOURCE)\Foundation\FrameWork\Include
-  $(EDK_SOURCE)\Foundation\Core\Dxe
-  $(DEST_DIR)\
+  ../Inc
+  ../Library
+  $(EDK_SOURCE)/Foundation
+  $(EDK_SOURCE)/Foundation/Include
+  $(EDK_SOURCE)/Foundation/Include/IndustryStandard
+  $(EDK_SOURCE)/Foundation/Efi
+  $(EDK_SOURCE)/Foundation/Efi/Include
+  $(EDK_SOURCE)/Foundation/FrameWork
+  $(EDK_SOURCE)/Foundation/FrameWork/Include
+  $(EDK_SOURCE)/Foundation/Core/Dxe
+  $(DEST_DIR./
 
 [libraries.common]  
   EfiShellLib
@@ -70,11 +70,13 @@ COMPONENT_TYPE       = APPLICATION
 # we will specify some additional DEFINEs on the compile command line.
 #
 [nmake.common]
-  C_PROJ_FLAGS = $(C_PROJ_FLAGS) /Zm500
   IMAGE_ENTRY_POINT=InitializeEFIEditor
+
+[nmake.IA32, nmake.EBC, nmake.X64, nmake.IPF]
+  C_PROJ_FLAGS = $(C_PROJ_FLAGS) /Zm500
   C_STD_FLAGS = $(C_STD_FLAGS) /DSTRING_ARRAY_NAME=$(BASE_NAME)Strings 
   C_STD_FLAGS = $(C_STD_FLAGS) /DSTRING_DEFINES_FILE=\"$(BASE_NAME)StrDefs.h\"
   C_STD_FLAGS = $(C_STD_FLAGS) /DEFI_BOOTSHELL
 
-
- 
\ No newline at end of file
+[nmake.ARM, nmake.AARCH64]
+  C_STD_FLAGS = $(C_STD_FLAGS) -DEFI_BOOTSHELL
diff --git a/edit/editor.h b/edit/editor.h
index c18db6a..f41b5b1 100644
--- a/edit/editor.h
+++ b/edit/editor.h
@@ -33,7 +33,7 @@ Abstract:
 #include "libstatusbar.h"
 #include "libinputbar.h"
 #include "libmenubar.h"
-#include "libmisc.h"
+#include "libMisc.h"
 //
 // This is the generated header file which includes whatever needs to be exported (strings + IFR)
 //
@@ -43,9 +43,10 @@ extern EFI_EDITOR_GLOBAL_EDITOR MainEditor;
 extern BOOLEAN                  EditorFirst;
 extern BOOLEAN                  EditorExit;
 
-extern EFI_HII_HANDLE           HiiHandle;
+extern EFI_HII_HANDLE           gEditHiiHandle;
 #if (EFI_SPECIFICATION_VERSION < 0x0002000A)
 extern EFI_HII_PROTOCOL         *Hii;
 #endif
 
 #endif // _EFI_EDITOR_H_
+
diff --git a/edit/editortype.h b/edit/editortype.h
index 674f120..861b6c1 100644
--- a/edit/editortype.h
+++ b/edit/editortype.h
@@ -28,7 +28,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 #define EDITOR_NAME           L"EFI Editor\0"
 #define EDITOR_VERSION        L"0.99\0"
 
-#define EFI_EDITOR_LINE_LIST  'eell'
+#define EFI_EDITOR_LINE_LIST  EFI_SIGNATURE_32 ('e','e','l','l')
 
 #define INSERT_MODE_STR       L"INS"
 #define OVERWR_MODE_STR       L"OVR"
@@ -149,8 +149,8 @@ typedef struct _EFI_EDITOR_MENU_ITEM {
 } EFI_EDITOR_MENU_ITEM;
 
 typedef struct {
-  UINT32  Foreground : 4;
-  UINT32  Background : 4;
+  UINT8  Foreground : 4;
+  UINT8  Background : 4;
 } EFI_EDITOR_COLOR_ATTRIBUTES;
 
 typedef union {
@@ -223,3 +223,4 @@ typedef struct {
 } EFI_EDITOR_GLOBAL_EDITOR;
 
 #endif
+
diff --git a/edit/libEditor.c b/edit/libEditor.c
index b39a2f0..7f32ce1 100644
--- a/edit/libEditor.c
+++ b/edit/libEditor.c
@@ -123,7 +123,7 @@ MainEditorInit (
   Status = BS->HandleProtocol (
                 In,
                 &gEfiSimplePointerProtocolGuid,
-                &MainEditor.MouseInterface
+                (VOID**)&MainEditor.MouseInterface
                 );
   if (EFI_ERROR (Status)) {
     //
@@ -146,7 +146,7 @@ MainEditorInit (
         Status = BS->HandleProtocol (
                       HandleBuffer[Index],
                       &gEfiSimplePointerProtocolGuid,
-                      &MainEditor.MouseInterface
+                      (VOID**)&MainEditor.MouseInterface
                       );
         if (!EFI_ERROR (Status)) {
           break;
@@ -169,31 +169,31 @@ MainEditorInit (
   //
   Status = MainTitleBarInit ();
   if (EFI_ERROR (Status)) {
-    PrintToken (STRING_TOKEN (STR_EDIT_LIBEDITOR_TITLEBAR), HiiHandle);
+    PrintToken (STRING_TOKEN (STR_EDIT_LIBEDITOR_TITLEBAR), gEditHiiHandle);
     return EFI_LOAD_ERROR;
   }
 
   Status = MainMenuBarInit ();
   if (EFI_ERROR (Status)) {
-    PrintToken (STRING_TOKEN (STR_EDIT_LIBEDITOR_MAINMENU), HiiHandle);
+    PrintToken (STRING_TOKEN (STR_EDIT_LIBEDITOR_MAINMENU), gEditHiiHandle);
     return EFI_LOAD_ERROR;
   }
 
   Status = MainStatusBarInit ();
   if (EFI_ERROR (Status)) {
-    PrintToken (STRING_TOKEN (STR_EDIT_LIBEDITOR_STATUSBAR), HiiHandle);
+    PrintToken (STRING_TOKEN (STR_EDIT_LIBEDITOR_STATUSBAR), gEditHiiHandle);
     return EFI_LOAD_ERROR;
   }
 
   Status = MainInputBarInit ();
   if (EFI_ERROR (Status)) {
-    PrintToken (STRING_TOKEN (STR_EDIT_LIBEDITOR_INPUTBAR), HiiHandle);
+    PrintToken (STRING_TOKEN (STR_EDIT_LIBEDITOR_INPUTBAR), gEditHiiHandle);
     return EFI_LOAD_ERROR;
   }
 
   Status = FileBufferInit ();
   if (EFI_ERROR (Status)) {
-    PrintToken (STRING_TOKEN (STR_EDIT_LIBEDITOR_FILEBUFFER), HiiHandle);
+    PrintToken (STRING_TOKEN (STR_EDIT_LIBEDITOR_FILEBUFFER), gEditHiiHandle);
     return EFI_LOAD_ERROR;
   }
   //
@@ -234,27 +234,27 @@ MainEditorCleanup (
   //
   Status = MainTitleBarCleanup ();
   if (EFI_ERROR (Status)) {
-    PrintToken (STRING_TOKEN (STR_EDIT_LIBEDITOR_TILEBAR_CLEANUP), HiiHandle);
+    PrintToken (STRING_TOKEN (STR_EDIT_LIBEDITOR_TILEBAR_CLEANUP), gEditHiiHandle);
   }
 
   Status = MainMenuBarCleanup ();
   if (EFI_ERROR (Status)) {
-    PrintToken (STRING_TOKEN (STR_EDIT_LIBEDITOR_MENUBAR_CLEANUP), HiiHandle);
+    PrintToken (STRING_TOKEN (STR_EDIT_LIBEDITOR_MENUBAR_CLEANUP), gEditHiiHandle);
   }
 
   Status = MainStatusBarCleanup ();
   if (EFI_ERROR (Status)) {
-    PrintToken (STRING_TOKEN (STR_EDIT_LIBEDITOR_STATUSBAR_CLEANUP), HiiHandle);
+    PrintToken (STRING_TOKEN (STR_EDIT_LIBEDITOR_STATUSBAR_CLEANUP), gEditHiiHandle);
   }
 
   Status = MainInputBarCleanup ();
   if (EFI_ERROR (Status)) {
-    PrintToken (STRING_TOKEN (STR_EDIT_LIBEDITOR_INPUTBAR_CLEANUP), HiiHandle);
+    PrintToken (STRING_TOKEN (STR_EDIT_LIBEDITOR_INPUTBAR_CLEANUP), gEditHiiHandle);
   }
 
   Status = FileBufferCleanup ();
   if (EFI_ERROR (Status)) {
-    PrintToken (STRING_TOKEN (STR_EDIT_LIBEDITOR_FILEBUFFER_CLEANUP), HiiHandle);
+    PrintToken (STRING_TOKEN (STR_EDIT_LIBEDITOR_FILEBUFFER_CLEANUP), gEditHiiHandle);
   }
   //
   // restore old mode
diff --git a/edit/libFileBuffer.c b/edit/libFileBuffer.c
index 1f1e2aa..1be2124 100644
--- a/edit/libFileBuffer.c
+++ b/edit/libFileBuffer.c
@@ -196,8 +196,9 @@ FileBufferRestoreMousePosition (
       // backup the old screen attributes
       //
       Orig                  = MainEditor.ColorAttributes;
-      New.Colors.Foreground = Orig.Colors.Background;
-      New.Colors.Background = Orig.Colors.Foreground;
+      New.Data              = 0;
+      New.Colors.Foreground = Orig.Colors.Foreground;
+      New.Colors.Background = Orig.Colors.Background;
 
       //
       // clear the old mouse position
@@ -235,10 +236,14 @@ FileBufferRestoreMousePosition (
           Value
           );
       }
+
       //
       // set the new mouse position
       //
-      Out->SetAttribute (Out, New.Data);
+      Out->SetAttribute (
+             Out, 
+             EFI_TEXT_ATTR (New.Colors.Background, New.Colors.Foreground)
+             );
 
       //
       // clear the old mouse position
@@ -278,7 +283,10 @@ FileBufferRestoreMousePosition (
       //
       // end of HasCharacter
       //
-      Out->SetAttribute (Out, Orig.Data);
+      Out->SetAttribute (
+             Out,
+             EFI_TEXT_ATTR (Orig.Colors.Foreground, Orig.Colors.Background)
+             );
     }
     //
     // end of MouseNeedRefresh
@@ -768,7 +776,7 @@ Returns:
   Handle        = NULL;
   FileSize      = 0;
   UnicodeBuffer = NULL;
-  Type          = 0;
+  Type          = DEFAULT_TYPE;
 
   //
   // in this function, when you return error ( except EFI_OUT_OF_RESOURCES )
@@ -2624,15 +2632,9 @@ FileBufferHome (
   VOID
   )
 {
-  EFI_EDITOR_LINE *Line;
   UINTN           FRow;
   UINTN           FCol;
 
-  //
-  // go to the first column of the line
-  //
-  Line  = FileBuffer.CurrentLine;
-
   FRow  = FileBuffer.FilePosition.Row;
   FCol  = 1;
 
diff --git a/edit/libInputBar.c b/edit/libInputBar.c
index 0ec6858..f868ffb 100644
--- a/edit/libInputBar.c
+++ b/edit/libInputBar.c
@@ -141,8 +141,6 @@ Returns:
   UINTN                   Size;
   EFI_STATUS              Status;
   BOOLEAN                 NoDisplay;
-  UINTN                   Limit;
-  UINTN                   PromptLen;
 
   //
   // variable initialization
@@ -162,10 +160,14 @@ Returns:
   // back up the old screen attributes
   //
   Orig                  = MainEditor.ColorAttributes;
+  New.Data              = 0;
   New.Colors.Foreground = Orig.Colors.Background;
   New.Colors.Background = Orig.Colors.Foreground;
 
-  Out->SetAttribute (Out, New.Data);
+  Out->SetAttribute (
+         Out,
+         EFI_TEXT_ATTR (New.Colors.Foreground, New.Colors.Background)
+         );
 
   //
   // clear input bar
@@ -173,13 +175,7 @@ Returns:
   EditorClearLine (INPUT_BAR_LOCATION);
 
   Out->SetCursorPosition (Out, 0, INPUT_BAR_LOCATION - 1);
-  PrintToken (STRING_TOKEN (STR_EDIT_LIBINPUTBAR_MAININPUTBAR), HiiHandle, MainInputBar.Prompt);
-
-  //
-  // that's the maximum input length that can be displayed on screen
-  //
-  PromptLen = StrLen (MainInputBar.Prompt);
-  Limit     = MainEditor.ScreenSize.Column - PromptLen;
+  PrintToken (STRING_TOKEN (STR_EDIT_LIBINPUTBAR_MAININPUTBAR), gEditHiiHandle, MainInputBar.Prompt);
 
   //
   // this is a selection prompt, cursor will stay in edit area
@@ -188,7 +184,10 @@ Returns:
   if (StrStr (MainInputBar.Prompt, L"Yes/No")) {
     NoDisplay = TRUE;
     FileBufferRestorePosition ();
-    Out->SetAttribute (Out, Orig.Data);
+    Out->SetAttribute (
+           Out,
+           EFI_TEXT_ATTR (Orig.Colors.Foreground, Orig.Colors.Background)
+           );
   } else {
     NoDisplay = FALSE;
   }
@@ -265,7 +264,10 @@ Returns:
   //
   // restore screen attributes
   //
-  Out->SetAttribute (Out, Orig.Data);
+  Out->SetAttribute (
+         Out,
+         EFI_TEXT_ATTR (Orig.Colors.Foreground, Orig.Colors.Background)
+         );
 
   StatusBarNeedRefresh = TRUE;
 
diff --git a/edit/libMenuBar.c b/edit/libMenuBar.c
index 32fef4e..5ab13e6 100644
--- a/edit/libMenuBar.c
+++ b/edit/libMenuBar.c
@@ -189,7 +189,6 @@ MainMenuBarRefresh (
   CHAR16                *NameString;
   CHAR16                *FunctionKeyString;
   UINTN                 BufferSize;
-  EFI_STATUS            Status;
 
   //
   // variable initialization
@@ -220,9 +219,9 @@ MainMenuBarRefresh (
     FunctionKeyString = AllocatePool (BufferSize);
 
 #if (EFI_SPECIFICATION_VERSION < 0x0002000A)
-    Status            = Hii->GetString (Hii, HiiHandle, Item->NameToken, FALSE, NULL, &BufferSize, NameString);
+    Hii->GetString (Hii, gEditHiiHandle, Item->NameToken, FALSE, NULL, &BufferSize, NameString);
 #else
-    Status            = LibGetString (HiiHandle, Item->NameToken, NameString, &BufferSize);
+    LibGetString (gEditHiiHandle, Item->NameToken, NameString, &BufferSize);
 #endif
 
     Width             = max ((StrLen (NameString) + 6), 20);
@@ -232,9 +231,9 @@ MainMenuBarRefresh (
     }
 
 #if (EFI_SPECIFICATION_VERSION < 0x0002000A)
-    Status = Hii->GetString (Hii, HiiHandle, Item->FunctionKeyToken, FALSE, NULL, &BufferSize, FunctionKeyString);
+    Hii->GetString (Hii, gEditHiiHandle, Item->FunctionKeyToken, FALSE, NULL, &BufferSize, FunctionKeyString);
 #else
-    Status = LibGetString (HiiHandle, Item->FunctionKeyToken, FunctionKeyString, &BufferSize);
+    LibGetString (gEditHiiHandle, Item->FunctionKeyToken, FunctionKeyString, &BufferSize);
 #endif    
     PrintAt (Col - 1, Row - 1, L"%E%s%N  %H%s%N  ", FunctionKeyString, NameString);
 
diff --git a/edit/libMisc.h b/edit/libMisc.h
index b7a438b..38cabf3 100644
--- a/edit/libMisc.h
+++ b/edit/libMisc.h
@@ -96,3 +96,4 @@ GetTextY (
   ) ;
 
 #endif
+
diff --git a/edit/libStatusBar.c b/edit/libStatusBar.c
index 1527c6e..88a24c9 100644
--- a/edit/libStatusBar.c
+++ b/edit/libStatusBar.c
@@ -157,11 +157,15 @@ Returns:
   // back up the screen attributes
   //
   Orig                  = MainEditor.ColorAttributes;
+  New.Data              = 0;
   New.Colors.Foreground = Orig.Colors.Background;
   New.Colors.Background = Orig.Colors.Foreground;
 
   Out->EnableCursor (Out, FALSE);
-  Out->SetAttribute (Out, New.Data);
+  Out->SetAttribute (
+         Out,
+         EFI_TEXT_ATTR (New.Colors.Foreground, New.Colors.Background)
+         );
 
   //
   // clear status bar
@@ -191,7 +195,10 @@ Returns:
   //
   // restore the old screen attributes
   //
-  Out->SetAttribute (Out, Orig.Data);
+  Out->SetAttribute (
+         Out,
+         EFI_TEXT_ATTR (Orig.Colors.Foreground, Orig.Colors.Background)
+         );
 
   //
   // restore position in edit area
diff --git a/edit/libTitleBar.c b/edit/libTitleBar.c
index d5d1ad9..8b432a2 100644
--- a/edit/libTitleBar.c
+++ b/edit/libTitleBar.c
@@ -120,10 +120,15 @@ Returns:
   // backup the old screen attributes
   //
   Orig                  = MainEditor.ColorAttributes;
+
+  New.Data              = 0;
   New.Colors.Foreground = Orig.Colors.Background;
   New.Colors.Background = Orig.Colors.Foreground;
 
-  Out->SetAttribute (Out, New.Data);
+  Out->SetAttribute (
+         Out,
+         EFI_TEXT_ATTR (New.Colors.Foreground, New.Colors.Background)
+         );
 
   //
   // clear the old title bar
@@ -142,7 +147,10 @@ Returns:
     );
 
   if (MainEditor.FileBuffer->FileName == NULL) {
-    Out->SetAttribute (Out, Orig.Data);
+    Out->SetAttribute (
+           Out,
+           EFI_TEXT_ATTR (Orig.Colors.Foreground, Orig.Colors.Background)
+           );
     FileBufferRestorePosition ();
     return EFI_SUCCESS;
   }
@@ -204,7 +212,10 @@ Returns:
   //
   // restore the old attribute
   //
-  Out->SetAttribute (Out, Orig.Data);
+  Out->SetAttribute (
+         Out,
+         EFI_TEXT_ATTR (Orig.Colors.Foreground, Orig.Colors.Background)
+         );
 
   //
   // restore edit area cursor position
diff --git a/edit/libeditor.h b/edit/libeditor.h
index 9c84059..e6a174c 100644
--- a/edit/libeditor.h
+++ b/edit/libeditor.h
@@ -52,3 +52,4 @@ MainEditorSetCutLine (
   );
 
 #endif
+
diff --git a/edit/libfilebuffer.h b/edit/libfilebuffer.h
index d2b519b..79ecd1b 100644
--- a/edit/libfilebuffer.h
+++ b/edit/libfilebuffer.h
@@ -209,3 +209,4 @@ EditGetDefaultFileName (
   );
 
 #endif
+
diff --git a/edit/libinputbar.h b/edit/libinputbar.h
index bdbe9bf..3768306 100644
--- a/edit/libinputbar.h
+++ b/edit/libinputbar.h
@@ -44,3 +44,4 @@ MainInputBarSetStringSize (
   );
 
 #endif
+
diff --git a/edit/libmenubar.h b/edit/libmenubar.h
index 486aa81..27a89d8 100644
--- a/edit/libmenubar.h
+++ b/edit/libmenubar.h
@@ -85,3 +85,4 @@ MainCommandGotoLine (
   );
 
 #endif
+
diff --git a/edit/libstatusbar.h b/edit/libstatusbar.h
index bcc6997..05ccdef 100644
--- a/edit/libstatusbar.h
+++ b/edit/libstatusbar.h
@@ -53,3 +53,4 @@ MainStatusBarBackup (
   );
 
 #endif
+
diff --git a/edit/libtitlebar.h b/edit/libtitlebar.h
index eb7c1a3..3946ca7 100644
--- a/edit/libtitlebar.h
+++ b/edit/libtitlebar.h
@@ -46,3 +46,4 @@ MainTitleBarBackup (
   );
 
 #endif
+
diff --git a/edit/main.c b/edit/main.c
index 9f1c987..a69a1bc 100644
--- a/edit/main.c
+++ b/edit/main.c
@@ -34,7 +34,7 @@ EFI_BOOTSHELL_CODE(
 //
 // Global Variables
 //
-EFI_HII_HANDLE    HiiHandle;
+EFI_HII_HANDLE    gEditHiiHandle;
 #if (EFI_SPECIFICATION_VERSION < 0x0002000A)
 EFI_HII_PROTOCOL  *Hii;
 #endif
@@ -56,7 +56,7 @@ SHELL_VAR_CHECK_ITEM    EditCheckList[] = {
     NULL,
     0,
     0,
-    0
+    (SHELL_VAR_CHECK_FLAG_TYPE) 0
   }
 };
 
@@ -121,13 +121,13 @@ Returns:
   //
   // There should only be one HII protocol
   //
-  Status = LibLocateProtocol (&gEfiHiiProtocolGuid, &Hii);
+  Status = LibLocateProtocol (&gEfiHiiProtocolGuid, (VOID**)&Hii);
   if (EFI_ERROR (Status) || NULL == Hii) {
     return EFI_ABORTED;
   }
 #endif
 
-  Status = LibInitializeStrings (&HiiHandle, STRING_ARRAY_NAME, &EfiEditGuid);
+  Status = LibInitializeStrings (&gEditHiiHandle, STRING_ARRAY_NAME, &EfiEditGuid);
 
   if (EFI_ERROR (Status)) {
     return Status;
@@ -137,7 +137,7 @@ Returns:
   if (VarCheckOk != RetCode) {
     switch (RetCode) {
     case VarCheckUnknown:
-      PrintToken (STRING_TOKEN (STR_SHELLENV_GNC_UNKNOWN_FLAG), HiiHandle, L"edit", Useful);
+      PrintToken (STRING_TOKEN (STR_SHELLENV_GNC_UNKNOWN_FLAG), gEditHiiHandle, L"edit", Useful);
       break;
 
     default:
@@ -161,10 +161,10 @@ Returns:
         ChkPck.FlagCount > 2 ||
         (ChkPck.FlagCount == 2 && LibCheckVarGetFlag (&ChkPck, L"-b") == NULL)
         ) {
-      PrintToken (STRING_TOKEN (STR_SHELLENV_GNC_TOO_MANY), HiiHandle, L"edit");
+      PrintToken (STRING_TOKEN (STR_SHELLENV_GNC_TOO_MANY), gEditHiiHandle, L"edit");
       Status = EFI_INVALID_PARAMETER;
     } else {
-      PrintToken (STRING_TOKEN (STR_EDIT_VERBOSE_HELP), HiiHandle);
+      PrintToken (STRING_TOKEN (STR_EDIT_VERBOSE_HELP), gEditHiiHandle);
       Status = EFI_SUCCESS;
     }
 
@@ -172,21 +172,21 @@ Returns:
   }
 
   if (ChkPck.ValueCount > 1) {
-    PrintToken (STRING_TOKEN (STR_SHELLENV_GNC_TOO_MANY), HiiHandle, L"edit");
+    PrintToken (STRING_TOKEN (STR_SHELLENV_GNC_TOO_MANY), gEditHiiHandle, L"edit");
     Status = EFI_INVALID_PARAMETER;
     goto done;
   }
 
   if (ChkPck.ValueCount == 1) {
     if (!IsValidFileName (ChkPck.VarList->VarStr)) {
-      PrintToken (STRING_TOKEN (STR_EDIT_MAIN_INVALID_FILE_NAME), HiiHandle);
+      PrintToken (STRING_TOKEN (STR_EDIT_MAIN_INVALID_FILE_NAME), gEditHiiHandle);
       Status = EFI_INVALID_PARAMETER;
       goto done;
     }
   }
 
   if (SI->RedirArgc != 0) {
-    PrintToken (STRING_TOKEN (STR_EDIT_NOREDIRECT), HiiHandle);
+    PrintToken (STRING_TOKEN (STR_EDIT_NOREDIRECT), gEditHiiHandle);
     Status = EFI_INVALID_PARAMETER;
     goto done;
   }
@@ -195,7 +195,7 @@ Returns:
   if (EFI_ERROR (Status)) {
     Out->ClearScreen (Out);
     Out->EnableCursor (Out, TRUE);
-    PrintToken (STRING_TOKEN (STR_EDIT_MAIN_INIT_FAILED), HiiHandle);
+    PrintToken (STRING_TOKEN (STR_EDIT_MAIN_INIT_FAILED), gEditHiiHandle);
     goto done;
   }
 
@@ -240,19 +240,19 @@ Returns:
   //
   if (Status == EFI_SUCCESS) {
   } else if (Status == EFI_OUT_OF_RESOURCES) {
-    PrintToken (STRING_TOKEN (STR_SHELLENV_GNC_OUT_RESOURCE), HiiHandle, L"edit");
+    PrintToken (STRING_TOKEN (STR_SHELLENV_GNC_OUT_RESOURCE), gEditHiiHandle, L"edit");
   } else {
     if (Buffer != NULL) {
       if (StrCmp (Buffer, L"") != 0) {
         //
         // print out the status string
         //
-        PrintToken (STRING_TOKEN (STR_EDIT_MAIN_BUFFER), HiiHandle, Buffer);
+        PrintToken (STRING_TOKEN (STR_EDIT_MAIN_BUFFER), gEditHiiHandle, Buffer);
       } else {
-        PrintToken (STRING_TOKEN (STR_EDIT_MAIN_UNKNOWN_EDITOR_ERR), HiiHandle);
+        PrintToken (STRING_TOKEN (STR_EDIT_MAIN_UNKNOWN_EDITOR_ERR), gEditHiiHandle);
       }
     } else {
-      PrintToken (STRING_TOKEN (STR_EDIT_MAIN_UNKNOWN_EDITOR_ERR), HiiHandle);
+      PrintToken (STRING_TOKEN (STR_EDIT_MAIN_UNKNOWN_EDITOR_ERR), gEditHiiHandle);
     }
   }
 
diff --git a/err/DebugMask.h b/err/DebugMask.h
index 61136aa..9ce362f 100644
--- a/err/DebugMask.h
+++ b/err/DebugMask.h
@@ -67,3 +67,4 @@ typedef struct _EFI_DEBUG_MASK_PROTOCOL {
 extern EFI_GUID gEfiDebugMaskProtocolGuid;
 
 #endif
+
diff --git a/err/err.c b/err/err.c
index e41a9d6..6062ddb 100644
--- a/err/err.c
+++ b/err/err.c
@@ -35,7 +35,7 @@ extern UINTN  EFIDebug;
 //
 // Global Variables
 //
-EFI_HII_HANDLE  HiiHandle;
+STATIC EFI_HII_HANDLE  HiiHandle;
 EFI_GUID        EfiErrGuid = EFI_ERR_GUID;
 SHELL_VAR_CHECK_ITEM    ErrCheckList[] = {
   {
@@ -60,7 +60,7 @@ SHELL_VAR_CHECK_ITEM    ErrCheckList[] = {
     NULL,
     0,
     0,
-    0
+    (SHELL_VAR_CHECK_FLAG_TYPE) 0
   }
 };
 
@@ -149,7 +149,7 @@ _DumpHandleMask (
   EFI_DEBUG_MASK_PROTOCOL *dmp;
   UINTN                   Mask;
 
-  Status = BS->HandleProtocol (Handle, &gEfiDebugMaskProtocolGuid, &dmp);
+  Status = BS->HandleProtocol (Handle, &gEfiDebugMaskProtocolGuid, (VOID**)&dmp);
   if (!EFI_ERROR (Status)) {
     Status = dmp->GetDebugMask (dmp, &Mask);
     if (!EFI_ERROR (Status)) {
@@ -170,13 +170,11 @@ _DumpDriverMask (
   UINTN       HandleNum;
   UINTN       Index;
   UINTN       DrvHandle;
-  BOOLEAN     Found;
 
   HandleBuf = NULL;
   HandleNum = 0;
   DrvHandle = 0;
   Status    = EFI_SUCCESS;
-  Found     = FALSE;
 
   if (NULL != Handle) {
     DrvHandle = (UINTN) StrToUIntegerBase (Handle, 16, &Status) - 1;
@@ -278,7 +276,7 @@ _SetDriverMask (
     goto Done;
   }
 
-  Status = BS->HandleProtocol (RealHandle, &gEfiDebugMaskProtocolGuid, &dmp);
+  Status = BS->HandleProtocol (RealHandle, &gEfiDebugMaskProtocolGuid, (VOID**)&dmp);
   if (EFI_ERROR (Status)) {
     PrintToken (STRING_TOKEN (STR_ERR_HANDLE_NOT_FOUND), HiiHandle, DrvHandle + 1);
     goto Done;
@@ -336,7 +334,7 @@ _SetAllDriverMask (
   }
   
   for (Index = 0; Index < BufferSize / sizeof(EFI_HANDLE); Index ++) {
-    Status = BS->HandleProtocol (Buffer[Index], &gEfiDebugMaskProtocolGuid, &dmp);
+    Status = BS->HandleProtocol (Buffer[Index], &gEfiDebugMaskProtocolGuid, (VOID**)&dmp);
     Status = dmp->SetDebugMask (dmp, Msk);
   }
 
diff --git a/err/err.h b/err/err.h
index f42e503..133006a 100644
--- a/err/err.h
+++ b/err/err.h
@@ -29,4 +29,4 @@ Revision History
     0xdaab229b, 0x7883, 0x4f5f, 0xac, 0x6e, 0x15, 0x20, 0xc7, 0xe7, 0x8f, 0xd4 \
   }
 
-#endif
\ No newline at end of file
+#endif
diff --git a/err/err.inf b/err/err.inf
index 467e734..3afd967 100644
--- a/err/err.inf
+++ b/err/err.inf
@@ -25,7 +25,7 @@ FILE_GUID            = 7ED86F56-5558-4d4f-A972-9307909AE9BA
 COMPONENT_TYPE       = APPLICATION
 
 [sources.common]
-..\ShCommonStrings.uni
+../ShCommonStrings.uni
 ErrStrings.uni
 err.c
 err.h
@@ -33,17 +33,17 @@ err.h
 
 [includes.common]
   .
-  ..\Inc
-  ..\Library
-  $(EDK_SOURCE)\Foundation
-  $(EDK_SOURCE)\Foundation\Include
-  $(EDK_SOURCE)\Foundation\Include\IndustryStandard
-  $(EDK_SOURCE)\Foundation\Efi
-  $(EDK_SOURCE)\Foundation\Efi\Include
-  $(EDK_SOURCE)\Foundation\FrameWork
-  $(EDK_SOURCE)\Foundation\FrameWork\Include
-  $(EDK_SOURCE)\Foundation\Core\Dxe
-  $(DEST_DIR)\
+  ../Inc
+  ../Library
+  $(EDK_SOURCE)/Foundation
+  $(EDK_SOURCE)/Foundation/Include
+  $(EDK_SOURCE)/Foundation/Include/IndustryStandard
+  $(EDK_SOURCE)/Foundation/Efi
+  $(EDK_SOURCE)/Foundation/Efi/Include
+  $(EDK_SOURCE)/Foundation/FrameWork
+  $(EDK_SOURCE)/Foundation/FrameWork/Include
+  $(EDK_SOURCE)/Foundation/Core/Dxe
+  $(DEST_DIR./
 
 [libraries.common]  
   EfiShellLib
@@ -63,11 +63,14 @@ err.h
 # we will specify some additional DEFINEs on the compile command line.
 #
 [nmake.common]
-  C_PROJ_FLAGS = $(C_PROJ_FLAGS) /Zm500
   IMAGE_ENTRY_POINT=InitializeError
+
+[nmake.IA32, nmake.EBC, nmake.X64, nmake.IPF]
+  C_PROJ_FLAGS = $(C_PROJ_FLAGS) /Zm500
   C_STD_FLAGS = $(C_STD_FLAGS) /DSTRING_ARRAY_NAME=$(BASE_NAME)Strings 
   C_STD_FLAGS = $(C_STD_FLAGS) /DSTRING_DEFINES_FILE=\"$(BASE_NAME)StrDefs.h\"
   C_STD_FLAGS = $(C_STD_FLAGS) /DEFI_BOOTSHELL
 
-
+[nmake.ARM, nmake.AARCH64]
+  C_STD_FLAGS = $(C_STD_FLAGS) -DEFI_BOOTSHELL
  
\ No newline at end of file
diff --git a/guid/guid.c b/guid/guid.c
index 7f26e7d..78ec5eb 100644
--- a/guid/guid.c
+++ b/guid/guid.c
@@ -36,7 +36,7 @@ extern UINT8  STRING_ARRAY_NAME[];
 //
 // Global Variables
 //
-EFI_HII_HANDLE  HiiHandle;
+STATIC EFI_HII_HANDLE  HiiHandle;
 EFI_GUID        EfiGuidGuid = EFI_GUID_GUID;
 SHELL_VAR_CHECK_ITEM    GuidCheckList[] = {
   {
@@ -55,7 +55,7 @@ SHELL_VAR_CHECK_ITEM    GuidCheckList[] = {
     NULL,
     0,
     0,
-    0
+    (SHELL_VAR_CHECK_FLAG_TYPE)0
   }
 };
 
diff --git a/guid/guid.h b/guid/guid.h
index af7560a..e6cf872 100644
--- a/guid/guid.h
+++ b/guid/guid.h
@@ -31,4 +31,4 @@ Revision History
     0x425bff44, 0x1cae, 0x4c27, 0x98, 0x2c, 0x25, 0xc8, 0x74, 0x59, 0xdf, 0xd6 \
   }
 
-#endif
\ No newline at end of file
+#endif
diff --git a/guid/guid.inf b/guid/guid.inf
index 60639d2..621fab4 100644
--- a/guid/guid.inf
+++ b/guid/guid.inf
@@ -37,23 +37,23 @@
   FILE_GUID            = CBEB01F8-0912-4d87-8A6B-45D02847A405
   COMPONENT_TYPE       = APPLICATION
 [sources.common]
-  ..\ShCommonStrings.uni
+  ../ShCommonStrings.uni
   GuidStrings.uni
   guid.c
   guid.h
 [includes.common]
   .
-  ..\Inc
-  ..\Library
-  $(EDK_SOURCE)\Foundation
-  $(EDK_SOURCE)\Foundation\Include
-  $(EDK_SOURCE)\Foundation\Include\IndustryStandard
-  $(EDK_SOURCE)\Foundation\Efi
-  $(EDK_SOURCE)\Foundation\Efi\Include
-  $(EDK_SOURCE)\Foundation\FrameWork
-  $(EDK_SOURCE)\Foundation\FrameWork\Include
-  $(EDK_SOURCE)\Foundation\Core\Dxe
-  $(DEST_DIR)\
+  ../Inc
+  ../Library
+  $(EDK_SOURCE)/Foundation
+  $(EDK_SOURCE)/Foundation/Include
+  $(EDK_SOURCE)/Foundation/Include/IndustryStandard
+  $(EDK_SOURCE)/Foundation/Efi
+  $(EDK_SOURCE)/Foundation/Efi/Include
+  $(EDK_SOURCE)/Foundation/FrameWork
+  $(EDK_SOURCE)/Foundation/FrameWork/Include
+  $(EDK_SOURCE)/Foundation/Core/Dxe
+  $(DEST_DIR./
 [libraries.common]
   EfiShellLib
   EdkProtocolLib
@@ -63,8 +63,15 @@
   EdkGuidLib
   EdkFrameworkGuidLib
   EfiGuidLib
+
 [nmake.common]
   IMAGE_ENTRY_POINT=GuidMain
-  C_STD_FLAGS = $(C_STD_FLAGS) /DSTRING_ARRAY_NAME=$(BASE_NAME)Strings
+
+[nmake.IA32, nmake.EBC, nmake.X64, nmake.IPF]
+  C_STD_FLAGS = $(C_STD_FLAGS) /DSTRING_ARRAY_NAME=$(BASE_NAME)Strings 
   C_STD_FLAGS = $(C_STD_FLAGS) /DSTRING_DEFINES_FILE=\"$(BASE_NAME)StrDefs.h\"
   C_STD_FLAGS = $(C_STD_FLAGS) /DEFI_BOOTSHELL
+
+[nmake.ARM, nmake.AARCH64]
+  C_STD_FLAGS = $(C_STD_FLAGS) -DEFI_BOOTSHELL
+ 
\ No newline at end of file
diff --git a/hexedit/heditor.h b/hexedit/heditor.h
index 09196d6..74a3160 100644
--- a/hexedit/heditor.h
+++ b/hexedit/heditor.h
@@ -39,7 +39,7 @@ Abstract:
 #include "libinputbar.h"
 #include "libmenubar.h"
 
-#include "libmisc.h"
+#include "libMisc.h"
 
 #include "libclipboard.h"
 
@@ -52,9 +52,10 @@ extern HEFI_EDITOR_GLOBAL_EDITOR  HMainEditor;
 extern BOOLEAN                    HEditorFirst;
 extern BOOLEAN                    HEditorExit;
 
-extern EFI_HII_HANDLE             HiiHandle;
+extern EFI_HII_HANDLE             gHexEditHiiHandle;
 #if (EFI_SPECIFICATION_VERSION < 0x0002000A)
 extern EFI_HII_PROTOCOL           *Hii;
 #endif
 
 #endif // _HEDITOR_H
+
diff --git a/hexedit/heditortype.h b/hexedit/heditortype.h
index 59317a9..d3936d0 100644
--- a/hexedit/heditortype.h
+++ b/hexedit/heditortype.h
@@ -30,7 +30,7 @@ Abstract:
 #define EDITOR_NAME           L"EFI Hex Editor\0"
 #define EDITOR_VERSION        L"0.99\0"
 
-#define EFI_EDITOR_LINE_LIST  'eell'
+#define EFI_EDITOR_LINE_LIST  EFI_SIGNATURE_32 ('e','e','l','l')
 
 #define FILE_ATTRIBUTES       EFI_FILE_MODE_READ | EFI_FILE_MODE_WRITE | EFI_FILE_MODE_CREATE
 #define FILE_READ_WRITE       EFI_FILE_MODE_READ | EFI_FILE_MODE_WRITE
@@ -147,8 +147,8 @@ typedef struct _HEFI_EDITOR_MENU_ITEM {
 } HEFI_EDITOR_MENU_ITEM;
 
 typedef struct {
-  UINT32  Foreground : 4;
-  UINT32  Background : 4;
+  UINT8  Foreground : 4;
+  UINT8  Background : 4;
 } HEFI_EDITOR_COLOR_ATTRIBUTES;
 
 typedef union {
@@ -251,3 +251,4 @@ typedef struct {
 } HEFI_EDITOR_GLOBAL_EDITOR;
 
 #endif
+
diff --git a/hexedit/hexedit.inf b/hexedit/hexedit.inf
index cf89b9e..aa44590 100644
--- a/hexedit/hexedit.inf
+++ b/hexedit/hexedit.inf
@@ -25,7 +25,7 @@ FILE_GUID            = A5A41A42-5B2B-4de6-9556-DDC6DC31231C
 COMPONENT_TYPE       = APPLICATION
 
 [sources.common]
-  ..\ShCommonStrings.uni
+  ../ShCommonStrings.uni
   HexeditStrings.uni
   heditor.h
   heditortype.h
@@ -45,17 +45,17 @@ COMPONENT_TYPE       = APPLICATION
 
 [includes.common]
   .
-  ..\Inc
-  ..\Library
-  $(EDK_SOURCE)\Foundation
-  $(EDK_SOURCE)\Foundation\Include
-  $(EDK_SOURCE)\Foundation\Include\IndustryStandard
-  $(EDK_SOURCE)\Foundation\Efi
-  $(EDK_SOURCE)\Foundation\Efi\Include
-  $(EDK_SOURCE)\Foundation\FrameWork
-  $(EDK_SOURCE)\Foundation\FrameWork\Include
-  $(EDK_SOURCE)\Foundation\Core\Dxe
-  $(DEST_DIR)\
+  ../Inc
+  ../Library
+  $(EDK_SOURCE)/Foundation
+  $(EDK_SOURCE)/Foundation/Include
+  $(EDK_SOURCE)/Foundation/Include/IndustryStandard
+  $(EDK_SOURCE)/Foundation/Efi
+  $(EDK_SOURCE)/Foundation/Efi/Include
+  $(EDK_SOURCE)/Foundation/FrameWork
+  $(EDK_SOURCE)/Foundation/FrameWork/Include
+  $(EDK_SOURCE)/Foundation/Core/Dxe
+  $(DEST_DIR./
 
 [libraries.common]  
   EfiShellLib
@@ -75,11 +75,14 @@ COMPONENT_TYPE       = APPLICATION
 # we will specify some additional DEFINEs on the compile command line.
 #
 [nmake.common]
-  C_PROJ_FLAGS = $(C_PROJ_FLAGS) /Zm500
   IMAGE_ENTRY_POINT=InitializeEFIHexEditor
+
+[nmake.IA32, nmake.EBC, nmake.X64, nmake.IPF]
+  C_PROJ_FLAGS = $(C_PROJ_FLAGS) /Zm500
   C_STD_FLAGS = $(C_STD_FLAGS) /DSTRING_ARRAY_NAME=$(BASE_NAME)Strings 
   C_STD_FLAGS = $(C_STD_FLAGS) /DSTRING_DEFINES_FILE=\"$(BASE_NAME)StrDefs.h\"
   C_STD_FLAGS = $(C_STD_FLAGS) /DEFI_BOOTSHELL
 
-
+[nmake.ARM, nmake.AARCH64]
+  C_STD_FLAGS = $(C_STD_FLAGS) -DEFI_BOOTSHELL
  
\ No newline at end of file
diff --git a/hexedit/libBufferImage.c b/hexedit/libBufferImage.c
index 8a91058..2481dd3 100644
--- a/hexedit/libBufferImage.c
+++ b/hexedit/libBufferImage.c
@@ -203,6 +203,9 @@ Returns:
   case MEM_BUFFER:
     HMemImageBackup ();
     break;
+
+  case NO_BUFFER:
+    break;
   }
 
   return EFI_SUCCESS;
@@ -587,7 +590,7 @@ HBufferImageRestoreMousePosition (
   UINT8                   Value;
   BOOLEAN                 HighBits;
 
-  Line = NULL;
+  Line     = NULL;
   if (HMainEditor.MouseSupported) {
 
     if (HBufferImageMouseNeedRefresh) {
@@ -610,6 +613,7 @@ HBufferImageRestoreMousePosition (
       // backup the old screen attributes
       //
       Orig                  = HMainEditor.ColorAttributes;
+      New.Data              = 0;
       New.Colors.Foreground = Orig.Colors.Background;
       New.Colors.Background = Orig.Colors.Foreground;
 
@@ -801,10 +805,10 @@ Returns:
   UINTN                   StartRow;
   UINTN                   EndRow;
   UINTN                   FStartRow;
-  UINTN                   FEndRow;
   UINTN                   Tmp;
 
   Orig                  = HMainEditor.ColorAttributes;
+  New.Data              = 0;
   New.Colors.Foreground = Orig.Colors.Background;
   New.Colors.Background = Orig.Colors.Foreground;
 
@@ -870,7 +874,6 @@ Returns:
       }
 
       FStartRow = StartRow;
-      FEndRow   = EndRow;
 
       StartRow  = TEXT_START_ROW + StartRow - HBufferImage.LowVisibleRow;
       EndRow    = TEXT_START_ROW + EndRow - HBufferImage.LowVisibleRow;
@@ -980,6 +983,10 @@ HBufferImageRead (
   case MEM_BUFFER:
     Status = HMemImageRead (MemOffset, MemSize, Recover);
     break;
+
+  case NO_BUFFER:
+    Status = EFI_UNSUPPORTED;
+    break;
   }
 
   if (EFI_ERROR (Status)) {
@@ -1030,6 +1037,10 @@ HBufferImageSave (
   case MEM_BUFFER:
     Status = HMemImageSave (MemOffset, MemSize);
     break;
+
+  case NO_BUFFER:
+    Status = EFI_UNSUPPORTED;
+    break;
   }
 
   if (EFI_ERROR (Status)) {
@@ -1967,14 +1978,11 @@ Returns:
 
 --*/
 {
-  HEFI_EDITOR_LINE  *Line;
   UINTN             FRow;
   UINTN             FCol;
   UINTN             Gap;
   INTN              Retreat;
 
-  Line  = HBufferImage.CurrentLine;
-
   FRow  = HBufferImage.BufferPosition.Row;
   FCol  = HBufferImage.BufferPosition.Column;
 
@@ -1996,7 +2004,7 @@ Returns:
   //
   // get correct line
   //
-  Line = HMoveLine (Retreat);
+  HMoveLine (Retreat);
 
   FRow -= Gap;
 
@@ -2025,13 +2033,10 @@ Returns:
 
 --*/
 {
-  HEFI_EDITOR_LINE  *Line;
   UINTN             FRow;
   UINTN             FCol;
   BOOLEAN           HighBits;
 
-  Line = HBufferImage.CurrentLine;
-
   //
   // curosr will at the high bit
   //
@@ -2157,7 +2162,6 @@ Returns:
 
   HEFI_EDITOR_LINE  *Line;
   EFI_LIST_ENTRY    *Link;
-  UINTN             StartRow;
 
   UINTN             OldFCol;
   UINTN             OldFRow;
@@ -2167,11 +2171,6 @@ Returns:
 
   EFI_STATUS        Status;
 
-  //
-  // get the line that start position is at
-  //
-  StartRow  = Pos / 0x10;
-
   Size      = HBufferImageGetTotalSize ();
 
   if (Size < Count) {
@@ -2300,7 +2299,6 @@ Returns:
   HEFI_EDITOR_LINE  *Line;
 
   EFI_LIST_ENTRY    *Link;
-  UINTN             StartRow;
 
   UINTN             OldFCol;
   UINTN             OldFRow;
@@ -2308,11 +2306,6 @@ Returns:
 
   UINTN             NewPos;
 
-  //
-  // get the line that start position is at
-  //
-  StartRow  = Pos / 0x10;
-
   Size      = HBufferImageGetTotalSize ();
 
   //
diff --git a/hexedit/libEditor.c b/hexedit/libEditor.c
index f511020..ac085b7 100644
--- a/hexedit/libEditor.c
+++ b/hexedit/libEditor.c
@@ -20,7 +20,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 
 --*/
 
-#include "Heditor.h"
+#include "heditor.h"
 
 HEFI_EDITOR_COLOR_ATTRIBUTES    HOriginalColors;
 INTN                            HOriginalMode;
@@ -136,7 +136,7 @@ Returns:
   Status = BS->HandleProtocol (
                 In,
                 &gEfiSimplePointerProtocolGuid,
-                &HMainEditor.MouseInterface
+                (VOID**)&HMainEditor.MouseInterface
                 );
   if (EFI_ERROR (Status)) {
     //
@@ -159,7 +159,7 @@ Returns:
         Status = BS->HandleProtocol (
                       HandleBuffer[Index],
                       &gEfiSimplePointerProtocolGuid,
-                      &HMainEditor.MouseInterface
+                      (VOID**)&HMainEditor.MouseInterface
                       );
         if (!EFI_ERROR (Status)) {
           break;
@@ -182,37 +182,37 @@ Returns:
   //
   Status = HMainTitleBarInit ();
   if (EFI_ERROR (Status)) {
-    PrintToken (STRING_TOKEN (STR_HEXEDIT_LIBEDITOR_MAINEDITOR_TITLE), HiiHandle);
+    PrintToken (STRING_TOKEN (STR_HEXEDIT_LIBEDITOR_MAINEDITOR_TITLE), gHexEditHiiHandle);
     return EFI_LOAD_ERROR;
   }
 
   Status = HMainMenuBarInit ();
   if (EFI_ERROR (Status)) {
-    PrintToken (STRING_TOKEN (STR_HEXEDIT_LIBEDITOR_MAINEDITOR_MAINMENU), HiiHandle);
+    PrintToken (STRING_TOKEN (STR_HEXEDIT_LIBEDITOR_MAINEDITOR_MAINMENU), gHexEditHiiHandle);
     return EFI_LOAD_ERROR;
   }
 
   Status = HMainStatusBarInit ();
   if (EFI_ERROR (Status)) {
-    PrintToken (STRING_TOKEN (STR_HEXEDIT_LIBEDITOR_MAINEDITOR_STATUS), HiiHandle);
+    PrintToken (STRING_TOKEN (STR_HEXEDIT_LIBEDITOR_MAINEDITOR_STATUS), gHexEditHiiHandle);
     return EFI_LOAD_ERROR;
   }
 
   Status = HMainInputBarInit ();
   if (EFI_ERROR (Status)) {
-    PrintToken (STRING_TOKEN (STR_HEXEDIT_LIBEDITOR_MAINEDITOR_INPUTBAR), HiiHandle);
+    PrintToken (STRING_TOKEN (STR_HEXEDIT_LIBEDITOR_MAINEDITOR_INPUTBAR), gHexEditHiiHandle);
     return EFI_LOAD_ERROR;
   }
 
   Status = HBufferImageInit ();
   if (EFI_ERROR (Status)) {
-    PrintToken (STRING_TOKEN (STR_HEXEDIT_LIBEDITOR_MAINEDITOR_BUFFERIMAGE), HiiHandle);
+    PrintToken (STRING_TOKEN (STR_HEXEDIT_LIBEDITOR_MAINEDITOR_BUFFERIMAGE), gHexEditHiiHandle);
     return EFI_LOAD_ERROR;
   }
 
   Status = HClipBoardInit ();
   if (EFI_ERROR (Status)) {
-    PrintToken (STRING_TOKEN (STR_HEXEDIT_LIBEDITOR_MAINEDITOR_CLIPBOARD), HiiHandle);
+    PrintToken (STRING_TOKEN (STR_HEXEDIT_LIBEDITOR_MAINEDITOR_CLIPBOARD), gHexEditHiiHandle);
     return EFI_LOAD_ERROR;
   }
   //
@@ -259,32 +259,32 @@ Returns:
   //
   Status = HMainTitleBarCleanup ();
   if (EFI_ERROR (Status)) {
-    PrintToken (STRING_TOKEN (STR_HEXEDIT_LIBEDITOR_TITLEBAR_CLEAN), HiiHandle);
+    PrintToken (STRING_TOKEN (STR_HEXEDIT_LIBEDITOR_TITLEBAR_CLEAN), gHexEditHiiHandle);
   }
 
   Status = HMainMenuBarCleanup ();
   if (EFI_ERROR (Status)) {
-    PrintToken (STRING_TOKEN (STR_HEXEDIT_LIBEDITOR_MENUBAR_CLEAN), HiiHandle);
+    PrintToken (STRING_TOKEN (STR_HEXEDIT_LIBEDITOR_MENUBAR_CLEAN), gHexEditHiiHandle);
   }
 
   Status = HMainStatusBarCleanup ();
   if (EFI_ERROR (Status)) {
-    PrintToken (STRING_TOKEN (STR_HEXEDIT_LIBEDITOR_STATUSBAR_CLEAN), HiiHandle);
+    PrintToken (STRING_TOKEN (STR_HEXEDIT_LIBEDITOR_STATUSBAR_CLEAN), gHexEditHiiHandle);
   }
 
   Status = HMainInputBarCleanup ();
   if (EFI_ERROR (Status)) {
-    PrintToken (STRING_TOKEN (STR_HEXEDIT_LIBEDITOR_INPUTBAR_CLEAN), HiiHandle);
+    PrintToken (STRING_TOKEN (STR_HEXEDIT_LIBEDITOR_INPUTBAR_CLEAN), gHexEditHiiHandle);
   }
 
   Status = HBufferImageCleanup ();
   if (EFI_ERROR (Status)) {
-    PrintToken (STRING_TOKEN (STR_HEXEDIT_LIBEDITOR_BUFFERIMAGE_CLEAN), HiiHandle);
+    PrintToken (STRING_TOKEN (STR_HEXEDIT_LIBEDITOR_BUFFERIMAGE_CLEAN), gHexEditHiiHandle);
   }
 
   Status = HClipBoardCleanup ();
   if (EFI_ERROR (Status)) {
-    PrintToken (STRING_TOKEN (STR_HEXEDIT_LIBEDITOR_CLIPBOARD_CLEAN), HiiHandle);
+    PrintToken (STRING_TOKEN (STR_HEXEDIT_LIBEDITOR_CLIPBOARD_CLEAN), gHexEditHiiHandle);
   }
   //
   // restore old mode
@@ -732,6 +732,9 @@ Returns:
         case MEM_BUFFER:
           OldSize = HBufferImage.MemImage->Size;
           break;
+
+	default:
+          break;
         }
 
         if (LengthChange == FALSE) {
diff --git a/hexedit/libInputBar.c b/hexedit/libInputBar.c
index 3a4cc7e..1cb911f 100644
--- a/hexedit/libInputBar.c
+++ b/hexedit/libInputBar.c
@@ -169,8 +169,6 @@ Returns:
   UINTN                   Size;
   EFI_STATUS              Status;
   BOOLEAN                 NoDisplay;
-  UINTN                   Limit;
-  UINTN                   PromptLen;
 
   //
   // variable initialization
@@ -190,6 +188,7 @@ Returns:
   // back up the old screen attributes
   //
   Orig                  = HMainEditor.ColorAttributes;
+  New.Data              = 0;
   New.Colors.Foreground = Orig.Colors.Background;
   New.Colors.Background = Orig.Colors.Foreground;
 
@@ -201,13 +200,7 @@ Returns:
   HEditorClearLine (INPUT_BAR_LOCATION);
 
   Out->SetCursorPosition (Out, 0, INPUT_BAR_LOCATION - 1);
-  PrintToken (STRING_TOKEN (STR_HEXEDIT_LIBINPUTBAR_MAININPUTBAR), HiiHandle, HMainInputBar.Prompt);
-
-  //
-  // that's the maximum input length that can be displayed on screen
-  //
-  PromptLen = StrLen (HMainInputBar.Prompt);
-  Limit     = HMainEditor.ScreenSize.Column - PromptLen;
+  PrintToken (STRING_TOKEN (STR_HEXEDIT_LIBINPUTBAR_MAININPUTBAR), gHexEditHiiHandle, HMainInputBar.Prompt);
 
   //
   // this is a selection prompt, cursor will stay in edit area
diff --git a/hexedit/libMemImage.c b/hexedit/libMemImage.c
index 407bb2e..2fed45b 100644
--- a/hexedit/libMemImage.c
+++ b/hexedit/libMemImage.c
@@ -91,7 +91,7 @@ Returns:
   Status = BS->LocateProtocol (
                 &gEfiPciRootBridgeIoProtocolGuid,
                 NULL,
-                &HMemImage.IoFncs
+                (VOID**)&HMemImage.IoFncs
                 );
   if (Status == EFI_NOT_FOUND) {
     //
@@ -225,9 +225,6 @@ Returns:
   CHAR16                          *Str;
   HEFI_EDITOR_LINE                *Line;
 
-  HEFI_EDITOR_ACTIVE_BUFFER_TYPE  BufferTypeBackup;
-
-  BufferTypeBackup        = HBufferImage.BufferType;
   HBufferImage.BufferType = MEM_BUFFER;
 
   Buffer                  = AllocatePool (Size);
@@ -344,8 +341,6 @@ Returns:
   EFI_STATUS                      Status;
   VOID                            *Buffer;
 
-  HEFI_EDITOR_ACTIVE_BUFFER_TYPE  BufferTypeBackup;
-
   //
   // not modified, so directly return
   //
@@ -353,7 +348,6 @@ Returns:
     return EFI_SUCCESS;
   }
 
-  BufferTypeBackup        = HBufferImage.BufferType;
   HBufferImage.BufferType = MEM_BUFFER;
 
   Buffer                  = AllocatePool (Size);
diff --git a/hexedit/libMenuBar.c b/hexedit/libMenuBar.c
index 5ecb694..00bfa99 100644
--- a/hexedit/libMenuBar.c
+++ b/hexedit/libMenuBar.c
@@ -222,7 +222,6 @@ Returns:
   CHAR16                *NameString;
   CHAR16                *FunctionKeyString;
   UINTN                 BufferSize;
-  EFI_STATUS            Status;
 
   //
   // variable initialization
@@ -255,9 +254,9 @@ Returns:
     FunctionKeyString = AllocatePool (BufferSize);
 
 #if (EFI_SPECIFICATION_VERSION < 0x0002000A)
-    Status            = Hii->GetString (Hii, HiiHandle, Item->NameToken, FALSE, NULL, &BufferSize, NameString);
+    Hii->GetString (Hii, gHexEditHiiHandle, Item->NameToken, FALSE, NULL, &BufferSize, NameString);
 #else
-    Status            = LibGetString (HiiHandle, Item->NameToken, NameString, &BufferSize);
+    LibGetString (gHexEditHiiHandle, Item->NameToken, NameString, &BufferSize);
 #endif
 
     Width             = max ((StrLen (NameString) + 6), 18);
@@ -267,9 +266,9 @@ Returns:
     }
 
 #if (EFI_SPECIFICATION_VERSION < 0x0002000A)
-    Status = Hii->GetString (Hii, HiiHandle, Item->FunctionKeyToken, FALSE, NULL, &BufferSize, FunctionKeyString);
+    Hii->GetString (Hii, gHexEditHiiHandle, Item->FunctionKeyToken, FALSE, NULL, &BufferSize, FunctionKeyString);
 #else
-    Status = LibGetString (HiiHandle, Item->FunctionKeyToken, FunctionKeyString, &BufferSize);
+    LibGetString (gHexEditHiiHandle, Item->FunctionKeyToken, FunctionKeyString, &BufferSize);
 #endif
     if (Index >= 10) {
       PrintAt (Col - 1, Row - 1, L"%E%s%N %H%s%N  ", FunctionKeyString, NameString);
@@ -1138,7 +1137,6 @@ Returns:
         // the file won't be saved
         //
         return EFI_SUCCESS;
-        break;
 
       case L'c':
       case L'C':
@@ -1567,7 +1565,6 @@ Returns:
 --*/
 {
   UINTN             Index;
-  HEFI_EDITOR_LINE  *Line;
   EFI_LIST_ENTRY    *Link;
   UINT8             *Buffer;
   UINTN             Count;
@@ -1592,8 +1589,6 @@ Returns:
     Link = Link->Flink;
   }
 
-  Line    = CR (Link, HEFI_EDITOR_LINE, Link, EFI_EDITOR_LINE_LIST);
-
   Count   = HMainEditor.SelectEnd - HMainEditor.SelectStart + 1;
   Buffer  = AllocatePool (Count);
   if (Buffer == NULL) {
diff --git a/hexedit/libMisc.h b/hexedit/libMisc.h
index 979a7f0..5c2216b 100644
--- a/hexedit/libMisc.h
+++ b/hexedit/libMisc.h
@@ -20,7 +20,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 #ifndef _LIB_MISC_H_
 #define _LIB_MISC_H_
 
-#include "Heditortype.h"
+#include "heditortype.h"
 
 VOID
 HEditorClearLine (
@@ -108,3 +108,4 @@ HXtoi (
   );
 
 #endif
+
diff --git a/hexedit/libStatusBar.c b/hexedit/libStatusBar.c
index 59d3d4b..278b3ba 100644
--- a/hexedit/libStatusBar.c
+++ b/hexedit/libStatusBar.c
@@ -173,6 +173,7 @@ Returns:
   // back up the screen attributes
   //
   Orig                  = HMainEditor.ColorAttributes;
+  New.Data              = 0;
   New.Colors.Foreground = Orig.Colors.Background;
   New.Colors.Background = Orig.Colors.Foreground;
 
diff --git a/hexedit/libTitleBar.c b/hexedit/libTitleBar.c
index 9e7b9e9..cf010f5 100644
--- a/hexedit/libTitleBar.c
+++ b/hexedit/libTitleBar.c
@@ -166,6 +166,7 @@ Returns:
   // backup the old screen attributes
   //
   Orig                  = HMainEditor.ColorAttributes;
+  New.Data              = 0;
   New.Colors.Foreground = Orig.Colors.Background;
   New.Colors.Background = Orig.Colors.Foreground;
 
@@ -212,7 +213,7 @@ Returns:
     // the space for file name is 35 characters
     //
     if (StrLen (FileNameTmp) <= 35) {
-      PrintToken (STRING_TOKEN (STR_HEXEDIT_LIBTITLEBAR_MAINEDITOR), HiiHandle, FileNameTmp);
+      PrintToken (STRING_TOKEN (STR_HEXEDIT_LIBTITLEBAR_MAINEDITOR), gHexEditHiiHandle, FileNameTmp);
 
       for (Index = StrLen (FileNameTmp); Index < 35; Index++) {
         Print (L" ");
@@ -220,7 +221,7 @@ Returns:
 
     } else {
       for (Index = 0; Index < 32; Index++) {
-        PrintToken (STRING_TOKEN (STR_HEXEDIT_LIBTITLEBAR_MAINEDITOR_C), HiiHandle, FileNameTmp[Index]);
+        PrintToken (STRING_TOKEN (STR_HEXEDIT_LIBTITLEBAR_MAINEDITOR_C), gHexEditHiiHandle, FileNameTmp[Index]);
       }
       //
       // print "..."
@@ -234,14 +235,14 @@ Returns:
     if (StrLen (HMainEditor.BufferImage->DiskImage->Name) <= 9) {
       PrintToken (
         STRING_TOKEN (STR_HEXEDIT_LIBTITLEBAR_MAINEDITOR),
-        HiiHandle,
+        gHexEditHiiHandle,
         HMainEditor.BufferImage->DiskImage->Name
         );
     } else {
       for (Index = 0; Index < 6; Index++) {
         PrintToken (
           STRING_TOKEN (STR_HEXEDIT_LIBTITLEBAR_MAINEDITOR_C),
-          HiiHandle,
+          gHexEditHiiHandle,
           HMainEditor.BufferImage->DiskImage->Name[Index]
           );
       }
@@ -253,7 +254,7 @@ Returns:
 
     PrintToken (
       STRING_TOKEN (STR_HEXEDIT_LIBTITLEBAR_MAINEDITOR_TWOVARS),
-      HiiHandle,
+      gHexEditHiiHandle,
       HMainEditor.BufferImage->DiskImage->Offset,
       HMainEditor.BufferImage->DiskImage->Offset + HMainEditor.BufferImage->DiskImage->Size - 1
       );
@@ -269,7 +270,7 @@ Returns:
   case MEM_BUFFER:
     PrintToken (
       STRING_TOKEN (STR_HEXEDIT_LIBTITLEBAR_MAINEDITOR_TWOVARS),
-      HiiHandle,
+      gHexEditHiiHandle,
       HMainEditor.BufferImage->MemImage->Offset,
       HMainEditor.BufferImage->MemImage->Offset + HMainEditor.BufferImage->MemImage->Size - 1
       );
@@ -280,21 +281,26 @@ Returns:
 
     break;
 
+  default:
+    break;
   }
   //
   // 9 characters
   //
   switch (HMainEditor.BufferImage->BufferType) {
   case FILE_BUFFER:
-    PrintToken (STRING_TOKEN (STR_HEXEDIT_LIBTITLEBAR_FILE), HiiHandle);
+    PrintToken (STRING_TOKEN (STR_HEXEDIT_LIBTITLEBAR_FILE), gHexEditHiiHandle);
     break;
 
   case DISK_BUFFER:
-    PrintToken (STRING_TOKEN (STR_HEXEDIT_LIBTITLEBAR_DISK), HiiHandle);
+    PrintToken (STRING_TOKEN (STR_HEXEDIT_LIBTITLEBAR_DISK), gHexEditHiiHandle);
     break;
 
   case MEM_BUFFER:
-    PrintToken (STRING_TOKEN (STR_HEXEDIT_LIBTITLEBAR_MEM), HiiHandle);
+    PrintToken (STRING_TOKEN (STR_HEXEDIT_LIBTITLEBAR_MEM), gHexEditHiiHandle);
+    break;
+
+  default:
     break;
   }
   //
diff --git a/hexedit/libbufferimage.h b/hexedit/libbufferimage.h
index 71b48c2..ed8c673 100644
--- a/hexedit/libbufferimage.h
+++ b/hexedit/libbufferimage.h
@@ -253,3 +253,4 @@ HBufferImageIsInSelectedArea (
   );
 
 #endif
+
diff --git a/hexedit/libclipboard.h b/hexedit/libclipboard.h
index 1604fc5..766f089 100644
--- a/hexedit/libclipboard.h
+++ b/hexedit/libclipboard.h
@@ -43,3 +43,4 @@ HClipBoardGet (
   );
 
 #endif
+
diff --git a/hexedit/libdiskimage.c b/hexedit/libdiskimage.c
index 7e11ad0..5b67a76 100644
--- a/hexedit/libdiskimage.c
+++ b/hexedit/libdiskimage.c
@@ -228,11 +228,7 @@ Returns:
   UINTN                           Bytes;
 
   HEFI_EDITOR_LINE                *Line;
-  UINT64                          ByteOffset;
 
-  HEFI_EDITOR_ACTIVE_BUFFER_TYPE  BufferTypeBackup;
-
-  BufferTypeBackup        = HBufferImage.BufferType;
   HBufferImage.BufferType = DISK_BUFFER;
 
   DevicePath              = (EFI_DEVICE_PATH_PROTOCOL *) ShellGetMap (DeviceName);
@@ -246,7 +242,7 @@ Returns:
   Status = LibDevicePathToInterface (
             &gEfiBlockIoProtocolGuid,
             DevicePath,
-            &BlkIo
+            (VOID**)&BlkIo
             );
   if (EFI_ERROR (Status)) {
     HMainStatusBarSetStatusString (L"Read Disk Failed");
@@ -269,8 +265,6 @@ Returns:
     return EFI_OUT_OF_RESOURCES;
   }
 
-  ByteOffset = MultU64x32 (Offset, BlkIo->Media->BlockSize);
-
   //
   // read from disk
   //
@@ -405,10 +399,6 @@ Returns:
   VOID                            *Buffer;
   UINTN                           Bytes;
 
-  UINT64                          ByteOffset;
-
-  HEFI_EDITOR_ACTIVE_BUFFER_TYPE  BufferTypeBackup;
-
   //
   // if not modified, directly return
   //
@@ -416,7 +406,6 @@ Returns:
     return EFI_SUCCESS;
   }
 
-  BufferTypeBackup        = HBufferImage.BufferType;
   HBufferImage.BufferType = DISK_BUFFER;
 
   DevicePath              = (EFI_DEVICE_PATH_PROTOCOL *) ShellGetMap (DeviceName);
@@ -427,7 +416,7 @@ Returns:
   Status = LibDevicePathToInterface (
             &gEfiBlockIoProtocolGuid,
             DevicePath,
-            &BlkIo
+            (VOID**)&BlkIo
             );
   if (EFI_ERROR (Status)) {
     return Status;
@@ -448,8 +437,6 @@ Returns:
     return Status;
   }
 
-  ByteOffset = MultU64x32 (Offset, BlkIo->Media->BlockSize);
-
   //
   // write the buffer to disk
   //
diff --git a/hexedit/libdiskimage.h b/hexedit/libdiskimage.h
index 505c857..4effe6c 100644
--- a/hexedit/libdiskimage.h
+++ b/hexedit/libdiskimage.h
@@ -58,3 +58,4 @@ HDiskImageSave (
   );
 
 #endif
+
diff --git a/hexedit/libeditor.h b/hexedit/libeditor.h
index 6c2e3d9..573eca6 100644
--- a/hexedit/libeditor.h
+++ b/hexedit/libeditor.h
@@ -47,3 +47,4 @@ HMainEditorBackup (
   );
 
 #endif
+
diff --git a/hexedit/libfileimage.h b/hexedit/libfileimage.h
index baff90c..5ae42b3 100644
--- a/hexedit/libfileimage.h
+++ b/hexedit/libfileimage.h
@@ -59,3 +59,4 @@ HFileImageSave (
   );
 
 #endif
+
diff --git a/hexedit/libinputbar.h b/hexedit/libinputbar.h
index 24a8973..f7f14ca 100644
--- a/hexedit/libinputbar.h
+++ b/hexedit/libinputbar.h
@@ -44,3 +44,4 @@ HMainInputBarSetStringSize (
   );
 
 #endif
+
diff --git a/hexedit/libmemimage.h b/hexedit/libmemimage.h
index 98c0c08..7cae8b7 100644
--- a/hexedit/libmemimage.h
+++ b/hexedit/libmemimage.h
@@ -55,3 +55,4 @@ HMemImageSave (
   );
 
 #endif
+
diff --git a/hexedit/libmenubar.h b/hexedit/libmenubar.h
index e3766e2..2ee2033 100644
--- a/hexedit/libmenubar.h
+++ b/hexedit/libmenubar.h
@@ -20,7 +20,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 #ifndef _LIB_MENU_BAR_H_
 #define _LIB_MENU_BAR_H_
 
-#include "Heditortype.h"
+#include "heditortype.h"
 
 EFI_STATUS
 HMainMenuBarInit (
@@ -94,3 +94,4 @@ HMainCommandExit (
   );
 
 #endif
+
diff --git a/hexedit/libstatusbar.h b/hexedit/libstatusbar.h
index eade183..6ee05a3 100644
--- a/hexedit/libstatusbar.h
+++ b/hexedit/libstatusbar.h
@@ -55,3 +55,4 @@ HMainStatusBarBackup (
   );
 
 #endif
+
diff --git a/hexedit/libtitlebar.h b/hexedit/libtitlebar.h
index b6045ab..948cd43 100644
--- a/hexedit/libtitlebar.h
+++ b/hexedit/libtitlebar.h
@@ -46,3 +46,4 @@ HMainTitleBarBackup (
   );
 
 #endif
+
diff --git a/hexedit/main.c b/hexedit/main.c
index 9c2a032..43340d8 100644
--- a/hexedit/main.c
+++ b/hexedit/main.c
@@ -27,7 +27,7 @@ extern UINT8      STRING_ARRAY_NAME[];
 //
 // Global Variables
 //
-EFI_HII_HANDLE    HiiHandle;
+EFI_HII_HANDLE    gHexEditHiiHandle;
 #if (EFI_SPECIFICATION_VERSION < 0x0002000A)
 EFI_HII_PROTOCOL  *Hii;
 #endif
@@ -67,7 +67,7 @@ SHELL_VAR_CHECK_ITEM    HexeditCheckList[] = {
     NULL,
     0,
     0,
-    0
+    (SHELL_VAR_CHECK_FLAG_TYPE)0
   }
 };
 
@@ -93,10 +93,10 @@ PrintUsage (
   VOID
   )
 {
-  PrintToken (STRING_TOKEN (STR_HEXEDIT_USAGE), HiiHandle);
-  PrintToken (STRING_TOKEN (STR_HEXEDIT_FILENAME), HiiHandle);
-  PrintToken (STRING_TOKEN (STR_HEXEDIT_DISKNAME), HiiHandle);
-  PrintToken (STRING_TOKEN (STR_HEXEDIT_OFFSET_SIZE), HiiHandle);
+  PrintToken (STRING_TOKEN (STR_HEXEDIT_USAGE), gHexEditHiiHandle);
+  PrintToken (STRING_TOKEN (STR_HEXEDIT_FILENAME), gHexEditHiiHandle);
+  PrintToken (STRING_TOKEN (STR_HEXEDIT_DISKNAME), gHexEditHiiHandle);
+  PrintToken (STRING_TOKEN (STR_HEXEDIT_OFFSET_SIZE), gHexEditHiiHandle);
   Print (L"\n\n");
 }
 
@@ -147,7 +147,7 @@ Returns:
   EFI_SHELL_APP_INIT (ImageHandle, SystemTable);
 
 #if (EFI_SPECIFICATION_VERSION < 0x0002000A)
-  Status = LibLocateProtocol (&gEfiHiiProtocolGuid, &Hii);
+  Status = LibLocateProtocol (&gEfiHiiProtocolGuid, (VOID**)&Hii);
   if (EFI_ERROR (Status)) {
     return Status;
   }
@@ -158,12 +158,12 @@ Returns:
   // Register our string package with HII and return the handle to it.
   // If previously registered we will simply receive the handle
   //
-  EFI_SHELL_STR_INIT (HiiHandle, STRING_ARRAY_NAME, EfiHexeditGuid);
+  EFI_SHELL_STR_INIT (gHexEditHiiHandle, STRING_ARRAY_NAME, EfiHexeditGuid);
 
   if (!EFI_PROPER_VERSION (1, 10)) {
     PrintToken (
       STRING_TOKEN (STR_SHELLENV_GNC_COMMAND_NOT_SUPPORT),
-      HiiHandle,
+      gHexEditHiiHandle,
       L"hexedit",
       EFI_VERSION_1_10
       );
@@ -187,17 +187,17 @@ Returns:
     switch (RetCode) {
     case VarCheckConflict:
 
-      PrintToken (STRING_TOKEN (STR_SHELLENV_GNC_FLAG_CONFLICT), HiiHandle, L"hexedit", Useful);
+      PrintToken (STRING_TOKEN (STR_SHELLENV_GNC_FLAG_CONFLICT), gHexEditHiiHandle, L"hexedit", Useful);
       break;
 
     case VarCheckDuplicate:
 
-      PrintToken (STRING_TOKEN (STR_SHELLENV_GNC_DUP_FLAG), HiiHandle, L"hexedit", Useful);
+      PrintToken (STRING_TOKEN (STR_SHELLENV_GNC_DUP_FLAG), gHexEditHiiHandle, L"hexedit", Useful);
       break;
 
     case VarCheckUnknown:
 
-      PrintToken (STRING_TOKEN (STR_SHELLENV_GNC_UNKNOWN_FLAG), HiiHandle, L"hexedit", Useful);
+      PrintToken (STRING_TOKEN (STR_SHELLENV_GNC_UNKNOWN_FLAG), gHexEditHiiHandle, L"hexedit", Useful);
       break;
 
     default:
@@ -220,10 +220,10 @@ Returns:
         ChkPck.FlagCount > 2 ||
         (ChkPck.FlagCount == 2 && LibCheckVarGetFlag (&ChkPck, L"-b") == NULL)
         ) {
-      PrintToken (STRING_TOKEN (STR_SHELLENV_GNC_TOO_MANY), HiiHandle, L"hexedit");
+      PrintToken (STRING_TOKEN (STR_SHELLENV_GNC_TOO_MANY), gHexEditHiiHandle, L"hexedit");
       Status = EFI_INVALID_PARAMETER;
     } else {
-      PrintToken (STRING_TOKEN (STR_HEXEDIT_VERBOSE_HELP), HiiHandle);
+      PrintToken (STRING_TOKEN (STR_HEXEDIT_VERBOSE_HELP), gHexEditHiiHandle);
       Status = EFI_SUCCESS;
     }
 
@@ -233,13 +233,13 @@ Returns:
   Item = LibCheckVarGetFlag (&ChkPck, L"-d");
   if (Item) {
     if (3 < ChkPck.ValueCount) {
-      PrintToken (STRING_TOKEN (STR_SHELLENV_GNC_TOO_MANY), HiiHandle, L"hexedit");
+      PrintToken (STRING_TOKEN (STR_SHELLENV_GNC_TOO_MANY), gHexEditHiiHandle, L"hexedit");
       Status = EFI_INVALID_PARAMETER;
       goto done;
     }
 
     if (3 > ChkPck.ValueCount) {
-      PrintToken (STRING_TOKEN (STR_SHELLENV_GNC_TOO_FEW), HiiHandle, L"hexedit");
+      PrintToken (STRING_TOKEN (STR_SHELLENV_GNC_TOO_FEW), gHexEditHiiHandle, L"hexedit");
       Status = EFI_INVALID_PARAMETER;
       goto done;
     }
@@ -249,7 +249,7 @@ Returns:
     Item    = Item->Next;
     Result  = HXtoi (Item->VarStr, &Offset);
     if (EFI_ERROR (Result)) {
-      PrintToken (STRING_TOKEN (STR_SHELLENV_GNC_INVALID_ARG), HiiHandle, L"hexedit", Item->VarStr);
+      PrintToken (STRING_TOKEN (STR_SHELLENV_GNC_INVALID_ARG), gHexEditHiiHandle, L"hexedit", Item->VarStr);
       Status = EFI_INVALID_PARAMETER;
       goto done;
     }
@@ -257,13 +257,13 @@ Returns:
     Item    = Item->Next;
     Result  = HXtoi (Item->VarStr, &Size);
     if (EFI_ERROR (Result)) {
-      PrintToken (STRING_TOKEN (STR_SHELLENV_GNC_INVALID_ARG), HiiHandle, L"hexedit", Item->VarStr);
+      PrintToken (STRING_TOKEN (STR_SHELLENV_GNC_INVALID_ARG), gHexEditHiiHandle, L"hexedit", Item->VarStr);
       Status = EFI_INVALID_PARAMETER;
       goto done;
     }
 
     if (Offset < 0 || Size <= 0) {
-      PrintToken (STRING_TOKEN (STR_SHELLENV_GNC_INVALID_ARG), HiiHandle, L"hexedit", Item->VarStr);
+      PrintToken (STRING_TOKEN (STR_SHELLENV_GNC_INVALID_ARG), gHexEditHiiHandle, L"hexedit", Item->VarStr);
       Status = EFI_INVALID_PARAMETER;
       goto done;
     }
@@ -274,13 +274,13 @@ Returns:
   Item = LibCheckVarGetFlag (&ChkPck, L"-m");
   if (Item) {
     if (2 < ChkPck.ValueCount) {
-      PrintToken (STRING_TOKEN (STR_SHELLENV_GNC_TOO_MANY), HiiHandle, L"hexedit");
+      PrintToken (STRING_TOKEN (STR_SHELLENV_GNC_TOO_MANY), gHexEditHiiHandle, L"hexedit");
       Status = EFI_INVALID_PARAMETER;
       goto done;
     }
 
     if (2 > ChkPck.ValueCount) {
-      PrintToken (STRING_TOKEN (STR_SHELLENV_GNC_TOO_FEW), HiiHandle, L"hexedit");
+      PrintToken (STRING_TOKEN (STR_SHELLENV_GNC_TOO_FEW), gHexEditHiiHandle, L"hexedit");
       Status = EFI_INVALID_PARAMETER;
       goto done;
     }
@@ -288,7 +288,7 @@ Returns:
     Item    = ChkPck.VarList;
     Result  = HXtoi (Item->VarStr, &Offset);
     if (EFI_ERROR (Result)) {
-      PrintToken (STRING_TOKEN (STR_SHELLENV_GNC_INVALID_ARG), HiiHandle, L"hexedit", Item->VarStr);
+      PrintToken (STRING_TOKEN (STR_SHELLENV_GNC_INVALID_ARG), gHexEditHiiHandle, L"hexedit", Item->VarStr);
       Status = EFI_INVALID_PARAMETER;
       goto done;
     }
@@ -296,20 +296,20 @@ Returns:
     Item    = Item->Next;
     Result  = HXtoi (Item->VarStr, &Size);
     if (EFI_ERROR (Result)) {
-      PrintToken (STRING_TOKEN (STR_SHELLENV_GNC_INVALID_ARG), HiiHandle, L"hexedit", Item->VarStr);
+      PrintToken (STRING_TOKEN (STR_SHELLENV_GNC_INVALID_ARG), gHexEditHiiHandle, L"hexedit", Item->VarStr);
       Status = EFI_INVALID_PARAMETER;
       goto done;
     }
 
     if (Offset < 0 || Size <= 0) {
-      PrintToken (STRING_TOKEN (STR_SHELLENV_GNC_INVALID_ARG), HiiHandle, L"hexedit", Item->VarStr);
+      PrintToken (STRING_TOKEN (STR_SHELLENV_GNC_INVALID_ARG), gHexEditHiiHandle, L"hexedit", Item->VarStr);
       Status = EFI_INVALID_PARAMETER;
       goto done;
     }
 
     LastOffset = (UINT64) Offset + (UINT64) Size - (UINT64) 1;
     if (LastOffset > 0xffffffff) {
-      PrintToken (STRING_TOKEN (STR_SHELLENV_GNC_INVALID_ARG), HiiHandle, L"hexedit", Item->VarStr);
+      PrintToken (STRING_TOKEN (STR_SHELLENV_GNC_INVALID_ARG), gHexEditHiiHandle, L"hexedit", Item->VarStr);
       goto done;
     }
 
@@ -319,13 +319,13 @@ Returns:
   Item = LibCheckVarGetFlag (&ChkPck, L"-f");
   if (Item) {
     if (1 < ChkPck.ValueCount) {
-      PrintToken (STRING_TOKEN (STR_SHELLENV_GNC_TOO_MANY), HiiHandle, L"hexedit");
+      PrintToken (STRING_TOKEN (STR_SHELLENV_GNC_TOO_MANY), gHexEditHiiHandle, L"hexedit");
       Status = EFI_INVALID_PARAMETER;
       goto done;
     }
 
     if (1 > ChkPck.ValueCount) {
-      PrintToken (STRING_TOKEN (STR_SHELLENV_GNC_TOO_FEW), HiiHandle, L"hexedit");
+      PrintToken (STRING_TOKEN (STR_SHELLENV_GNC_TOO_FEW), gHexEditHiiHandle, L"hexedit");
       Status = EFI_INVALID_PARAMETER;
       goto done;
     }
@@ -333,7 +333,7 @@ Returns:
     Item  = ChkPck.VarList;
     Name  = Item->VarStr;
     if (!HIsValidFileName (Name)) {
-      PrintToken (STRING_TOKEN (STR_HEXEDIT_FILE_NAME), HiiHandle);
+      PrintToken (STRING_TOKEN (STR_HEXEDIT_FILE_NAME), gHexEditHiiHandle);
       Status = EFI_INVALID_PARAMETER;
       goto done;
     }
@@ -345,20 +345,20 @@ Returns:
       if (Name != NULL) {
         FreeName  = TRUE;
       } else {
-        PrintToken(STRING_TOKEN (STR_HEXEDIT_INVALID_DIRECTORY), HiiHandle, L"hexedit");
+        PrintToken(STRING_TOKEN (STR_HEXEDIT_INVALID_DIRECTORY), gHexEditHiiHandle, L"hexedit");
         Status = EFI_INVALID_PARAMETER;
         goto done ;
       }
     } else if (1 == ChkPck.ValueCount) {
       Name = ChkPck.VarList->VarStr;
     } else {
-      PrintToken (STRING_TOKEN (STR_SHELLENV_GNC_TOO_MANY), HiiHandle, L"hexedit");
+      PrintToken (STRING_TOKEN (STR_SHELLENV_GNC_TOO_MANY), gHexEditHiiHandle, L"hexedit");
       Status = EFI_INVALID_PARAMETER;
       goto done;
     }
 
     if (!HIsValidFileName (Name)) {
-      PrintToken (STRING_TOKEN (STR_HEXEDIT_FILE_NAME), HiiHandle);
+      PrintToken (STRING_TOKEN (STR_HEXEDIT_FILE_NAME), gHexEditHiiHandle);
       Status = EFI_INVALID_PARAMETER;
       goto done;
     }
@@ -367,7 +367,7 @@ Returns:
   }
 
   if (SI->RedirArgc != 0) {
-    PrintToken (STRING_TOKEN (STR_HEXEDIT_NOREDIRECT), HiiHandle);
+    PrintToken (STRING_TOKEN (STR_HEXEDIT_NOREDIRECT), gHexEditHiiHandle);
     Status = EFI_INVALID_PARAMETER;
     goto done;
   }
@@ -376,7 +376,7 @@ Returns:
   if (EFI_ERROR (Status)) {
     Out->ClearScreen (Out);
     Out->EnableCursor (Out, TRUE);
-    PrintToken (STRING_TOKEN (STR_HEXEDIT_INIT_FAILED), HiiHandle);
+    PrintToken (STRING_TOKEN (STR_HEXEDIT_INIT_FAILED), gHexEditHiiHandle);
     goto done;
   }
 
@@ -421,7 +421,9 @@ Returns:
               FALSE
               );
     break;
-
+  case NEW_FILE:
+    Status = EFI_UNSUPPORTED;
+    break;
   }
 
   if (!EFI_ERROR (Status)) {
@@ -453,19 +455,19 @@ Returns:
   //
   if (Status == EFI_SUCCESS) {
   } else if (Status == EFI_OUT_OF_RESOURCES) {
-    PrintToken (STRING_TOKEN (STR_SHELLENV_GNC_OUT_RESOURCE), HiiHandle, L"hexedit");
+    PrintToken (STRING_TOKEN (STR_SHELLENV_GNC_OUT_RESOURCE), gHexEditHiiHandle, L"hexedit");
   } else {
     if (Buffer != NULL) {
       if (StrCmp (Buffer, L"") != 0) {
         //
         // print out the status string
         //
-        PrintToken (STRING_TOKEN (STR_HEXEDIT_ONE_VAR), HiiHandle, Buffer);
+        PrintToken (STRING_TOKEN (STR_HEXEDIT_ONE_VAR), gHexEditHiiHandle, Buffer);
       } else {
-        PrintToken (STRING_TOKEN (STR_HEXEDIT_UNKNOWN_EDITOR), HiiHandle);
+        PrintToken (STRING_TOKEN (STR_HEXEDIT_UNKNOWN_EDITOR), gHexEditHiiHandle);
       }
     } else {
-      PrintToken (STRING_TOKEN (STR_HEXEDIT_UNKNOWN_EDITOR), HiiHandle);
+      PrintToken (STRING_TOKEN (STR_HEXEDIT_UNKNOWN_EDITOR), gHexEditHiiHandle);
     }
   }
 
diff --git a/inc/shellenv.h b/inc/shellenv.h
index 1334f2c..10b28c9 100644
--- a/inc/shellenv.h
+++ b/inc/shellenv.h
@@ -492,3 +492,4 @@ UnInstallShellEnvironment (
 #endif
 
 #endif // _SHELLENV_H_
+
diff --git a/inc/shelltypes.h b/inc/shelltypes.h
index 1b6cc38..36de6c7 100644
--- a/inc/shelltypes.h
+++ b/inc/shelltypes.h
@@ -36,7 +36,7 @@ extern "C"
 #endif
 
 #include "Tiano.h"
-#include "linkedlist.h"
+#include "LinkedList.h"
 
 #include EFI_PROTOCOL_DEFINITION (FileInfo)
 #include EFI_PROTOCOL_DEFINITION (SimpleFileSystem)
@@ -183,3 +183,4 @@ typedef struct {
 #endif
 
 #endif
+
diff --git a/load/load.c b/load/load.c
index 44247cc..b268c58 100644
--- a/load/load.c
+++ b/load/load.c
@@ -60,7 +60,7 @@ SHELL_VAR_CHECK_ITEM    LoadCheckList[] = {
     NULL,
     0,
     0,
-    0
+    (SHELL_VAR_CHECK_FLAG_TYPE) 0
   }
 };
 
diff --git a/load/load.h b/load/load.h
index 477c816..746aa89 100644
--- a/load/load.h
+++ b/load/load.h
@@ -33,3 +33,4 @@ Revision History
   }
 
 #endif
+
diff --git a/load/load.inf b/load/load.inf
index 3ba1dbf..6d1785d 100644
--- a/load/load.inf
+++ b/load/load.inf
@@ -39,23 +39,23 @@ FILE_GUID            = 5B93B225-2E47-4a61-8EE5-B8EA42EE3EA8
 COMPONENT_TYPE       = APPLICATION
 
 [sources.common]
-  ..\ShCommonStrings.uni
+  ../ShCommonStrings.uni
   LoadStrings.uni
   load.c
     
 [includes.common]
   .
-  ..\Inc
-  ..\Library
-  $(EDK_SOURCE)\Foundation
-  $(EDK_SOURCE)\Foundation\Include
-  $(EDK_SOURCE)\Foundation\Include\IndustryStandard
-  $(EDK_SOURCE)\Foundation\Efi
-  $(EDK_SOURCE)\Foundation\Efi\Include
-  $(EDK_SOURCE)\Foundation\FrameWork
-  $(EDK_SOURCE)\Foundation\FrameWork\Include
-  $(EDK_SOURCE)\Foundation\Core\Dxe
-  $(DEST_DIR)\
+  ../Inc
+  ../Library
+  $(EDK_SOURCE)/Foundation
+  $(EDK_SOURCE)/Foundation/Include
+  $(EDK_SOURCE)/Foundation/Include/IndustryStandard
+  $(EDK_SOURCE)/Foundation/Efi
+  $(EDK_SOURCE)/Foundation/Efi/Include
+  $(EDK_SOURCE)/Foundation/FrameWork
+  $(EDK_SOURCE)/Foundation/FrameWork/Include
+  $(EDK_SOURCE)/Foundation/Core/Dxe
+  $(DEST_DIR./
 
 [libraries.common]  
   EfiShellLib
@@ -70,6 +70,11 @@ COMPONENT_TYPE       = APPLICATION
 
 [nmake.common]
   IMAGE_ENTRY_POINT=InitializeLoad
+
+[nmake.IA32, nmake.EBC, nmake.X64, nmake.IPF]
   C_STD_FLAGS = $(C_STD_FLAGS) /DSTRING_ARRAY_NAME=$(BASE_NAME)Strings 
   C_STD_FLAGS = $(C_STD_FLAGS) /DSTRING_DEFINES_FILE=\"$(BASE_NAME)StrDefs.h\"
   C_STD_FLAGS = $(C_STD_FLAGS) /DEFI_BOOTSHELL
+
+[nmake.ARM, nmake.AARCH64]
+  C_STD_FLAGS = $(C_STD_FLAGS) -DEFI_BOOTSHELL
diff --git a/ls/ls.c b/ls/ls.c
index bfb4f9c..0d731d7 100644
--- a/ls/ls.c
+++ b/ls/ls.c
@@ -59,7 +59,7 @@ SHELL_VAR_CHECK_ITEM    LsCheckList[] = {
     NULL,
     0,
     0,
-    0
+    (SHELL_VAR_CHECK_FLAG_TYPE) 0
   }
 };
 
@@ -199,7 +199,6 @@ Returns:
   CHAR16                  *PtrTwo;
   CHAR16                  *Path;
   EFI_LIST_ENTRY          DirList;
-  EFI_LIST_ENTRY          *Link;
   SHELL_FILE_ARG          *Arg;
   BOOLEAN                 WildcardsEncountered;
   CHAR16                  *Pattern;
@@ -210,7 +209,6 @@ Returns:
   Argv    = SI->Argv;
   PtrTwo  = NULL;
   InitializeListHead (&DirList);
-  Link                = NULL;
   Arg                 = NULL;
   Pattern             = NULL;
   Status              = EFI_SUCCESS;
@@ -815,8 +813,6 @@ GetPattern (
   CHAR16 *Path
   )
 {
-
-  EFI_STATUS  Status;
   CHAR16      *PtrOne;
   CHAR16      *PtrTwo;
   UINTN       Index1;
@@ -825,7 +821,6 @@ GetPattern (
   BOOLEAN     LeadingBlanks;
 
   LeadingBlanks = TRUE;
-  Status        = EFI_SUCCESS;
 
   for (PtrOne = PtrTwo = Path; PtrOne < Path + StrLen (Path); PtrOne++) {
     if ((*PtrOne) == ' ' && LeadingBlanks) {
@@ -917,14 +912,14 @@ IsMatch (
 
   if ((IsMatch && mIgnoreAttribute) ||
       (IsMatch && !mAttributes && !(Info->Attribute & EFI_FILE_HIDDEN) && !(Info->Attribute & EFI_FILE_SYSTEM)) ||
-      IsMatch &&
+      (IsMatch &&
       mAttributes &&
       (
         (mAttribA ? (Info->Attribute & EFI_FILE_ARCHIVE ? TRUE : FALSE) : TRUE) &&
       (mAttribH ? (Info->Attribute & EFI_FILE_HIDDEN ? TRUE : FALSE) : TRUE) &&
       (mAttribR ? (Info->Attribute & EFI_FILE_READ_ONLY ? TRUE : FALSE) : TRUE) &&
       (mAttribS ? (Info->Attribute & EFI_FILE_SYSTEM ? TRUE : FALSE) : TRUE) &&
-      (mAttribD ? (Info->Attribute & EFI_FILE_DIRECTORY ? TRUE : FALSE) : TRUE)
+      (mAttribD ? (Info->Attribute & EFI_FILE_DIRECTORY ? TRUE : FALSE) : TRUE))
     )
       ) {
     IsMatch = TRUE;
diff --git a/ls/ls.h b/ls/ls.h
index e967235..f0a5151 100644
--- a/ls/ls.h
+++ b/ls/ls.h
@@ -91,4 +91,5 @@ MainProc (
   IN UINT16               VHlpToken
   );
 
-#endif
\ No newline at end of file
+#endif
+
diff --git a/ls/ls.inf b/ls/ls.inf
index 854a5b1..547fce8 100644
--- a/ls/ls.inf
+++ b/ls/ls.inf
@@ -40,24 +40,24 @@ COMPONENT_TYPE       = APPLICATION
 
 
 [sources.common]
-   ..\ShCommonStrings.uni   
+   ../ShCommonStrings.uni   
    LsStrings.uni        
    ls.c                 
    ls.h    
                                          
 [includes.common]
   .
-  ..\Inc
-  ..\Library
-  $(EDK_SOURCE)\Foundation
-  $(EDK_SOURCE)\Foundation\Include
-  $(EDK_SOURCE)\Foundation\Include\IndustryStandard
-  $(EDK_SOURCE)\Foundation\Efi
-  $(EDK_SOURCE)\Foundation\Efi\Include
-  $(EDK_SOURCE)\Foundation\FrameWork
-  $(EDK_SOURCE)\Foundation\FrameWork\Include
-  $(EDK_SOURCE)\Foundation\Core\Dxe
-  $(DEST_DIR)\
+  ../Inc
+  ../Library
+  $(EDK_SOURCE)/Foundation
+  $(EDK_SOURCE)/Foundation/Include
+  $(EDK_SOURCE)/Foundation/Include/IndustryStandard
+  $(EDK_SOURCE)/Foundation/Efi
+  $(EDK_SOURCE)/Foundation/Efi/Include
+  $(EDK_SOURCE)/Foundation/FrameWork
+  $(EDK_SOURCE)/Foundation/FrameWork/Include
+  $(EDK_SOURCE)/Foundation/Core/Dxe
+  $(DEST_DIR./
 
 [libraries.common]  
   EfiShellLib
@@ -72,7 +72,11 @@ COMPONENT_TYPE       = APPLICATION
 
 [nmake.common]
   IMAGE_ENTRY_POINT=InitializeLS
+
+[nmake.IA32, nmake.EBC, nmake.X64, nmake.IPF]
   C_STD_FLAGS = $(C_STD_FLAGS) /DSTRING_ARRAY_NAME=$(BASE_NAME)Strings 
   C_STD_FLAGS = $(C_STD_FLAGS) /DSTRING_DEFINES_FILE=\"$(BASE_NAME)StrDefs.h\"
   C_STD_FLAGS = $(C_STD_FLAGS) /DEFI_BOOTSHELL
 
+[nmake.ARM, nmake.AARCH64]
+  C_STD_FLAGS = $(C_STD_FLAGS) -DEFI_BOOTSHELL
diff --git a/mem/MemCommonPart.c b/mem/MemCommonPart.c
index 54af027..b5ccc17 100644
--- a/mem/MemCommonPart.c
+++ b/mem/MemCommonPart.c
@@ -58,7 +58,7 @@ SHELL_VAR_CHECK_ITEM    MemCheckList[] = {
     NULL,
     0,
     0,
-    0
+    (SHELL_VAR_CHECK_FLAG_TYPE) 0
   }
 };
 
@@ -149,7 +149,7 @@ Returns:
     return EFI_SUCCESS;
   }
 
-  Address = (AddressStr) ? Xtoi (AddressStr) : (UINT64) SystemTable;
+  Address = (AddressStr) ? Xtoi (AddressStr) : (UINT64)(UINTN) SystemTable;
   Size    = (SizeStr) ? Xtoi (SizeStr) : 512;
 
   //
@@ -157,7 +157,7 @@ Returns:
   //
   PrintToken (STRING_TOKEN (STR_MEM_MEMORY_ADDR), HiiMemHandle, 2 * sizeof (UINTN), Address, Size);
   if (MMIo) {
-    Status = BS->LocateProtocol (&gEfiPciRootBridgeIoProtocolGuid, NULL, &PciRootBridgeIo);
+    Status = BS->LocateProtocol (&gEfiPciRootBridgeIoProtocolGuid, NULL, (VOID**)&PciRootBridgeIo);
     if (EFI_ERROR (Status)) {
       PrintToken (STRING_TOKEN (STR_SHELLENV_GNC_LOC_PROT_ERR_EX), HiiMemHandle, L"mem", L"PciRootBridgeIo");
       return Status;
@@ -172,7 +172,7 @@ Returns:
       return Status;
     }
 
-    PciRootBridgeIo->Mem.Read (PciRootBridgeIo, EfiPciIoWidthUint8, Address, Size, Buffer);
+    PciRootBridgeIo->Mem.Read (PciRootBridgeIo, EfiPciWidthUint8, Address, Size, Buffer);
   } else {
     Buffer = (UINT8 *) (UINTN) Address;
   }
@@ -233,7 +233,7 @@ Returns:
   MMIo                  = FALSE;
   AddressStr            = NULL;
   SizeStr               = NULL;
-  Address               = (UINT64) SystemTable;
+  Address               = (UINT64)(UINTN) SystemTable;
   Size                  = 512;
   RetCode               = LibCheckVariables (SI, MemCheckList, &ChkPck, &Useful);
   if (VarCheckOk != RetCode) {
@@ -312,7 +312,7 @@ Returns:
   //
   PrintToken (STRING_TOKEN (STR_MEM_NEW_MEMORY_ADDR), HiiMemHandle, 2 * sizeof (UINTN), Address, Size);
   if (MMIo) {
-    Status = BS->LocateProtocol (&gEfiPciRootBridgeIoProtocolGuid, NULL, &PciRootBridgeIo);
+    Status = BS->LocateProtocol (&gEfiPciRootBridgeIoProtocolGuid, NULL, (VOID**)&PciRootBridgeIo);
     if (EFI_ERROR (Status)) {
       PrintToken (STRING_TOKEN (STR_SHELLENV_GNC_LOC_PROT_ERR_EX), HiiMemHandle, L"mem", L"PciRootBridgeIo");
       return Status;
@@ -327,7 +327,7 @@ Returns:
       return Status;
     }
 
-    PciRootBridgeIo->Mem.Read (PciRootBridgeIo, EfiPciIoWidthUint8, Address, Size, Buffer);
+    PciRootBridgeIo->Mem.Read (PciRootBridgeIo, EfiPciWidthUint8, Address, Size, Buffer);
   } else {
     Buffer = (UINT8 *) (UINTN) Address;
   }
diff --git a/mem/MemCommonPart.h b/mem/MemCommonPart.h
index 3b34908..f1fd015 100644
--- a/mem/MemCommonPart.h
+++ b/mem/MemCommonPart.h
@@ -62,4 +62,4 @@ EFIMemStructsPrint (
   IN  EFI_BLOCK_IO_PROTOCOL   *BlkIo
   );
 
-#endif
\ No newline at end of file
+#endif
diff --git a/mem/debug.h b/mem/debug.h
index 2b02c89..8db1a9f 100644
--- a/mem/debug.h
+++ b/mem/debug.h
@@ -156,3 +156,4 @@ EFIStructsPrint (
 extern EFI_HII_HANDLE HiiMemHandle;
 
 #endif
+
diff --git a/mem/efidump.c b/mem/efidump.c
index d7b22cb..cf5382a 100644
--- a/mem/efidump.c
+++ b/mem/efidump.c
@@ -24,7 +24,7 @@ Revision History
 --*/
 
 #include "debug.h"
-#include "Efipart.h"
+#include "EfiPart.h"
 #include "EfiShellLib.h"
 
 #include STRING_DEFINES_FILE
@@ -320,13 +320,11 @@ DumpMemSystemTable (
   VOID                      *AcpiTable;
   VOID                      *Acpi20Table;
   VOID                      *SMBIOSTable;
-  VOID                      *SalSystemTable;
   VOID                      *MpsTable;
 
   AcpiTable       = NULL;
   Acpi20Table     = NULL;
   SMBIOSTable     = NULL;
-  SalSystemTable  = NULL;
   MpsTable        = NULL;
 
   PrintToken (
@@ -352,11 +350,13 @@ DumpMemSystemTable (
     PrintToken (STRING_TOKEN (STR_DEBUG_STD_ERROR_ON), HiiMemHandle, LibDevicePathToStr (DevicePath));
   }
 
-  PrintToken (STRING_TOKEN (STR_DEBUG_RUNTIME_SERVICES), HiiMemHandle, (UINT64) Tbl.Sys->RuntimeServices);
-  PrintToken (STRING_TOKEN (STR_DEBUG_BOOT_SERVICES), HiiMemHandle, (UINT64) Tbl.Sys->BootServices);
+  PrintToken (STRING_TOKEN (STR_DEBUG_RUNTIME_SERVICES), HiiMemHandle, (UINT64)(UINTN) Tbl.Sys->RuntimeServices);
+  PrintToken (STRING_TOKEN (STR_DEBUG_BOOT_SERVICES), HiiMemHandle, (UINT64)(UINTN) Tbl.Sys->BootServices);
 
   EFI64_CODE (
-    Status = LibGetSystemConfigurationTable(&gEfiSalSystemTableGuid, &SalSystemTable);
+     VOID                      *SalSystemTable;
+  
+     Status = LibGetSystemConfigurationTable(&gEfiSalSystemTableGuid, &SalSystemTable);
     if (!EFI_ERROR(Status)) {
       PrintToken (STRING_TOKEN(STR_DEBUG_SAL_SYSTEM_TABLE), HiiMemHandle, (UINT64)SalSystemTable);
     }
@@ -364,22 +364,22 @@ DumpMemSystemTable (
   
   Status = LibGetSystemConfigurationTable (&gEfiAcpiTableGuid, &AcpiTable);
   if (!EFI_ERROR (Status)) {
-    PrintToken (STRING_TOKEN (STR_DEBUG_ACPI_TABLE), HiiMemHandle, (UINT64) AcpiTable);
+    PrintToken (STRING_TOKEN (STR_DEBUG_ACPI_TABLE), HiiMemHandle, (UINT64)(UINTN) AcpiTable);
   }
 
   Status = LibGetSystemConfigurationTable (&gEfiAcpi20TableGuid, &Acpi20Table);
   if (!EFI_ERROR (Status)) {
-    PrintToken (STRING_TOKEN (STR_DEBUG_APCI_2_TABLE), HiiMemHandle, (UINT64) Acpi20Table);
+    PrintToken (STRING_TOKEN (STR_DEBUG_APCI_2_TABLE), HiiMemHandle, (UINT64)(UINTN) Acpi20Table);
   }
 
   Status = LibGetSystemConfigurationTable (&gEfiMpsTableGuid, &MpsTable);
   if (!EFI_ERROR (Status)) {
-    PrintToken (STRING_TOKEN (STR_DEBUG_MPS_TABLE), HiiMemHandle, (UINT64) MpsTable);
+    PrintToken (STRING_TOKEN (STR_DEBUG_MPS_TABLE), HiiMemHandle, (UINT64)(UINTN) MpsTable);
   }
 
   Status = LibGetSystemConfigurationTable (&gEfiSmbiosTableGuid, &SMBIOSTable);
   if (!EFI_ERROR (Status)) {
-    PrintToken (STRING_TOKEN (STR_DEBUG_SMBIOS_TABLE), HiiMemHandle, (UINT64) SMBIOSTable);
+    PrintToken (STRING_TOKEN (STR_DEBUG_SMBIOS_TABLE), HiiMemHandle, (UINT64)(UINTN) SMBIOSTable);
   }
 }
 
diff --git a/mem/mem.inf b/mem/mem.inf
index 0561176..4ba34ad 100644
--- a/mem/mem.inf
+++ b/mem/mem.inf
@@ -25,7 +25,7 @@ FILE_GUID            = 1B0B8206-74DC-4681-AA0D-039A9699EA56
 COMPONENT_TYPE       = APPLICATION
 
 [sources.common]
-  ..\ShCommonStrings.uni
+  ../ShCommonStrings.uni
   MemStrings.uni
   DebugStrings.uni  
   mm.c
@@ -34,17 +34,17 @@ COMPONENT_TYPE       = APPLICATION
   
 [includes.common]
   .
-  ..\Inc
-  ..\Library
-  $(EDK_SOURCE)\Foundation
-  $(EDK_SOURCE)\Foundation\Include
-  $(EDK_SOURCE)\Foundation\Include\IndustryStandard
-  $(EDK_SOURCE)\Foundation\Efi
-  $(EDK_SOURCE)\Foundation\Efi\Include
-  $(EDK_SOURCE)\Foundation\FrameWork
-  $(EDK_SOURCE)\Foundation\FrameWork\Include
-  $(EDK_SOURCE)\Foundation\Core\Dxe
-  $(DEST_DIR)\
+  ../Inc
+  ../Library
+  $(EDK_SOURCE)/Foundation
+  $(EDK_SOURCE)/Foundation/Include
+  $(EDK_SOURCE)/Foundation/Include/IndustryStandard
+  $(EDK_SOURCE)/Foundation/Efi
+  $(EDK_SOURCE)/Foundation/Efi/Include
+  $(EDK_SOURCE)/Foundation/FrameWork
+  $(EDK_SOURCE)/Foundation/FrameWork/Include
+  $(EDK_SOURCE)/Foundation/Core/Dxe
+  $(DEST_DIR./
 
 [libraries.common]  
   EfiShellLib
@@ -63,9 +63,13 @@ COMPONENT_TYPE       = APPLICATION
 # we will specify some additional DEFINEs on the compile command line.
 #
 [nmake.common]
-  C_PROJ_FLAGS = $(C_PROJ_FLAGS) /Zm500
   IMAGE_ENTRY_POINT=DumpMm
+
+[nmake.IA32, nmake.EBC, nmake.X64, nmake.IPF]
+  C_PROJ_FLAGS = $(C_PROJ_FLAGS) /Zm500
   C_STD_FLAGS = $(C_STD_FLAGS) /DSTRING_ARRAY_NAME=$(BASE_NAME)Strings 
   C_STD_FLAGS = $(C_STD_FLAGS) /DSTRING_DEFINES_FILE=\"$(BASE_NAME)StrDefs.h\"
   C_STD_FLAGS = $(C_STD_FLAGS) /DEFI_BOOTSHELL
 
+[nmake.ARM, nmake.AARCH64]
+  C_STD_FLAGS = $(C_STD_FLAGS) -DEFI_BOOTSHELL
diff --git a/memmap/memmap.c b/memmap/memmap.c
index f7353ff..24da6e2 100644
--- a/memmap/memmap.c
+++ b/memmap/memmap.c
@@ -35,7 +35,7 @@ extern UINT8  STRING_ARRAY_NAME[];
 //
 // Global Variables
 //
-EFI_HII_HANDLE  HiiHandle;
+STATIC EFI_HII_HANDLE  HiiHandle;
 EFI_GUID        EfiMemmapGuid = EFI_MEMMAP_GUID;
 SHELL_VAR_CHECK_ITEM    MemmapCheckList[] = {
   {
@@ -54,7 +54,7 @@ SHELL_VAR_CHECK_ITEM    MemmapCheckList[] = {
     NULL,
     0,
     0,
-    0
+    (SHELL_VAR_CHECK_FLAG_TYPE) 0
   }
 };
 
@@ -216,7 +216,7 @@ Returns:
     }
 
     Bytes = LShiftU64 (Desc->NumberOfPages, 12);
-    Ptr   = MemoryTypeStr (Desc->Type);
+    Ptr   = MemoryTypeStr ((EFI_MEMORY_TYPE)Desc->Type);
     PrintToken (
       STRING_TOKEN (STR_MEMMAP_FIVE_ARGS),
       HiiHandle,
diff --git a/memmap/memmap.h b/memmap/memmap.h
index d9f5d72..e32a0aa 100644
--- a/memmap/memmap.h
+++ b/memmap/memmap.h
@@ -33,3 +33,4 @@ Revision History
   }
 
 #endif
+
diff --git a/memmap/memmap.inf b/memmap/memmap.inf
index 1d68c61..48af15c 100644
--- a/memmap/memmap.inf
+++ b/memmap/memmap.inf
@@ -40,7 +40,7 @@ COMPONENT_TYPE       = APPLICATION
 
 
 [sources.common]
-  ..\ShCommonStrings.uni
+  ../ShCommonStrings.uni
   memmapStrings.uni
   memmap.c
   memmap.h
@@ -48,17 +48,17 @@ COMPONENT_TYPE       = APPLICATION
   
 [includes.common]
   .
-  ..\Inc
-  ..\Library
-  $(EDK_SOURCE)\Foundation
-  $(EDK_SOURCE)\Foundation\Include
-  $(EDK_SOURCE)\Foundation\Include\IndustryStandard
-  $(EDK_SOURCE)\Foundation\Efi
-  $(EDK_SOURCE)\Foundation\Efi\Include
-  $(EDK_SOURCE)\Foundation\FrameWork
-  $(EDK_SOURCE)\Foundation\FrameWork\Include
-  $(EDK_SOURCE)\Foundation\Core\Dxe
-  $(DEST_DIR)\
+  ../Inc
+  ../Library
+  $(EDK_SOURCE)/Foundation
+  $(EDK_SOURCE)/Foundation/Include
+  $(EDK_SOURCE)/Foundation/Include/IndustryStandard
+  $(EDK_SOURCE)/Foundation/Efi
+  $(EDK_SOURCE)/Foundation/Efi/Include
+  $(EDK_SOURCE)/Foundation/FrameWork
+  $(EDK_SOURCE)/Foundation/FrameWork/Include
+  $(EDK_SOURCE)/Foundation/Core/Dxe
+  $(DEST_DIR./
 
 [libraries.common]  
   EfiShellLib
@@ -73,7 +73,11 @@ COMPONENT_TYPE       = APPLICATION
 
 [nmake.common]
   IMAGE_ENTRY_POINT=InitializeMemmap
+
+[nmake.IA32, nmake.EBC, nmake.X64, nmake.IPF]
   C_STD_FLAGS = $(C_STD_FLAGS) /DSTRING_ARRAY_NAME=$(BASE_NAME)Strings 
   C_STD_FLAGS = $(C_STD_FLAGS) /DSTRING_DEFINES_FILE=\"$(BASE_NAME)StrDefs.h\"
   C_STD_FLAGS = $(C_STD_FLAGS) /DEFI_BOOTSHELL
 
+[nmake.ARM, nmake.AARCH64]
+  C_STD_FLAGS = $(C_STD_FLAGS) -DEFI_BOOTSHELL
diff --git a/mkdir/mkdir.c b/mkdir/mkdir.c
index 79a08ca..5d8c5f5 100644
--- a/mkdir/mkdir.c
+++ b/mkdir/mkdir.c
@@ -49,7 +49,7 @@ MkDir (
 //
 // Global Variables
 //
-EFI_HII_HANDLE  HiiHandle;
+STATIC EFI_HII_HANDLE  HiiHandle;
 EFI_GUID        EfiMkdirGuid = EFI_MKDIR_GUID;
 SHELL_VAR_CHECK_ITEM    MkdirCheckList[] = {
   {
@@ -68,7 +68,7 @@ SHELL_VAR_CHECK_ITEM    MkdirCheckList[] = {
     NULL,
     0,
     0,
-    0
+    (SHELL_VAR_CHECK_FLAG_TYPE) 0
   }
 };
 
diff --git a/mkdir/mkdir.h b/mkdir/mkdir.h
index 20f8068..2da2b13 100644
--- a/mkdir/mkdir.h
+++ b/mkdir/mkdir.h
@@ -29,4 +29,5 @@ Revision History
     0x75ecb57f, 0x4264, 0x49d2, 0x98, 0xe6, 0x39, 0x1a, 0x32, 0x17, 0x9d, 0xf2 \
   }
 
-#endif
\ No newline at end of file
+#endif
+
diff --git a/mkdir/mkdir.inf b/mkdir/mkdir.inf
index e49daac..4f98af0 100644
--- a/mkdir/mkdir.inf
+++ b/mkdir/mkdir.inf
@@ -41,23 +41,23 @@ COMPONENT_TYPE       = APPLICATION
 
 [sources.common]
   MkdirStrings.uni
-  ..\ShCommonStrings.uni     
+  ../ShCommonStrings.uni     
   mkdir.c              
   mkdir.h              
  
 [includes.common]
   .
-  ..\Inc
-  ..\Library
-  $(EDK_SOURCE)\Foundation
-  $(EDK_SOURCE)\Foundation\Include
-  $(EDK_SOURCE)\Foundation\Include\IndustryStandard
-  $(EDK_SOURCE)\Foundation\Efi
-  $(EDK_SOURCE)\Foundation\Efi\Include
-  $(EDK_SOURCE)\Foundation\FrameWork
-  $(EDK_SOURCE)\Foundation\FrameWork\Include
-  $(EDK_SOURCE)\Foundation\Core\Dxe
-  $(DEST_DIR)\
+  ../Inc
+  ../Library
+  $(EDK_SOURCE)/Foundation
+  $(EDK_SOURCE)/Foundation/Include
+  $(EDK_SOURCE)/Foundation/Include/IndustryStandard
+  $(EDK_SOURCE)/Foundation/Efi
+  $(EDK_SOURCE)/Foundation/Efi/Include
+  $(EDK_SOURCE)/Foundation/FrameWork
+  $(EDK_SOURCE)/Foundation/FrameWork/Include
+  $(EDK_SOURCE)/Foundation/Core/Dxe
+  $(DEST_DIR./
 
 [libraries.common]  
   EfiShellLib
@@ -72,7 +72,11 @@ COMPONENT_TYPE       = APPLICATION
 
 [nmake.common]
   IMAGE_ENTRY_POINT=InitializeMkDir
+
+[nmake.IA32, nmake.EBC, nmake.X64, nmake.IPF]
   C_STD_FLAGS = $(C_STD_FLAGS) /DSTRING_ARRAY_NAME=$(BASE_NAME)Strings 
   C_STD_FLAGS = $(C_STD_FLAGS) /DSTRING_DEFINES_FILE=\"$(BASE_NAME)StrDefs.h\"
   C_STD_FLAGS = $(C_STD_FLAGS) /DEFI_BOOTSHELL
 
+[nmake.ARM, nmake.AARCH64]
+  C_STD_FLAGS = $(C_STD_FLAGS) -DEFI_BOOTSHELL
diff --git a/mm/mm.c b/mm/mm.c
index 033849b..cb53465 100644
--- a/mm/mm.c
+++ b/mm/mm.c
@@ -49,18 +49,18 @@ DumpIoModify (
 
 VOID
 ReadMem (
-  IN  EFI_IO_WIDTH  Width,
-  IN  UINT64        Address,
-  IN  UINTN         Size,
-  IN  VOID          *Buffer
+  IN  EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_WIDTH  Width,
+  IN  UINT64                                 Address,
+  IN  UINTN                                  Size,
+  IN  VOID                                   *Buffer
   );
 
 VOID
 WriteMem (
-  IN  EFI_IO_WIDTH  Width,
-  IN  UINT64        Address,
-  IN  UINTN         Size,
-  IN  VOID          *Buffer
+  IN  EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_WIDTH  Width,
+  IN  UINT64                                 Address,
+  IN  UINTN                                  Size,
+  IN  VOID                                   *Buffer
   );
 
 STATIC
@@ -73,7 +73,7 @@ GetHex (
 //
 // Global Variables
 //
-EFI_HII_HANDLE HiiHandle;
+STATIC EFI_HII_HANDLE HiiHandle;
 EFI_GUID EfiIomodGuid = EFI_IOMOD_GUID;
 SHELL_VAR_CHECK_ITEM    IomodCheckList[] = {
   {
@@ -134,7 +134,7 @@ SHELL_VAR_CHECK_ITEM    IomodCheckList[] = {
     NULL,
     0,
     0,
-    0
+    (SHELL_VAR_CHECK_FLAG_TYPE) 0
   }
 };
 
@@ -146,13 +146,13 @@ EFI_BOOTSHELL_CODE(
 
 EFI_STATUS
 OldShellParserMM (
-  OUT EFI_IO_WIDTH       *Width,
-  OUT EFI_ACCESS_TYPE    *AccessType,
-  OUT UINT64             *Address,
-  OUT UINT64             *Value,
-  OUT UINTN              *Size,
-  OUT BOOLEAN            *Interactive,
-  OUT CHAR16             **ValueStr
+  OUT EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_WIDTH *Width,
+  OUT EFI_ACCESS_TYPE                       *AccessType,
+  OUT UINT64                                *Address,
+  OUT UINT64                                *Value,
+  OUT UINTN                                 *Size,
+  OUT BOOLEAN                               *Interactive,
+  OUT CHAR16                               **ValueStr
   );
 
 EFI_STATUS
@@ -207,12 +207,11 @@ Notes:
   UINT64                          PciEAddress;
   UINT64                          Value;
   UINT32                          SegmentNumber;
-  EFI_IO_WIDTH                    Width;
+  EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_WIDTH Width;
   EFI_ACCESS_TYPE                 AccessType;
   UINT64                          Buffer;
   UINTN                           Index;
   UINTN                           Size;
-  CHAR16                          *AddressStr;
   CHAR16                          *ValueStr;
   BOOLEAN                         Complete;
   CHAR16                          InputStr[80];
@@ -261,7 +260,7 @@ Notes:
   if (IS_OLD_SHELL) {
     Status = OldShellParserMM (&Width, &AccessType, &Address, &Value, &Size, &Interactive, &ValueStr);
     if (EFI_ERROR (Status)) {
-      if (-1 == Status) {
+      if ((EFI_STATUS)-1 == Status) {
         PrintToken (STRING_TOKEN (STR_HELPINFO_MM_VERBOSEHELP), HiiHandle);
         Status = EFI_SUCCESS;
       }
@@ -274,7 +273,6 @@ Notes:
     Width       = EfiPciWidthUint8;
     Size        = 1;
     AccessType  = EfiMemory;
-    AddressStr  = NULL;
     ValueStr    = NULL;
     Interactive = TRUE;
 
@@ -662,10 +660,10 @@ Done:
 
 VOID
 ReadMem (
-  IN  EFI_IO_WIDTH  Width,
-  IN  UINT64        Address,
-  IN  UINTN         Size,
-  IN  VOID          *Buffer
+  IN  EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_WIDTH  Width,
+  IN  UINT64                                 Address,
+  IN  UINTN                                  Size,
+  IN  VOID                                   *Buffer
   )
 {
   do {
@@ -694,10 +692,10 @@ ReadMem (
 
 VOID
 WriteMem (
-  IN  EFI_IO_WIDTH  Width,
-  IN  UINT64        Address,
-  IN  UINTN         Size,
-  IN  VOID          *Buffer
+  IN  EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_WIDTH  Width,
+  IN  UINT64                                 Address,
+  IN  UINTN                                  Size,
+  IN  VOID                                   *Buffer
   )
 {
   do {
@@ -750,7 +748,7 @@ GetHex (
     }
 
     if ((c >= '0' && c <= '9') || (c >= 'A' && c <= 'F')) {
-      u     = u << 4 | c - (c >= 'A' ? 'A' - 10 : '0');
+      u     = (u << 4) | (c - (c >= 'A' ? 'A' - 10 : '0'));
 
       Find  = TRUE;
     } else {
@@ -766,13 +764,13 @@ GetHex (
 
 EFI_STATUS
 OldShellParserMM (
-  OUT EFI_IO_WIDTH       *Width,
-  OUT EFI_ACCESS_TYPE    *AccessType,
-  OUT UINT64             *Address,
-  OUT UINT64             *Value,
-  OUT UINTN              *Size,
-  OUT BOOLEAN            *Interactive,
-  OUT CHAR16             **ValueStr
+  OUT EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_WIDTH *Width,
+  OUT EFI_ACCESS_TYPE                       *AccessType,
+  OUT UINT64                                *Address,
+  OUT UINT64                                *Value,
+  OUT UINTN                                 *Size,
+  OUT BOOLEAN                               *Interactive,
+  OUT CHAR16                               **ValueStr
   )
 /*++
 
diff --git a/mm/mm.h b/mm/mm.h
index 8306f4c..0890e50 100644
--- a/mm/mm.h
+++ b/mm/mm.h
@@ -33,3 +33,4 @@ Revision History
   }
 
 #endif
+
diff --git a/mm/mm.inf b/mm/mm.inf
index 4857d9e..97221eb 100644
--- a/mm/mm.inf
+++ b/mm/mm.inf
@@ -41,23 +41,23 @@ COMPONENT_TYPE       = APPLICATION
 
 [sources.common]
   MmStrings.uni
-  ..\ShCommonStrings.uni
+  ../ShCommonStrings.uni
   mm.c
   mm.h
   
 [includes.common]
   .
-  ..\Inc
-  ..\Library
-  $(EDK_SOURCE)\Foundation
-  $(EDK_SOURCE)\Foundation\Include
-  $(EDK_SOURCE)\Foundation\Include\IndustryStandard
-  $(EDK_SOURCE)\Foundation\Efi
-  $(EDK_SOURCE)\Foundation\Efi\Include
-  $(EDK_SOURCE)\Foundation\FrameWork
-  $(EDK_SOURCE)\Foundation\FrameWork\Include
-  $(EDK_SOURCE)\Foundation\Core\Dxe
-  $(DEST_DIR)\
+  ../Inc
+  ../Library
+  $(EDK_SOURCE)/Foundation
+  $(EDK_SOURCE)/Foundation/Include
+  $(EDK_SOURCE)/Foundation/Include/IndustryStandard
+  $(EDK_SOURCE)/Foundation/Efi
+  $(EDK_SOURCE)/Foundation/Efi/Include
+  $(EDK_SOURCE)/Foundation/FrameWork
+  $(EDK_SOURCE)/Foundation/FrameWork/Include
+  $(EDK_SOURCE)/Foundation/Core/Dxe
+  $(DEST_DIR./
 
 [libraries.common]  
   EfiShellLib
@@ -72,7 +72,11 @@ COMPONENT_TYPE       = APPLICATION
 
 [nmake.common]
   IMAGE_ENTRY_POINT=DumpIoModify
+
+[nmake.IA32, nmake.EBC, nmake.X64, nmake.IPF]
   C_STD_FLAGS = $(C_STD_FLAGS) /DSTRING_ARRAY_NAME=$(BASE_NAME)Strings 
   C_STD_FLAGS = $(C_STD_FLAGS) /DSTRING_DEFINES_FILE=\"$(BASE_NAME)StrDefs.h\"
   C_STD_FLAGS = $(C_STD_FLAGS) /DEFI_BOOTSHELL
 
+[nmake.ARM, nmake.AARCH64]
+  C_STD_FLAGS = $(C_STD_FLAGS) -DEFI_BOOTSHELL
diff --git a/mode/mode.c b/mode/mode.c
index becf429..e49df84 100644
--- a/mode/mode.c
+++ b/mode/mode.c
@@ -53,7 +53,7 @@ SHELL_VAR_CHECK_ITEM    ModeCheckList[] = {
     NULL,
     0,
     0,
-    0
+    (SHELL_VAR_CHECK_FLAG_TYPE) 0
   }
 };
 
diff --git a/mode/mode.h b/mode/mode.h
index eadbac1..3c4560b 100644
--- a/mode/mode.h
+++ b/mode/mode.h
@@ -30,3 +30,4 @@ Revision History
   }
 
 #endif
+
diff --git a/mode/mode.inf b/mode/mode.inf
index 47e5c80..98ea62e 100644
--- a/mode/mode.inf
+++ b/mode/mode.inf
@@ -40,24 +40,24 @@ COMPONENT_TYPE       = APPLICATION
 
 
 [sources.common]
-  ..\ShCommonStrings.uni
+  ../ShCommonStrings.uni
   ModeStrings.uni
   mode.c
   mode.h
   
 [includes.common]
   .
-  ..\Inc
-  ..\Library
-  $(EDK_SOURCE)\Foundation
-  $(EDK_SOURCE)\Foundation\Include
-  $(EDK_SOURCE)\Foundation\Include\IndustryStandard
-  $(EDK_SOURCE)\Foundation\Efi
-  $(EDK_SOURCE)\Foundation\Efi\Include
-  $(EDK_SOURCE)\Foundation\FrameWork
-  $(EDK_SOURCE)\Foundation\FrameWork\Include
-  $(EDK_SOURCE)\Foundation\Core\Dxe
-  $(DEST_DIR)\
+  ../Inc
+  ../Library
+  $(EDK_SOURCE)/Foundation
+  $(EDK_SOURCE)/Foundation/Include
+  $(EDK_SOURCE)/Foundation/Include/IndustryStandard
+  $(EDK_SOURCE)/Foundation/Efi
+  $(EDK_SOURCE)/Foundation/Efi/Include
+  $(EDK_SOURCE)/Foundation/FrameWork
+  $(EDK_SOURCE)/Foundation/FrameWork/Include
+  $(EDK_SOURCE)/Foundation/Core/Dxe
+  $(DEST_DIR./
 
 [libraries.common]  
   EfiShellLib
@@ -72,7 +72,11 @@ COMPONENT_TYPE       = APPLICATION
 
 [nmake.common]
   IMAGE_ENTRY_POINT=InitializeMode
+
+[nmake.IA32, nmake.EBC, nmake.X64, nmake.IPF]
   C_STD_FLAGS = $(C_STD_FLAGS) /DSTRING_ARRAY_NAME=$(BASE_NAME)Strings 
   C_STD_FLAGS = $(C_STD_FLAGS) /DSTRING_DEFINES_FILE=\"$(BASE_NAME)StrDefs.h\"
   C_STD_FLAGS = $(C_STD_FLAGS) /DEFI_BOOTSHELL
 
+[nmake.ARM, nmake.AARCH64]
+  C_STD_FLAGS = $(C_STD_FLAGS) -DEFI_BOOTSHELL
diff --git a/mount/mount.c b/mount/mount.c
index fa32b1f..6825511 100644
--- a/mount/mount.c
+++ b/mount/mount.c
@@ -36,7 +36,7 @@ extern UINT8  STRING_ARRAY_NAME[];
 //
 // Global Variables
 //
-EFI_HII_HANDLE  HiiHandle;
+STATIC EFI_HII_HANDLE  HiiHandle;
 EFI_GUID        EfiMountGuid = EFI_MOUNT_GUID;
 SHELL_VAR_CHECK_ITEM      MountCheckList[] = {
   {
@@ -55,7 +55,7 @@ SHELL_VAR_CHECK_ITEM      MountCheckList[] = {
     NULL,
     0,
     0,
-    0
+    (SHELL_VAR_CHECK_FLAG_TYPE) 0
   }
 };
 
diff --git a/mount/mount.h b/mount/mount.h
index afd795e..ce65e8e 100644
--- a/mount/mount.h
+++ b/mount/mount.h
@@ -33,3 +33,4 @@ Revision History
   }
 
 #endif
+
diff --git a/mount/mount.inf b/mount/mount.inf
index 922c490..e0154e2 100644
--- a/mount/mount.inf
+++ b/mount/mount.inf
@@ -40,24 +40,24 @@ COMPONENT_TYPE       = APPLICATION
 
 
 [sources.common]
-  ..\ShCommonStrings.uni
+  ../ShCommonStrings.uni
   MountStrings.uni
   mount.c
   mount.h
   
 [includes.common]
   .
-  ..\Inc
-  ..\Library
-  $(EDK_SOURCE)\Foundation
-  $(EDK_SOURCE)\Foundation\Include
-  $(EDK_SOURCE)\Foundation\Include\IndustryStandard
-  $(EDK_SOURCE)\Foundation\Efi
-  $(EDK_SOURCE)\Foundation\Efi\Include
-  $(EDK_SOURCE)\Foundation\FrameWork
-  $(EDK_SOURCE)\Foundation\FrameWork\Include
-  $(EDK_SOURCE)\Foundation\Core\Dxe
-  $(DEST_DIR)\
+  ../Inc
+  ../Library
+  $(EDK_SOURCE)/Foundation
+  $(EDK_SOURCE)/Foundation/Include
+  $(EDK_SOURCE)/Foundation/Include/IndustryStandard
+  $(EDK_SOURCE)/Foundation/Efi
+  $(EDK_SOURCE)/Foundation/Efi/Include
+  $(EDK_SOURCE)/Foundation/FrameWork
+  $(EDK_SOURCE)/Foundation/FrameWork/Include
+  $(EDK_SOURCE)/Foundation/Core/Dxe
+  $(DEST_DIR./
 
 [libraries.common]  
   EfiShellLib
@@ -72,7 +72,11 @@ COMPONENT_TYPE       = APPLICATION
 
 [nmake.common]
   IMAGE_ENTRY_POINT=MountMain
+
+[nmake.IA32, nmake.EBC, nmake.X64, nmake.IPF]
   C_STD_FLAGS = $(C_STD_FLAGS) /DSTRING_ARRAY_NAME=$(BASE_NAME)Strings 
   C_STD_FLAGS = $(C_STD_FLAGS) /DSTRING_DEFINES_FILE=\"$(BASE_NAME)StrDefs.h\"
   C_STD_FLAGS = $(C_STD_FLAGS) /DEFI_BOOTSHELL
 
+[nmake.ARM, nmake.AARCH64]
+  C_STD_FLAGS = $(C_STD_FLAGS) -DEFI_BOOTSHELL
diff --git a/mv/mv.c b/mv/mv.c
index 3b04021..9eefd23 100644
--- a/mv/mv.c
+++ b/mv/mv.c
@@ -36,7 +36,7 @@ extern UINT8  STRING_ARRAY_NAME[];
 //
 // Global Variables
 //
-EFI_HII_HANDLE  HiiHandle;
+STATIC EFI_HII_HANDLE  HiiHandle;
 EFI_GUID        EfiMvGuid = EFI_MV_GUID;
 SHELL_VAR_CHECK_ITEM      MvCheckList[] = {
   {
@@ -55,7 +55,7 @@ SHELL_VAR_CHECK_ITEM      MvCheckList[] = {
     NULL,
     0,
     0,
-    0
+    (SHELL_VAR_CHECK_FLAG_TYPE) 0
   }
 };
 
diff --git a/mv/mv.h b/mv/mv.h
index 6ed33eb..2dbf314 100644
--- a/mv/mv.h
+++ b/mv/mv.h
@@ -33,4 +33,4 @@ Revision History
 
 #define EFI_FILE_STRING_SIZE  260
 
-#endif
\ No newline at end of file
+#endif
diff --git a/mv/mv.inf b/mv/mv.inf
index b52e28d..46000f0 100644
--- a/mv/mv.inf
+++ b/mv/mv.inf
@@ -40,24 +40,24 @@ COMPONENT_TYPE       = APPLICATION
 
 
 [sources.common]
-   ..\ShCommonStrings.uni   
+   ../ShCommonStrings.uni   
    MvStrings.uni        
    mv.c                 
    mv.h                 
                                           
 [includes.common]
   .
-  ..\Inc
-  ..\Library
-  $(EDK_SOURCE)\Foundation
-  $(EDK_SOURCE)\Foundation\Include
-  $(EDK_SOURCE)\Foundation\Include\IndustryStandard
-  $(EDK_SOURCE)\Foundation\Efi
-  $(EDK_SOURCE)\Foundation\Efi\Include
-  $(EDK_SOURCE)\Foundation\FrameWork
-  $(EDK_SOURCE)\Foundation\FrameWork\Include
-  $(EDK_SOURCE)\Foundation\Core\Dxe
-  $(DEST_DIR)\
+  ../Inc
+  ../Library
+  $(EDK_SOURCE)/Foundation
+  $(EDK_SOURCE)/Foundation/Include
+  $(EDK_SOURCE)/Foundation/Include/IndustryStandard
+  $(EDK_SOURCE)/Foundation/Efi
+  $(EDK_SOURCE)/Foundation/Efi/Include
+  $(EDK_SOURCE)/Foundation/FrameWork
+  $(EDK_SOURCE)/Foundation/FrameWork/Include
+  $(EDK_SOURCE)/Foundation/Core/Dxe
+  $(DEST_DIR./
 
 [libraries.common]  
   EfiShellLib
@@ -72,7 +72,11 @@ COMPONENT_TYPE       = APPLICATION
 
 [nmake.common]
   IMAGE_ENTRY_POINT=InitializeMv
+
+[nmake.IA32, nmake.EBC, nmake.X64, nmake.IPF]
   C_STD_FLAGS = $(C_STD_FLAGS) /DSTRING_ARRAY_NAME=$(BASE_NAME)Strings 
   C_STD_FLAGS = $(C_STD_FLAGS) /DSTRING_DEFINES_FILE=\"$(BASE_NAME)StrDefs.h\"
   C_STD_FLAGS = $(C_STD_FLAGS) /DEFI_BOOTSHELL
 
+[nmake.ARM, nmake.AARCH64]
+  C_STD_FLAGS = $(C_STD_FLAGS) -DEFI_BOOTSHELL
diff --git a/newshell/FakeHii.c b/newshell/FakeHii.c
index c187b47..5dff3ad 100644
--- a/newshell/FakeHii.c
+++ b/newshell/FakeHii.c
@@ -196,7 +196,7 @@ FakeUninstallHiiDatabase (
     Status = BS->HandleProtocol (
                   mFakeHiiHandle,
                   &gEfiHiiProtocolGuid,
-                  &FakeHii
+                  (VOID**)&FakeHii
                   );
     Status = BS->UninstallProtocolInterface (
                   mFakeHiiHandle,
@@ -320,7 +320,7 @@ InsertStringPackage (
   if (Language == NULL) {
     return EFI_OUT_OF_RESOURCES;
   }
-  strcpya (Language, (UINT8 *) PackageHdr + HeaderSize - LanguageSize);
+  strcpya (Language, (CHAR8*) ((UINT8 *) PackageHdr + HeaderSize - LanguageSize));
   for (Link = PackageList->StringPkgHdr.Flink; Link != &PackageList->StringPkgHdr; Link = Link->Flink) {
     StringPackage = CR (Link, FAKE_HII_STRING_PACKAGE, Entry, FAKE_HII_STRING_PACKAGE_SIGNATURE);
     if (CompareLanguage (Language, StringPackage->StringPkgHdr->Language)) {
@@ -770,7 +770,7 @@ FakeHiiGetString (
   StringPackage = NULL;
   for (Link = DatabaseRecord->StringPkgHdr.Flink; Link != &DatabaseRecord->StringPkgHdr; Link = Link->Flink) {
     StringPackage = CR (Link, FAKE_HII_STRING_PACKAGE, Entry, FAKE_HII_STRING_PACKAGE_SIGNATURE);
-    if (CompareLanguage (StringPackage->StringPkgHdr->Language, (UINT8 *) Language)) {
+    if (CompareLanguage (StringPackage->StringPkgHdr->Language, (CHAR8 *) Language)) {
       Matched = TRUE;
       break;
     }
diff --git a/newshell/FakeHii.h b/newshell/FakeHii.h
index a73332b..4c34460 100644
--- a/newshell/FakeHii.h
+++ b/newshell/FakeHii.h
@@ -479,3 +479,4 @@ extern BOOLEAN  gHiiInitialized;
 #endif
 
 #endif
+
diff --git a/newshell/init.c b/newshell/init.c
index fd4adf6..fe73711 100644
--- a/newshell/init.c
+++ b/newshell/init.c
@@ -23,7 +23,7 @@ Abstract:
 #include "nshell.h"
 
 extern UINT8    STRING_ARRAY_NAME[];
-extern BOOLEAN  gHiiInitialized = FALSE;
+BOOLEAN  gHiiInitialized = FALSE;
 
 //
 // This is the generated header file which includes whatever needs to be exported (strings + IFR)
@@ -99,13 +99,13 @@ _GetFsDpOfImg (
   Status = BS->HandleProtocol (
                 ImgHnd,
                 &gEfiLoadedImageProtocolGuid,
-                &img
+                (VOID**)&img
                 );
   if (!EFI_ERROR (Status)) {
     Status = BS->HandleProtocol (
                   img->DeviceHandle,
                   &gEfiDevicePathProtocolGuid,
-                  &dp
+                  (VOID**)&dp
                   );
     if (!EFI_ERROR (Status)) {
       *DevPath  = DuplicateDevicePath (dp);
@@ -220,7 +220,7 @@ _DoInit (
   //
   Status = LibLocateProtocol (
              &gEfiConsoleControlProtocolGuid,
-             &ConsoleControl
+             (VOID**)&ConsoleControl
              );
   if (!EFI_ERROR (Status)) {
     Status = ConsoleControl->GetMode (ConsoleControl, &mOldCurrentMode, NULL, NULL);
@@ -342,7 +342,7 @@ _EnableShellEnv (
       Status = _ShellLoadEnvDriver (ImageHandle);
     )
     if (EFI_ERROR (Status)) {
-      Status = LibLocateProtocol (&ShellEnvProtocol, &SE);
+      Status = LibLocateProtocol (&ShellEnvProtocol, (VOID**)&SE);
       if (EFI_ERROR (Status)) {
         PrintToken (STRING_TOKEN (STR_NSHELL_ENV_DRIVER), HiiNewshellHandle);
         return Status;
@@ -372,7 +372,7 @@ _InstallShellInterface (
     *IsRootInstance = TRUE;
   }
 
-  Status = LibLocateProtocol (&ShellEnvProtocol, &SE);
+  Status = LibLocateProtocol (&ShellEnvProtocol, (VOID**)&SE);
   ASSERT (!EFI_ERROR (Status));
   SI = SE->NewShell (ImageHandle);
 
@@ -543,7 +543,7 @@ _CleanUpOnExit (
   //
   ConsoleControlStatus = LibLocateProtocol (
                            &gEfiConsoleControlProtocolGuid,
-                           &ConsoleControl
+                           (VOID**)&ConsoleControl
                            );
   if (!EFI_ERROR (ConsoleControlStatus)) {
     ConsoleControlStatus = ConsoleControl->GetMode (ConsoleControl, &CurrentMode, NULL, NULL);
@@ -709,7 +709,7 @@ Returns:
   //
   SE2->IncrementShellNestingLevel ();
 
-  while (Status != -1) {
+  while (Status != (EFI_STATUS) -1) {
     Status = NShellPrompt (ImageHandle);
     EFI_NT_EMULATOR_CODE (
       //
@@ -723,7 +723,7 @@ Returns:
         Status = BS->HandleProtocol (
                       ImageHandle,
                       &ShellInterfaceProtocol,
-                      &SI
+                      (VOID**)&SI
                       );
         ASSERT (!EFI_ERROR (Status));
       }
diff --git a/newshell/nshell.h b/newshell/nshell.h
index 5c58410..c2a3a9e 100644
--- a/newshell/nshell.h
+++ b/newshell/nshell.h
@@ -58,4 +58,5 @@ extern EFI_SHELL_ENVIRONMENT  *SE;
 #define EFI_NO_MONOSHELL_CODE(code) code
 #endif
 
-#endif
\ No newline at end of file
+#endif
+
diff --git a/newshell/nshell.inf b/newshell/nshell.inf
index 22479b0..405e23c 100644
--- a/newshell/nshell.inf
+++ b/newshell/nshell.inf
@@ -26,24 +26,24 @@ COMPONENT_TYPE       = APPLICATION
 
 [sources.common]
   NshellStrings.uni
-  ..\ShCommonStrings.uni
+  ../ShCommonStrings.uni
   init.c
   nshell.h
   fakehii.c
 
 [includes.common]
   .
-  ..\Inc
-  ..\Library
-  $(EDK_SOURCE)\Foundation
-  $(EDK_SOURCE)\Foundation\Include
-  $(EDK_SOURCE)\Foundation\Include\IndustryStandard
-  $(EDK_SOURCE)\Foundation\Efi
-  $(EDK_SOURCE)\Foundation\Efi\Include
-  $(EDK_SOURCE)\Foundation\FrameWork
-  $(EDK_SOURCE)\Foundation\FrameWork\Include
-  $(EDK_SOURCE)\Foundation\Core\Dxe
-  $(DEST_DIR)\
+  ../Inc
+  ../Library
+  $(EDK_SOURCE)/Foundation
+  $(EDK_SOURCE)/Foundation/Include
+  $(EDK_SOURCE)/Foundation/Include/IndustryStandard
+  $(EDK_SOURCE)/Foundation/Efi
+  $(EDK_SOURCE)/Foundation/Efi/Include
+  $(EDK_SOURCE)/Foundation/FrameWork
+  $(EDK_SOURCE)/Foundation/FrameWork/Include
+  $(EDK_SOURCE)/Foundation/Core/Dxe
+  $(DEST_DIR./
 
 [libraries.common]  
   EfiShellLib
@@ -63,11 +63,13 @@ COMPONENT_TYPE       = APPLICATION
 # we will specify some additional DEFINEs on the compile command line.
 #
 [nmake.common]
-  C_PROJ_FLAGS = $(C_PROJ_FLAGS) /Zm500
   IMAGE_ENTRY_POINT=InitializeShell
+
+[nmake.IA32, nmake.EBC, nmake.X64, nmake.IPF]
+  C_PROJ_FLAGS = $(C_PROJ_FLAGS) /Zm500
   C_STD_FLAGS = $(C_STD_FLAGS) /DSTRING_ARRAY_NAME=$(BASE_NAME)Strings 
   C_STD_FLAGS = $(C_STD_FLAGS) /DSTRING_DEFINES_FILE=\"$(BASE_NAME)StrDefs.h\"
-  C_STD_FLAGS = $(C_STD_FLAGS) /DEFI_MONOSHELL=2
-
+  C_STD_FLAGS = $(C_STD_FLAGS) /DEFI_BOOTSHELL
 
- 
\ No newline at end of file
+[nmake.ARM, nmake.AARCH64]
+  C_STD_FLAGS = $(C_STD_FLAGS) -DEFI_BOOTSHELL
diff --git a/openinfo/openinfo.c b/openinfo/openinfo.c
index 9b3356c..16274fe 100644
--- a/openinfo/openinfo.c
+++ b/openinfo/openinfo.c
@@ -36,7 +36,7 @@ extern UINT8  STRING_ARRAY_NAME[];
 //
 // Global Variables
 //
-EFI_HII_HANDLE  HiiHandle;
+STATIC EFI_HII_HANDLE  HiiHandle;
 EFI_GUID        EfiOpeninfoGuid = EFI_OPENINFO_GUID;
 SHELL_VAR_CHECK_ITEM    OpeninfoCheckList[] = {
   {
@@ -55,7 +55,7 @@ SHELL_VAR_CHECK_ITEM    OpeninfoCheckList[] = {
     NULL,
     0,
     0,
-    0
+    (SHELL_VAR_CHECK_FLAG_TYPE) 0
   }
 };
 
diff --git a/openinfo/openinfo.h b/openinfo/openinfo.h
index fdd070d..56ed64a 100644
--- a/openinfo/openinfo.h
+++ b/openinfo/openinfo.h
@@ -33,3 +33,4 @@ Revision History
   }
 
 #endif
+
diff --git a/openinfo/openinfo.inf b/openinfo/openinfo.inf
index 638462d..8bc1e18 100644
--- a/openinfo/openinfo.inf
+++ b/openinfo/openinfo.inf
@@ -41,24 +41,24 @@ COMPONENT_TYPE       = APPLICATION
 
 [sources.common]
   OPeninfoStrings.uni
-  ..\ShCommonStrings.uni
+  ../ShCommonStrings.uni
   openinfo.c
   openinfo.h
 
   
 [includes.common]
   .
-  ..\Inc
-  ..\Library
-  $(EDK_SOURCE)\Foundation
-  $(EDK_SOURCE)\Foundation\Include
-  $(EDK_SOURCE)\Foundation\Include\IndustryStandard
-  $(EDK_SOURCE)\Foundation\Efi
-  $(EDK_SOURCE)\Foundation\Efi\Include
-  $(EDK_SOURCE)\Foundation\FrameWork
-  $(EDK_SOURCE)\Foundation\FrameWork\Include
-  $(EDK_SOURCE)\Foundation\Core\Dxe
-  $(DEST_DIR)\
+  ../Inc
+  ../Library
+  $(EDK_SOURCE)/Foundation
+  $(EDK_SOURCE)/Foundation/Include
+  $(EDK_SOURCE)/Foundation/Include/IndustryStandard
+  $(EDK_SOURCE)/Foundation/Efi
+  $(EDK_SOURCE)/Foundation/Efi/Include
+  $(EDK_SOURCE)/Foundation/FrameWork
+  $(EDK_SOURCE)/Foundation/FrameWork/Include
+  $(EDK_SOURCE)/Foundation/Core/Dxe
+  $(DEST_DIR./
 
 [libraries.common]  
   EfiShellLib
@@ -73,7 +73,11 @@ COMPONENT_TYPE       = APPLICATION
 
 [nmake.common]
   IMAGE_ENTRY_POINT=OpeninfoMain
+
+[nmake.IA32, nmake.EBC, nmake.X64, nmake.IPF]
   C_STD_FLAGS = $(C_STD_FLAGS) /DSTRING_ARRAY_NAME=$(BASE_NAME)Strings 
   C_STD_FLAGS = $(C_STD_FLAGS) /DSTRING_DEFINES_FILE=\"$(BASE_NAME)StrDefs.h\"
   C_STD_FLAGS = $(C_STD_FLAGS) /DEFI_BOOTSHELL
 
+[nmake.ARM, nmake.AARCH64]
+  C_STD_FLAGS = $(C_STD_FLAGS) -DEFI_BOOTSHELL
diff --git a/pci/pci.c b/pci/pci.c
index 8dc0dba..bb587c9 100644
--- a/pci/pci.c
+++ b/pci/pci.c
@@ -334,7 +334,7 @@ PCIE_EXPLAIN_STRUCT PcieExplainList[] = {
   {
     0,
     0,
-    0,
+    (PCIE_CAPREG_FIELD_WIDTH)0,
     NULL,
     PcieExplainTypeMax
   }
@@ -344,7 +344,7 @@ PCIE_EXPLAIN_STRUCT PcieExplainList[] = {
 // Global Variables
 //
 PCI_CONFIG_SPACE  *mConfigSpace;
-EFI_HII_HANDLE    HiiHandle;
+STATIC EFI_HII_HANDLE    HiiHandle;
 EFI_GUID          EfiPciGuid = EFI_PCI_GUID;
 SHELL_VAR_CHECK_ITEM    PciCheckList[] = {
   {
@@ -375,7 +375,7 @@ SHELL_VAR_CHECK_ITEM    PciCheckList[] = {
     NULL,
     0,
     0,
-    0
+    (SHELL_VAR_CHECK_FLAG_TYPE) 0
   }
 };
 
@@ -1034,7 +1034,7 @@ Returns:
   Status = BS->HandleProtocol (
                 Handle,
                 &gEfiPciRootBridgeIoProtocolGuid,
-                IoDev
+                (VOID**)IoDev
                 );
 
   if (EFI_ERROR (Status)) {
@@ -1043,7 +1043,7 @@ Returns:
   //
   // Call Configuration() to get address space descriptors
   //
-  Status = (*IoDev)->Configuration (*IoDev, Descriptors);
+  Status = (*IoDev)->Configuration (*IoDev, (VOID**)Descriptors);
   if (Status == EFI_UNSUPPORTED) {
     *Descriptors = NULL;
     return EFI_SUCCESS;
@@ -1237,7 +1237,7 @@ Returns:
     PrintToken (STRING_TOKEN (STR_PCI2_SINGLE_FUNCTION), HiiHandle);
   }
 
-  HeaderType = (UINT8) (Common->HeaderType & 0x7f);
+  HeaderType = (PCI_HEADER_TYPE) (Common->HeaderType & 0x7f);
   switch (HeaderType) {
   case PciDevice:
     PrintToken (STRING_TOKEN (STR_PCI2_PCI_DEVICE), HiiHandle);
@@ -1300,6 +1300,9 @@ Returns:
               );
     CapPtr = ConfigSpace->NonCommon.CardBus.CapabilitiesPtr;
     break;
+
+  default:
+    Status = EFI_UNSUPPORTED;
   }
   //
   // If Status bit4 is 1, dump or explain capability structure
@@ -1956,7 +1959,7 @@ Returns:
     INDEX_OF (&(CardBus->IoBase0)),
     Io32Bit ? L"          32 bit" : L"          16 bit",
     CardBus->IoBase0 & (Io32Bit ? 0xfffffffc : 0x0000fffc),
-    CardBus->IoLimit0 & (Io32Bit ? 0xffffffff : 0x0000ffff) | 0x00000003
+    (CardBus->IoLimit0 & (Io32Bit ? 0xffffffff : 0x0000ffff)) | 0x00000003
     );
 
   Io32Bit = (BOOLEAN) (CardBus->IoBase1 & PCI_BIT_0);
@@ -1966,7 +1969,7 @@ Returns:
     INDEX_OF (&(CardBus->IoBase1)),
     Io32Bit ? L"          32 bit" : L"          16 bit",
     CardBus->IoBase1 & (Io32Bit ? 0xfffffffc : 0x0000fffc),
-    CardBus->IoLimit1 & (Io32Bit ? 0xffffffff : 0x0000ffff) | 0x00000003
+    (CardBus->IoLimit1 & (Io32Bit ? 0xffffffff : 0x0000ffff)) | 0x00000003
     );
 
   //
diff --git a/pci/pci.h b/pci/pci.h
index 0716bee..42a5870 100644
--- a/pci/pci.h
+++ b/pci/pci.h
@@ -30,7 +30,7 @@ Revision History
     0x388da6c3, 0x3447, 0x4b1f, 0xa0, 0xba, 0xa9, 0xe8, 0xa2, 0x87, 0xf1, 0x76 \
   }
 
-#include "TIANO.h"
+#include "Tiano.h"
 
 typedef enum {
   PciDevice,
@@ -477,3 +477,4 @@ typedef struct {
 #pragma pack()
 
 #endif // _PCI_H_
+
diff --git a/pci/pci.inf b/pci/pci.inf
index d4499d6..2c559a5 100644
--- a/pci/pci.inf
+++ b/pci/pci.inf
@@ -41,7 +41,7 @@ COMPONENT_TYPE       = APPLICATION
 
 [sources.common]
   PciStrings.uni
-  ..\ShCommonStrings.uni
+  ../ShCommonStrings.uni
   pci.c
   pci.h
   pci_class.h
@@ -49,17 +49,17 @@ COMPONENT_TYPE       = APPLICATION
 
 [includes.common]
   .
-  ..\Inc
-  ..\Library
-  $(EDK_SOURCE)\Foundation
-  $(EDK_SOURCE)\Foundation\Include
-  $(EDK_SOURCE)\Foundation\Include\IndustryStandard
-  $(EDK_SOURCE)\Foundation\Efi
-  $(EDK_SOURCE)\Foundation\Efi\Include
-  $(EDK_SOURCE)\Foundation\FrameWork
-  $(EDK_SOURCE)\Foundation\FrameWork\Include
-  $(EDK_SOURCE)\Foundation\Core\Dxe
-  $(DEST_DIR)\
+  ../Inc
+  ../Library
+  $(EDK_SOURCE)/Foundation
+  $(EDK_SOURCE)/Foundation/Include
+  $(EDK_SOURCE)/Foundation/Include/IndustryStandard
+  $(EDK_SOURCE)/Foundation/Efi
+  $(EDK_SOURCE)/Foundation/Efi/Include
+  $(EDK_SOURCE)/Foundation/FrameWork
+  $(EDK_SOURCE)/Foundation/FrameWork/Include
+  $(EDK_SOURCE)/Foundation/Core/Dxe
+  $(DEST_DIR./
 
 [libraries.common]  
   EfiShellLib
@@ -74,7 +74,11 @@ COMPONENT_TYPE       = APPLICATION
 
 [nmake.common]
   IMAGE_ENTRY_POINT=PciDump
+
+[nmake.IA32, nmake.EBC, nmake.X64, nmake.IPF]
   C_STD_FLAGS = $(C_STD_FLAGS) /DSTRING_ARRAY_NAME=$(BASE_NAME)Strings 
   C_STD_FLAGS = $(C_STD_FLAGS) /DSTRING_DEFINES_FILE=\"$(BASE_NAME)StrDefs.h\"
   C_STD_FLAGS = $(C_STD_FLAGS) /DEFI_BOOTSHELL
 
+[nmake.ARM, nmake.AARCH64]
+  C_STD_FLAGS = $(C_STD_FLAGS) -DEFI_BOOTSHELL
diff --git a/pci/pci_class.c b/pci/pci_class.c
index caffe6d..14aa88d 100644
--- a/pci/pci_class.c
+++ b/pci/pci_class.c
@@ -30,7 +30,7 @@ Revision History
 //
 // Global Variables
 //
-EFI_HII_HANDLE  HiiHandle;
+STATIC EFI_HII_HANDLE  HiiHandle;
 
 PCI_CLASS_ENTRY gClassStringList[];
 
diff --git a/pci/pci_class.h b/pci/pci_class.h
index c7fff0c..0d6bea6 100644
--- a/pci/pci_class.h
+++ b/pci/pci_class.h
@@ -24,7 +24,7 @@ Revision History
 #ifndef _PCI_CLASS_H_
 #define _PCI_CLASS_H_
 
-#include "TIANO.h"  // for UINT32 etc.
+#include "Tiano.h"  // for UINT32 etc.
 #define PCI_CLASS_STRING_LIMIT  54
 //
 // Printable strings for Pci class code
@@ -58,3 +58,4 @@ PciPrintClassCode (
   );
 
 #endif // _PCI_CLASS_H_
+
diff --git a/reset/reset.c b/reset/reset.c
index 497b693..a5208b9 100644
--- a/reset/reset.c
+++ b/reset/reset.c
@@ -61,7 +61,7 @@ SHELL_VAR_CHECK_ITEM    ResetCheckList[] = {
     NULL,
     0,
     0,
-    0
+    (SHELL_VAR_CHECK_FLAG_TYPE) 0
   }
 };
 
diff --git a/reset/reset.h b/reset/reset.h
index 737fa11..e81c69a 100644
--- a/reset/reset.h
+++ b/reset/reset.h
@@ -32,3 +32,4 @@ Revision History
   }
 
 #endif
+
diff --git a/reset/reset.inf b/reset/reset.inf
index 3af6b2c..5d36446 100644
--- a/reset/reset.inf
+++ b/reset/reset.inf
@@ -40,24 +40,24 @@ COMPONENT_TYPE       = APPLICATION
 
 
 [sources.common]
-   ..\ShCommonStrings.uni   
+   ../ShCommonStrings.uni   
    ResetStrings.uni
    Reset.c
    Reset.h 
                                           
 [includes.common]
   .
-  ..\Inc
-  ..\Library
-  $(EDK_SOURCE)\Foundation
-  $(EDK_SOURCE)\Foundation\Include
-  $(EDK_SOURCE)\Foundation\Include\IndustryStandard
-  $(EDK_SOURCE)\Foundation\Efi
-  $(EDK_SOURCE)\Foundation\Efi\Include
-  $(EDK_SOURCE)\Foundation\FrameWork
-  $(EDK_SOURCE)\Foundation\FrameWork\Include
-  $(EDK_SOURCE)\Foundation\Core\Dxe
-  $(DEST_DIR)\
+  ../Inc
+  ../Library
+  $(EDK_SOURCE)/Foundation
+  $(EDK_SOURCE)/Foundation/Include
+  $(EDK_SOURCE)/Foundation/Include/IndustryStandard
+  $(EDK_SOURCE)/Foundation/Efi
+  $(EDK_SOURCE)/Foundation/Efi/Include
+  $(EDK_SOURCE)/Foundation/FrameWork
+  $(EDK_SOURCE)/Foundation/FrameWork/Include
+  $(EDK_SOURCE)/Foundation/Core/Dxe
+  $(DEST_DIR./
 
 [libraries.common]  
   EfiShellLib
@@ -72,7 +72,11 @@ COMPONENT_TYPE       = APPLICATION
 
 [nmake.common]
   IMAGE_ENTRY_POINT=InitializeReset
+
+[nmake.IA32, nmake.EBC, nmake.X64, nmake.IPF]
   C_STD_FLAGS = $(C_STD_FLAGS) /DSTRING_ARRAY_NAME=$(BASE_NAME)Strings 
   C_STD_FLAGS = $(C_STD_FLAGS) /DSTRING_DEFINES_FILE=\"$(BASE_NAME)StrDefs.h\"
   C_STD_FLAGS = $(C_STD_FLAGS) /DEFI_BOOTSHELL
 
+[nmake.ARM, nmake.AARCH64]
+  C_STD_FLAGS = $(C_STD_FLAGS) -DEFI_BOOTSHELL
diff --git a/rm/rm.c b/rm/rm.c
index 792a5dc..7d0c2c8 100644
--- a/rm/rm.c
+++ b/rm/rm.c
@@ -54,7 +54,7 @@ SHELL_VAR_CHECK_ITEM    RmCheckList[] = {
     NULL,
     0,
     0,
-    FALSE
+    (SHELL_VAR_CHECK_FLAG_TYPE) FALSE
   }
 };
 
diff --git a/rm/rm.h b/rm/rm.h
index 837ca7c..e2d5117 100644
--- a/rm/rm.h
+++ b/rm/rm.h
@@ -59,3 +59,4 @@ RemoveRM (
   );
 
 #endif
+
diff --git a/rm/rm.inf b/rm/rm.inf
index 0da05e0..45b5edb 100644
--- a/rm/rm.inf
+++ b/rm/rm.inf
@@ -41,23 +41,23 @@ COMPONENT_TYPE       = APPLICATION
 
 [sources.common]
    RmStrings.uni      
-   ..\ShCommonStrings.uni   
+   ../ShCommonStrings.uni   
    rm.h                        
    rm.c                 
 
 [includes.common]
   .
-  ..\Inc
-  ..\Library
-  $(EDK_SOURCE)\Foundation
-  $(EDK_SOURCE)\Foundation\Include
-  $(EDK_SOURCE)\Foundation\Include\IndustryStandard
-  $(EDK_SOURCE)\Foundation\Efi
-  $(EDK_SOURCE)\Foundation\Efi\Include
-  $(EDK_SOURCE)\Foundation\FrameWork
-  $(EDK_SOURCE)\Foundation\FrameWork\Include
-  $(EDK_SOURCE)\Foundation\Core\Dxe
-  $(DEST_DIR)\
+  ../Inc
+  ../Library
+  $(EDK_SOURCE)/Foundation
+  $(EDK_SOURCE)/Foundation/Include
+  $(EDK_SOURCE)/Foundation/Include/IndustryStandard
+  $(EDK_SOURCE)/Foundation/Efi
+  $(EDK_SOURCE)/Foundation/Efi/Include
+  $(EDK_SOURCE)/Foundation/FrameWork
+  $(EDK_SOURCE)/Foundation/FrameWork/Include
+  $(EDK_SOURCE)/Foundation/Core/Dxe
+  $(DEST_DIR./
 
 [libraries.common]  
   EfiShellLib
@@ -72,7 +72,11 @@ COMPONENT_TYPE       = APPLICATION
 
 [nmake.common]
   IMAGE_ENTRY_POINT=InitializeRM
+
+[nmake.IA32, nmake.EBC, nmake.X64, nmake.IPF]
   C_STD_FLAGS = $(C_STD_FLAGS) /DSTRING_ARRAY_NAME=$(BASE_NAME)Strings 
   C_STD_FLAGS = $(C_STD_FLAGS) /DSTRING_DEFINES_FILE=\"$(BASE_NAME)StrDefs.h\"
   C_STD_FLAGS = $(C_STD_FLAGS) /DEFI_BOOTSHELL
 
+[nmake.ARM, nmake.AARCH64]
+  C_STD_FLAGS = $(C_STD_FLAGS) -DEFI_BOOTSHELL
diff --git a/sermode/sermode.c b/sermode/sermode.c
index b59e801..d03c621 100644
--- a/sermode/sermode.c
+++ b/sermode/sermode.c
@@ -35,7 +35,7 @@ extern UINT8    STRING_ARRAY_NAME[];
 
 #include EFI_PROTOCOL_DEFINITION (SerialIo)
 
-EFI_HII_HANDLE  HiiHandle;
+STATIC EFI_HII_HANDLE  HiiHandle;
 EFI_GUID        EfiSermodeGuid = EFI_SERMODEB_GUID;
 SHELL_VAR_CHECK_ITEM    SermodeCheckList[] = {
   {
@@ -54,7 +54,7 @@ SHELL_VAR_CHECK_ITEM    SermodeCheckList[] = {
     NULL,
     0,
     0,
-    0
+    (SHELL_VAR_CHECK_FLAG_TYPE) 0
   }
 };
 
@@ -104,7 +104,7 @@ iDisplaySettings (
 
     }
 
-    Status = BS->HandleProtocol (Handles[Index], &gEfiSerialIoProtocolGuid, &SerialIo);
+    Status = BS->HandleProtocol (Handles[Index], &gEfiSerialIoProtocolGuid, (VOID**)&SerialIo);
     if (!EFI_ERROR (Status)) {
       switch (SerialIo->Mode->Parity) {
       case DefaultParity:
@@ -454,7 +454,7 @@ Returns:
       continue;
     }
 
-    Status = BS->HandleProtocol (Handles[Index], &gEfiSerialIoProtocolGuid, &SerialIo);
+    Status = BS->HandleProtocol (Handles[Index], &gEfiSerialIoProtocolGuid, (VOID**)&SerialIo);
     if (!EFI_ERROR (Status)) {
       Status = SerialIo->SetAttributes (
                           SerialIo,
diff --git a/sermode/sermode.h b/sermode/sermode.h
index 71a719b..7f38d4c 100644
--- a/sermode/sermode.h
+++ b/sermode/sermode.h
@@ -32,3 +32,4 @@ Revision History
   }
 
 #endif
+
diff --git a/sermode/sermode.inf b/sermode/sermode.inf
index 71f3c66..4954400 100644
--- a/sermode/sermode.inf
+++ b/sermode/sermode.inf
@@ -40,24 +40,24 @@ COMPONENT_TYPE       = APPLICATION
 
 
 [sources.common]
-  ..\ShCommonStrings.uni
+  ../ShCommonStrings.uni
   SermodeStrings.uni
   sermode.c
   sermode.h
  
 [includes.common]
   .
-  ..\Inc
-  ..\Library
-  $(EDK_SOURCE)\Foundation
-  $(EDK_SOURCE)\Foundation\Include
-  $(EDK_SOURCE)\Foundation\Include\IndustryStandard
-  $(EDK_SOURCE)\Foundation\Efi
-  $(EDK_SOURCE)\Foundation\Efi\Include
-  $(EDK_SOURCE)\Foundation\FrameWork
-  $(EDK_SOURCE)\Foundation\FrameWork\Include
-  $(EDK_SOURCE)\Foundation\Core\Dxe
-  $(DEST_DIR)\
+  ../Inc
+  ../Library
+  $(EDK_SOURCE)/Foundation
+  $(EDK_SOURCE)/Foundation/Include
+  $(EDK_SOURCE)/Foundation/Include/IndustryStandard
+  $(EDK_SOURCE)/Foundation/Efi
+  $(EDK_SOURCE)/Foundation/Efi/Include
+  $(EDK_SOURCE)/Foundation/FrameWork
+  $(EDK_SOURCE)/Foundation/FrameWork/Include
+  $(EDK_SOURCE)/Foundation/Core/Dxe
+  $(DEST_DIR./
 
 [libraries.common]  
   EfiShellLib
@@ -72,7 +72,11 @@ COMPONENT_TYPE       = APPLICATION
 
 [nmake.common]
   IMAGE_ENTRY_POINT=InitializeSerialMode
+
+[nmake.IA32, nmake.EBC, nmake.X64, nmake.IPF]
   C_STD_FLAGS = $(C_STD_FLAGS) /DSTRING_ARRAY_NAME=$(BASE_NAME)Strings 
   C_STD_FLAGS = $(C_STD_FLAGS) /DSTRING_DEFINES_FILE=\"$(BASE_NAME)StrDefs.h\"
   C_STD_FLAGS = $(C_STD_FLAGS) /DEFI_BOOTSHELL
 
+[nmake.ARM, nmake.AARCH64]
+  C_STD_FLAGS = $(C_STD_FLAGS) -DEFI_BOOTSHELL
diff --git a/shellenv/Connect.c b/shellenv/Connect.c
index 71ecf0b..51ec714 100644
--- a/shellenv/Connect.c
+++ b/shellenv/Connect.c
@@ -51,7 +51,7 @@ SHELL_VAR_CHECK_ITEM    ConnectCheckList[] = {
     NULL,
     0,
     0,
-    0
+    (SHELL_VAR_CHECK_FLAG_TYPE) 0
   }
 };
 
@@ -78,7 +78,7 @@ SHELL_VAR_CHECK_ITEM          DisconnectCheckList[] = {
     NULL,
     0,
     0,
-    0
+    (SHELL_VAR_CHECK_FLAG_TYPE) 0
   }
 };
 
@@ -105,7 +105,7 @@ SHELL_VAR_CHECK_ITEM          ReconnectCheckList[] = {
     NULL,
     0,
     0,
-    0
+    (SHELL_VAR_CHECK_FLAG_TYPE) 0
   }
 };
 
@@ -333,7 +333,7 @@ Returns:
     Status = BS->HandleProtocol (
                   HandleBuffer[0],
                   &gEfiDevicePathProtocolGuid,
-                  &Instance
+                  (VOID**)&Instance
                   );
     if (EFI_ERROR (Status)) {
       DriverBindingHandleCount  = 1;
@@ -349,7 +349,7 @@ Returns:
     Status = BS->HandleProtocol (
                   HandleBuffer[0],
                   &gEfiDevicePathProtocolGuid,
-                  &Instance
+                  (VOID**)&Instance
                   );
     if (EFI_ERROR (Status)) {
       PrintToken (
@@ -368,7 +368,7 @@ Returns:
     Status = BS->HandleProtocol (
                   HandleBuffer[1],
                   &gEfiDriverBindingProtocolGuid,
-                  &Instance
+                  (VOID**)&Instance
                   );
     if (EFI_ERROR (Status)) {
       PrintToken (
@@ -407,7 +407,7 @@ Returns:
       Status = BS->HandleProtocol (
                     AllHandleBuffer[Index],
                     &gEfiDriverBindingProtocolGuid,
-                    &Instance
+                    (VOID**)&Instance
                     );
       if (EFI_ERROR (Status)) {
         DeviceHandleBuffer[DeviceHandleCount++] = AllHandleBuffer[Index];
@@ -1052,7 +1052,7 @@ SEnvConnectConsole (
     Status = BS->HandleProtocol (
                   *ConsoleHandle,
                   ConsoleGuid,
-                  &Interface
+                  (VOID**)&Interface
                   );
   } 
 
@@ -1079,7 +1079,7 @@ SEnvConnectConsole (
         Status = BS->HandleProtocol (
                       AllHandleBuffer[Index],
                       &gEfiDevicePathProtocolGuid,
-                      &Interface
+                      (VOID**)&Interface
                       );
         if (!EFI_ERROR (Status)) {
           ConsoleIndex = Index;
@@ -1095,7 +1095,7 @@ SEnvConnectConsole (
     BS->HandleProtocol (
           *ConsoleHandle,
           ConsoleGuid,
-          ConsoleInterface
+          (VOID**)ConsoleInterface
           );
   }
 
diff --git a/shellenv/ConsoleProxy.c b/shellenv/ConsoleProxy.c
index 15e6bfe..0978251 100644
--- a/shellenv/ConsoleProxy.c
+++ b/shellenv/ConsoleProxy.c
@@ -1483,7 +1483,7 @@ ProxyConInFlashState (
 
   if (!EFI_ERROR (TimerStatus)) {
     mConInProxy.InputState = INPUT_STATE_DEFAULT;
-    BS->SetTimer (
+    Status = BS->SetTimer (
           mConInProxy.TwoSecondTimeOut,
           TimerCancel,
           0
@@ -1496,9 +1496,11 @@ ProxyConInFlashState (
                   (UINT64) 20000000
                   );
     mConInProxy.InputState = INPUT_STATE_ESC;
+  } else {
+    Status = EFI_UNSUPPORTED;
   }
 
-  return EFI_SUCCESS;
+  return Status;
 }
 
 EFI_STATUS
diff --git a/shellenv/batch.c b/shellenv/batch.c
index 24fef35..f725630 100644
--- a/shellenv/batch.c
+++ b/shellenv/batch.c
@@ -2388,7 +2388,6 @@ Returns:
 
 --*/
 {
-  BOOLEAN             EndOfFile;
   EFI_STATUS          Status;
   UINTN               BufSize;
   CHAR16              *CommandLine;
@@ -2396,7 +2395,6 @@ Returns:
   EFI_BATCH_STATEMENT *Stmt;
   ENV_SHELL_INTERFACE NewShell;
   UINTN               GotoTargetStatus;
-  UINTN               SkippedIfCount;
   BOOLEAN             EchoStateValid;
   BOOLEAN             EchoState;
   EFI_STATUS          ExecuteResult;
@@ -2409,7 +2407,6 @@ Returns:
   //  Initialize
   //
   Status          = EFI_SUCCESS;
-  EndOfFile       = FALSE;
   BufSize         = 0;
   EchoStateValid  = FALSE;
   EchoState       = FALSE;
@@ -2468,14 +2465,6 @@ Returns:
             EFI_BATCH_SCRIPT_SIGNATURE
             );
 
-  //
-  // Iterate through the file, reading a line at a time and executing each
-  // line as a shell command.  Nested shell scripts will come through
-  // this code path recursively.
-  //
-  EndOfFile       = FALSE;
-  SkippedIfCount  = 0;
-
   while (1) {
     //
     // Read a command line from the file
@@ -2681,7 +2670,7 @@ Returns:
       LastError = ExecuteResult;
     }
 
-    if (ExecuteResult == -1) {
+    if (ExecuteResult == (EFI_STATUS) -1) {
       SE2->DecrementShellNestingLevel ();
       if (SE2->IsRootShell ()) {
         goto Done;
@@ -2774,7 +2763,7 @@ Done:
     Status = _ResumePreviousMode ();
   }
 
-  if (LastError == -1) {
+  if (LastError == (UINTN) -1) {
     return LastError;
   } else {
     return Status;
diff --git a/shellenv/conio.c b/shellenv/conio.c
index 2c963f5..8da67a1 100644
--- a/shellenv/conio.c
+++ b/shellenv/conio.c
@@ -889,7 +889,7 @@ Returns:
     //
     // If we need to update the output do so now
     //
-    if (Update != -1) {
+    if (Update != (UINTN) -1) {
       if ((ConOut->Mode->CursorColumn != (INT32) Column) ||  (ConOut->Mode->CursorRow != (INT32) Row)) {
         PrintAt (Column, Row, L"%s%.*s", Str + Update, Delete, L"");
       } else {
diff --git a/shellenv/dprot.c b/shellenv/dprot.c
index 91faa50..9042b72 100644
--- a/shellenv/dprot.c
+++ b/shellenv/dprot.c
@@ -23,7 +23,7 @@ Revision History
 
 #include "shelle.h"
 #include "shellenvguid.h"
-#include "acpi.h"
+#include "Acpi.h"
 
 STATIC CHAR16 *SEnvDP_IlleagalStr[] = { L"Illegal" };
 
@@ -328,7 +328,6 @@ Returns:
   I2O_DEVICE_PATH           *I2ODevicePath;
   MAC_ADDR_DEVICE_PATH      *MacAddrDevicePath;
   IPv4_DEVICE_PATH          *IPv4DevicePath;
-  IPv6_DEVICE_PATH          *IPv6DevicePath;
   INFINIBAND_DEVICE_PATH    *InfinibandDevicePath;
   UART_DEVICE_PATH          *UartDevicePath;
   VENDOR_DEVICE_PATH        *VendorDevicePath;
@@ -464,7 +463,6 @@ Returns:
     break;
 
   case MSG_IPv6_DP:
-    IPv6DevicePath = (IPv6_DEVICE_PATH *) DevicePath;
     PrintToken (STRING_TOKEN (STR_SHELLENV_DPROT_NOT_AVAIL), HiiEnvHandle);
     break;
 
@@ -1054,6 +1052,8 @@ Returns:
       Magic = EFI_IMAGE_NT_OPTIONAL_HDR64_MAGIC;
     } else if (NtHdr->FileHeader.Machine == EFI_IMAGE_MACHINE_X64) {
       Magic = EFI_IMAGE_NT_OPTIONAL_HDR64_MAGIC;
+    } else if (NtHdr->FileHeader.Machine == EFI_IMAGE_MACHINE_AARCH64) {
+      Magic = EFI_IMAGE_NT_OPTIONAL_HDR64_MAGIC;
     } else {
       Magic = NtHdr->OptionalHeader.Magic;
     }
@@ -1294,6 +1294,8 @@ Returns:
     case EfiIsaAcpiResourceInterrupt:
       PrintToken (STRING_TOKEN (STR_SHELLENV_DPROT_INT), HiiEnvHandle);
       break;
+    case EfiIsaAcpiResourceEndOfList:
+      return;
     }
 
     if (IsaIo->ResourceList->ResourceItem[Index].StartRange == IsaIo->ResourceList->ResourceItem[Index].EndRange) {
diff --git a/shellenv/echo.c b/shellenv/echo.c
index 52b5464..9cf3482 100644
--- a/shellenv/echo.c
+++ b/shellenv/echo.c
@@ -52,7 +52,7 @@ SHELL_VAR_CHECK_ITEM    EchoCheckList[] = {
     NULL,
     0,
     0,
-    0
+    (SHELL_VAR_CHECK_FLAG_TYPE) 0
   }
 };
 
diff --git a/shellenv/exec.c b/shellenv/exec.c
index a6c1b73..5e4ea8e 100644
--- a/shellenv/exec.c
+++ b/shellenv/exec.c
@@ -105,7 +105,7 @@ SHELL_VAR_CHECK_ITEM    RedirCheckList[] = {
     NULL,
     0,
     0,
-    0
+    (SHELL_VAR_CHECK_FLAG_TYPE) 0
   }
 };
 
@@ -126,7 +126,7 @@ SHELL_VAR_CHECK_ITEM    ExitCheckList[] = {
     NULL,
     0,
     0,
-    0
+    (SHELL_VAR_CHECK_FLAG_TYPE) 0
   }
 };
 
@@ -1270,7 +1270,6 @@ Returns:
   SHELLENV_INTERNAL_COMMAND     InternalCommand;
   EFI_HANDLE                    NewImage;
   EFI_FILE_HANDLE               Script;
-  BOOLEAN                       ShowHelp;
   BOOLEAN                       ConsoleContextSaved;
   EFI_HANDLE                    SavedConsoleInHandle;
   EFI_HANDLE                    SavedConsoleOutHandle;
@@ -1292,7 +1291,6 @@ Returns:
   //
   Status                        = EFI_SUCCESS;
   ParentShell                   = NULL;
-  ShowHelp                      = FALSE;
   ConsoleContextSaved           = FALSE;
   SavedConIn                    = NULL;
   SavedConOut                   = NULL;
@@ -1557,7 +1555,7 @@ Returns:
           );
 
     EFI_SHELL_APP_INIT (ParentImageHandle, ParentSystemTable);
-    if (-2 == Status) {
+    if ((EFI_STATUS) -2 == Status) {
       //
       // if status = -2 we assume that a nested shell has just exited.
       //
@@ -1613,7 +1611,9 @@ Returns:
 Done:
   DEBUG_CODE (
     if (EFI_ERROR (Status) && Output) {
-      if ((Status == -1) || (Status == -2) || (Status == EFI_REDIRECTION_NOT_ALLOWED)
+      if ((Status == (EFI_STATUS) -1) 
+          || (Status == (EFI_STATUS) -2) 
+          || (Status == EFI_REDIRECTION_NOT_ALLOWED)
           || (Status == EFI_REDIRECTION_SAME)) {
       } else {
         PrintToken (STRING_TOKEN (STR_SHELLENV_EXEC_EXIT_STATUS_CODE), HiiEnvHandle, Status);
@@ -1674,7 +1674,7 @@ Done:
     PrintToken (STRING_TOKEN (STR_SHELLENV_REDIR_NOT_ALLOWED), HiiEnvHandle);
   }
 
-  if (Status != -1) {
+  if (Status != (EFI_STATUS) -1) {
     //
     // Don't Print on a "Disconnect All" exit. The ConOut device may not exist
     //
@@ -1872,7 +1872,7 @@ Returns:
     return Status;
   }
   //
-  // Processing foo: or foo:\
+  // Processing foo:\ or foo:
   //
   if (PathPos != -1 && Ptr1 == NULL) {
     return Status;
@@ -2638,7 +2638,6 @@ Returns:
   EFI_STATUS          Status;
   CHAR16              *Alias;
   CHAR16              *SubstituteStr;
-  CHAR16              *OldSubstituteStr;
   BOOLEAN             Literal;
   BOOLEAN             Comment;
   BOOLEAN             IsVariable;
@@ -2735,7 +2734,6 @@ Returns:
         // Try to find a shell enviroment variable
         //
         QuoteCount        = 0;
-        OldSubstituteStr  = SubstituteStr;
         SubstituteStr     = Str + 1;
         while (*SubstituteStr != '%' && *SubstituteStr != 0 && (!IsWhiteSpace (*SubstituteStr) || ParseState->Quote)) {
           if (*SubstituteStr == '"') {
diff --git a/shellenv/for.c b/shellenv/for.c
index 99664ad..93ab1f2 100644
--- a/shellenv/for.c
+++ b/shellenv/for.c
@@ -24,7 +24,7 @@ Revision History
 #include "shelle.h"
 #include "shellenvguid.h"
 
-/*
+#if 0
 BOOLEAN
 CheckInterValue (
   IN CHAR16                        *wszValueStr,
@@ -190,7 +190,7 @@ Arguments:
 Returns:
   EFI_SUCCESS      The function finished sucessfully
 
---
+--*/
 {
   EFI_BATCH_STATEMENT                *Stmt;
   EFI_LIST_ENTRY                     FileList;
@@ -326,7 +326,8 @@ Done:
     
   return Status;
 }
-*/
+#endif
+
 EFI_STATUS
 SEnvCmdForRun (
   IN EFI_HANDLE                         hImageHandle,
diff --git a/shellenv/help.c b/shellenv/help.c
index b5e1673..ecb52fd 100644
--- a/shellenv/help.c
+++ b/shellenv/help.c
@@ -52,7 +52,7 @@ SHELL_VAR_CHECK_ITEM    HelpCheckList[] = {
     NULL,
     0,
     0,
-    0
+    (SHELL_VAR_CHECK_FLAG_TYPE) 0
   }
 };
 
diff --git a/shellenv/if.c b/shellenv/if.c
index c6f0f51..766e6fb 100644
--- a/shellenv/if.c
+++ b/shellenv/if.c
@@ -59,7 +59,6 @@ Returns:
   BOOLEAN     ExistNot;
   UINTN       NotPos;
   BOOLEAN     ExistI;
-  UINTN       IPos;
   EFI_STATUS  Status;
   CHAR16      *FileName;
   BOOLEAN     FileExists;
@@ -122,10 +121,8 @@ Returns:
     //
     if ((StriCmp (SI->Argv[1], L"/i") == 0)) {
       ExistI  = TRUE;
-      IPos    = 1;
     } else {
       ExistI  = FALSE;
-      IPos    = 0;
     }
 
     NotPos = ExistI ? 2 : 1;
diff --git a/shellenv/init.c b/shellenv/init.c
index dad9002..458c6eb 100644
--- a/shellenv/init.c
+++ b/shellenv/init.c
@@ -143,7 +143,7 @@ Returns:
     Status = BS->HandleProtocol (
                   mOldSEnv->Handle,
                   &ShellEnvProtocol,
-                  &(mOldSEnv->Interface)
+                  (VOID**)&(mOldSEnv->Interface)
                   );
     ASSERT (!EFI_ERROR (Status));
     Status = BS->ReinstallProtocolInterface (
diff --git a/shellenv/map.c b/shellenv/map.c
index 3ebf2b4..a595c41 100644
--- a/shellenv/map.c
+++ b/shellenv/map.c
@@ -185,7 +185,7 @@ SHELL_VAR_CHECK_ITEM    MapCheckList[] = {
     NULL,
     0,
     0,
-    0
+    (SHELL_VAR_CHECK_FLAG_TYPE) 0
   }
 };
 
@@ -206,7 +206,7 @@ SHELL_VAR_CHECK_ITEM      CdCheckList[] = {
     NULL,
     0,
     0,
-    0
+    (SHELL_VAR_CHECK_FLAG_TYPE) 0
   }
 };
 
@@ -2038,13 +2038,13 @@ Returns:
     goto Done;
   }
 
-  Status = BS->HandleProtocol (Handle, &gEfiBlockIoProtocolGuid, &BlockIo);
+  Status = BS->HandleProtocol (Handle, &gEfiBlockIoProtocolGuid, (VOID**)&BlockIo);
   //
   // This is just for NT32, because fsntx has no block io protocol installed
   // but fsntx has installed simple file system protocol
   //
   if (EFI_ERROR (Status)) {
-    Status = BS->HandleProtocol (Handle, &gEfiSimpleFileSystemProtocolGuid, &BlockIo);
+    Status = BS->HandleProtocol (Handle, &gEfiSimpleFileSystemProtocolGuid, (VOID**)&BlockIo);
   }
 
   if (EFI_ERROR (Status)) {
@@ -2630,7 +2630,6 @@ Returns:
   UINTN           Index;
   UINTN           HandleNo;
   BOOLEAN         EchoStatus;
-  BOOLEAN         Same;
   CHAR16          MapStr[8];
   EFI_LIST_ENTRY  *Link;
   EFI_LIST_ENTRY  *Head;
@@ -2729,11 +2728,6 @@ Returns:
       }
     }
   }
-  //
-  // New code, try to make mapping list sequence unchanged if current device
-  // paths and original device paths are the same
-  //
-  Same = FALSE;
 
   //
   // Load handle table and handle protocol info so that we can get
@@ -3410,4 +3404,4 @@ ClearHistoryMapping (
     FreePool (HistoryNode->DevicePath);
     FreePool (HistoryNode);
   }
-}
\ No newline at end of file
+}
diff --git a/shellenv/parsecmd.h b/shellenv/parsecmd.h
index b14fb80..494e127 100644
--- a/shellenv/parsecmd.h
+++ b/shellenv/parsecmd.h
@@ -103,4 +103,5 @@ DeleteHeadArg (
   IN OUT SHELL_PARSED_ARGS    *args
   );
 
-#endif
\ No newline at end of file
+#endif
+
diff --git a/shellenv/pause.c b/shellenv/pause.c
index ca67cd3..9088ca6 100644
--- a/shellenv/pause.c
+++ b/shellenv/pause.c
@@ -47,7 +47,7 @@ SHELL_VAR_CHECK_ITEM    PauseCheckList[] = {
     NULL,
     0,
     0,
-    0
+    (SHELL_VAR_CHECK_FLAG_TYPE) 0
   }
 };
 
diff --git a/shellenv/protid.c b/shellenv/protid.c
index 3edca2c..88ebb39 100644
--- a/shellenv/protid.c
+++ b/shellenv/protid.c
@@ -628,7 +628,7 @@ SHELL_VAR_CHECK_ITEM    DHCheckList[] = {
     NULL,
     0,
     0,
-    FALSE
+    (SHELL_VAR_CHECK_FLAG_TYPE) FALSE
   }
 };
 
@@ -1183,7 +1183,7 @@ GetDriverName (
       *DriverName = LibDevicePathToStr (Image->FilePath);
     }
   } else {
-    LibGetDriverName (DriverBindingHandle, Language, DriverName);
+    LibGetDriverName (DriverBindingHandle, (CHAR8*)Language, DriverName);
   }
 
   return EFI_SUCCESS;
@@ -1539,7 +1539,7 @@ Returns:
 
     DevicePath      = NULL;
     BestDeviceName  = NULL;
-    Status          = BS->HandleProtocol (Handle, &gEfiDevicePathProtocolGuid, &DevicePath);
+    Status          = BS->HandleProtocol (Handle, &gEfiDevicePathProtocolGuid, (VOID**)&DevicePath);
 
     Print (L"\n");
     PrintToken (STRING_TOKEN (STR_SHELLENV_PROTID_CONTROLLER_NAME), HiiEnvHandle);
@@ -1598,14 +1598,14 @@ Returns:
         Image = FALSE;
         Status = GetDriverName (
                   DriverBindingHandleBuffer[Index],
-                  Language,
+                  (UINT8*)Language,
                   FALSE,
                   &DriverName
                   );
         if (DriverName == NULL) {
           Status = GetDriverName (
                     DriverBindingHandleBuffer[Index],
-                    Language,
+                    (UINT8*)Language,
                     TRUE,
                     &DriverName
                     );
@@ -1792,7 +1792,7 @@ Returns:
 
   Status = GetDriverName (
             Handle,
-            Language,
+            (UINT8*)Language,
             FALSE,
             &DriverName
             );
@@ -1806,7 +1806,7 @@ Returns:
 
   Status = GetDriverName (
             Handle,
-            Language,
+            (UINT8*)Language,
             TRUE,
             &DriverName
             );
@@ -1979,7 +1979,7 @@ Returns:
 
       if (Prot->Handles[Index] == Handle) {
         Dump    = Verbose ? Prot->DumpInfo : Prot->DumpToken;
-        Status  = BS->HandleProtocol (Handle, &Prot->ProtocolId, &Interface);
+        Status  = BS->HandleProtocol (Handle, &Prot->ProtocolId, (VOID**)&Interface);
         if (!EFI_ERROR (Status)) {
           if (Verbose) {
             for (Index1 = 0; Index1 < ProtocolBufferCount; Index1++) {
@@ -2027,7 +2027,7 @@ Returns:
           goto Done;
         }
 
-        Status = BS->HandleProtocol (Handle, ProtocolBuffer[Index1], &Interface);
+        Status = BS->HandleProtocol (Handle, ProtocolBuffer[Index1], (VOID**)&Interface);
         if (!EFI_ERROR (Status)) {
           PrintToken (
             STRING_TOKEN (STR_SHELLENV_PROTID_TWO_VARS_HG_NEW),
@@ -2660,8 +2660,6 @@ Returns:
 
 --*/
 {
-  EFI_STATUS                Status;
-
   DEVICEPATH_INFO           *DevicePathInfo;
 
   UINTN                     Index;
@@ -2688,7 +2686,7 @@ Returns:
   //
   // Establish current device path info list
   //
-  Status = LibLocateHandle (
+  LibLocateHandle (
             ByProtocol,
             Protocol,
             NULL,
diff --git a/shellenv/shelle.h b/shellenv/shelle.h
index 4338a21..88cebd5 100644
--- a/shellenv/shelle.h
+++ b/shellenv/shelle.h
@@ -2074,3 +2074,4 @@ SEnvDriverEFIVersionTok (
   );
 
 #endif // _SHELLE_H_
+
diff --git a/shellenv/shellenvguid.h b/shellenv/shellenvguid.h
index 6766662..f1a1720 100644
--- a/shellenv/shellenvguid.h
+++ b/shellenv/shellenvguid.h
@@ -37,3 +37,4 @@ Revision History
 extern EFI_HII_HANDLE HiiEnvHandle;
 
 #endif
+
diff --git a/shellenv/var.c b/shellenv/var.c
index cd86769..ae37344 100644
--- a/shellenv/var.c
+++ b/shellenv/var.c
@@ -110,7 +110,7 @@ SHELL_VAR_CHECK_ITEM    VarCheckList[] = {
     NULL,
     0,
     0,
-    0
+    (SHELL_VAR_CHECK_FLAG_TYPE) 0
   }
 };
 
@@ -144,7 +144,6 @@ Returns:
   EFI_LIST_ENTRY  *ListHead;
   VARIABLE_ID     *Var;
   EFI_STATUS      Status;
-  BOOLEAN         IsString;
   UINT32          Attributes;
 
   //
@@ -175,15 +174,12 @@ Returns:
     // See if it's a shellenv variable
     //
     ListHead  = NULL;
-    IsString  = FALSE;
     if (CompareGuid (&Id, &SEnvEnvId) == 0) {
       ListHead  = &SEnvEnv;
-      IsString  = TRUE;
     }
 
     if (CompareGuid (&Id, &SEnvAliasId) == 0) {
       ListHead  = &SEnvAlias;
-      IsString  = TRUE;
     }
 
     if (ListHead) {
diff --git a/stall/stall.c b/stall/stall.c
index ccf7451..b05c3a9 100644
--- a/stall/stall.c
+++ b/stall/stall.c
@@ -50,7 +50,7 @@ SHELL_VAR_CHECK_ITEM    StallCheckList[] = {
     NULL,
     0,
     0,
-    0
+    (SHELL_VAR_CHECK_FLAG_TYPE) 0
   }
 };
 
diff --git a/stall/stall.h b/stall/stall.h
index a326e41..22e2fc1 100644
--- a/stall/stall.h
+++ b/stall/stall.h
@@ -30,3 +30,4 @@ Revision History
   }
 
 #endif
+
diff --git a/stall/stall.inf b/stall/stall.inf
index 58545a5..5b08420 100644
--- a/stall/stall.inf
+++ b/stall/stall.inf
@@ -40,24 +40,24 @@ COMPONENT_TYPE       = APPLICATION
 
 
 [sources.common]
-  ..\ShCommonStrings.uni
+  ../ShCommonStrings.uni
   stallStrings.uni
   stall.c
   stall.h
 
 [includes.common]
   .
-  ..\Inc
-  ..\Library
-  $(EDK_SOURCE)\Foundation
-  $(EDK_SOURCE)\Foundation\Include
-  $(EDK_SOURCE)\Foundation\Include\IndustryStandard
-  $(EDK_SOURCE)\Foundation\Efi
-  $(EDK_SOURCE)\Foundation\Efi\Include
-  $(EDK_SOURCE)\Foundation\FrameWork
-  $(EDK_SOURCE)\Foundation\FrameWork\Include
-  $(EDK_SOURCE)\Foundation\Core\Dxe
-  $(DEST_DIR)\
+  ../Inc
+  ../Library
+  $(EDK_SOURCE)/Foundation
+  $(EDK_SOURCE)/Foundation/Include
+  $(EDK_SOURCE)/Foundation/Include/IndustryStandard
+  $(EDK_SOURCE)/Foundation/Efi
+  $(EDK_SOURCE)/Foundation/Efi/Include
+  $(EDK_SOURCE)/Foundation/FrameWork
+  $(EDK_SOURCE)/Foundation/FrameWork/Include
+  $(EDK_SOURCE)/Foundation/Core/Dxe
+  $(DEST_DIR./
 
 [libraries.common]  
   EfiShellLib
@@ -72,7 +72,11 @@ COMPONENT_TYPE       = APPLICATION
 
 [nmake.common]
   IMAGE_ENTRY_POINT=InitializeStall
+
+[nmake.IA32, nmake.EBC, nmake.X64, nmake.IPF]
   C_STD_FLAGS = $(C_STD_FLAGS) /DSTRING_ARRAY_NAME=$(BASE_NAME)Strings 
   C_STD_FLAGS = $(C_STD_FLAGS) /DSTRING_DEFINES_FILE=\"$(BASE_NAME)StrDefs.h\"
   C_STD_FLAGS = $(C_STD_FLAGS) /DEFI_BOOTSHELL
 
+[nmake.ARM, nmake.AARCH64]
+  C_STD_FLAGS = $(C_STD_FLAGS) -DEFI_BOOTSHELL
diff --git a/time/time.c b/time/time.c
index 00dd586..6309963 100644
--- a/time/time.c
+++ b/time/time.c
@@ -49,7 +49,7 @@ SHELL_VAR_CHECK_ITEM    TimeCheckList[] = {
     NULL,
     0,
     0,
-    0
+    (SHELL_VAR_CHECK_FLAG_TYPE) 0
   }
 };
 
@@ -64,8 +64,8 @@ STATIC
 BOOLEAN
 GetNumber (
   IN      CHAR16  *Str,
-  IN OUT  INTN    *Offset,
-  IN OUT  INTN    *number,
+  IN OUT  UINTN   *Offset,
+  IN OUT  UINTN   *number,
   IN      BOOLEAN GetSecond
   );
 
@@ -296,8 +296,8 @@ STATIC
 BOOLEAN
 GetNumber (
   IN      CHAR16  *Str,
-  IN OUT  INTN    *Offset,
-  IN OUT  INTN    *Number,
+  IN OUT  UINTN   *Offset,
+  IN OUT  UINTN   *Number,
   IN    BOOLEAN   GetSecond
   )
 {
diff --git a/time/time.h b/time/time.h
index e9ff6c9..c273c4f 100644
--- a/time/time.h
+++ b/time/time.h
@@ -32,3 +32,4 @@ Revision History
   }
 
 #endif
+
diff --git a/time/time.inf b/time/time.inf
index 5181280..ab71d0e 100644
--- a/time/time.inf
+++ b/time/time.inf
@@ -40,24 +40,24 @@ COMPONENT_TYPE       = APPLICATION
 
 
 [sources.common]
-   ..\ShCommonStrings.uni   
+   ../ShCommonStrings.uni   
    TimeStrings.uni
    Time.c
    Time.h 
                                           
 [includes.common]
   .
-  ..\Inc
-  ..\Library
-  $(EDK_SOURCE)\Foundation
-  $(EDK_SOURCE)\Foundation\Include
-  $(EDK_SOURCE)\Foundation\Include\IndustryStandard
-  $(EDK_SOURCE)\Foundation\Efi
-  $(EDK_SOURCE)\Foundation\Efi\Include
-  $(EDK_SOURCE)\Foundation\FrameWork
-  $(EDK_SOURCE)\Foundation\FrameWork\Include
-  $(EDK_SOURCE)\Foundation\Core\Dxe
-  $(DEST_DIR)\
+  ../Inc
+  ../Library
+  $(EDK_SOURCE)/Foundation
+  $(EDK_SOURCE)/Foundation/Include
+  $(EDK_SOURCE)/Foundation/Include/IndustryStandard
+  $(EDK_SOURCE)/Foundation/Efi
+  $(EDK_SOURCE)/Foundation/Efi/Include
+  $(EDK_SOURCE)/Foundation/FrameWork
+  $(EDK_SOURCE)/Foundation/FrameWork/Include
+  $(EDK_SOURCE)/Foundation/Core/Dxe
+  $(DEST_DIR./
 
 [libraries.common]  
   EfiShellLib
@@ -72,7 +72,11 @@ COMPONENT_TYPE       = APPLICATION
 
 [nmake.common]
   IMAGE_ENTRY_POINT=InitializeTime
+
+[nmake.IA32, nmake.EBC, nmake.X64, nmake.IPF]
   C_STD_FLAGS = $(C_STD_FLAGS) /DSTRING_ARRAY_NAME=$(BASE_NAME)Strings 
   C_STD_FLAGS = $(C_STD_FLAGS) /DSTRING_DEFINES_FILE=\"$(BASE_NAME)StrDefs.h\"
   C_STD_FLAGS = $(C_STD_FLAGS) /DEFI_BOOTSHELL
 
+[nmake.ARM, nmake.AARCH64]
+  C_STD_FLAGS = $(C_STD_FLAGS) -DEFI_BOOTSHELL
diff --git a/touch/touch.c b/touch/touch.c
index 0938d34..a5f61b8 100644
--- a/touch/touch.c
+++ b/touch/touch.c
@@ -64,7 +64,7 @@ TouchFreeFileArg (
 //
 // Global Variables
 //
-EFI_HII_HANDLE  HiiHandle;
+STATIC EFI_HII_HANDLE  HiiHandle;
 EFI_GUID        EfiTouchGuid = EFI_TOUCH_GUID;
 SHELL_VAR_CHECK_ITEM    TouchCheckList[] = {
   {
diff --git a/touch/touch.h b/touch/touch.h
index 402e7dc..6aceaf5 100644
--- a/touch/touch.h
+++ b/touch/touch.h
@@ -29,4 +29,4 @@ Revision History
     0xa16a4695, 0x5815, 0x4d4f, 0xb8, 0xe, 0x6a, 0xf, 0x88, 0xac, 0xdb, 0x6c \
   }
 
-#endif
\ No newline at end of file
+#endif
diff --git a/touch/touch.inf b/touch/touch.inf
index 5382ff6..8d67f41 100644
--- a/touch/touch.inf
+++ b/touch/touch.inf
@@ -39,23 +39,23 @@ FILE_GUID            = 2EBB94E8-3792-47bb-8843-4D5ED5B98F28
 COMPONENT_TYPE       = APPLICATION
 
 [sources.common]
-  ..\ShCommonStrings.uni
+  ../ShCommonStrings.uni
   TouchStrings.uni
   touch.c
     
 [includes.common]
   .
-  ..\Inc
-  ..\Library
-  $(EDK_SOURCE)\Foundation
-  $(EDK_SOURCE)\Foundation\Include
-  $(EDK_SOURCE)\Foundation\Include\IndustryStandard
-  $(EDK_SOURCE)\Foundation\Efi
-  $(EDK_SOURCE)\Foundation\Efi\Include
-  $(EDK_SOURCE)\Foundation\FrameWork
-  $(EDK_SOURCE)\Foundation\FrameWork\Include
-  $(EDK_SOURCE)\Foundation\Core\Dxe
-  $(DEST_DIR)\
+  ../Inc
+  ../Library
+  $(EDK_SOURCE)/Foundation
+  $(EDK_SOURCE)/Foundation/Include
+  $(EDK_SOURCE)/Foundation/Include/IndustryStandard
+  $(EDK_SOURCE)/Foundation/Efi
+  $(EDK_SOURCE)/Foundation/Efi/Include
+  $(EDK_SOURCE)/Foundation/FrameWork
+  $(EDK_SOURCE)/Foundation/FrameWork/Include
+  $(EDK_SOURCE)/Foundation/Core/Dxe
+  $(DEST_DIR./
 
 [libraries.common]  
   EfiShellLib
@@ -70,6 +70,11 @@ COMPONENT_TYPE       = APPLICATION
 
 [nmake.common]
   IMAGE_ENTRY_POINT=InitializeTouch
+
+[nmake.IA32, nmake.EBC, nmake.X64, nmake.IPF]
   C_STD_FLAGS = $(C_STD_FLAGS) /DSTRING_ARRAY_NAME=$(BASE_NAME)Strings 
   C_STD_FLAGS = $(C_STD_FLAGS) /DSTRING_DEFINES_FILE=\"$(BASE_NAME)StrDefs.h\"
   C_STD_FLAGS = $(C_STD_FLAGS) /DEFI_BOOTSHELL
+
+[nmake.ARM, nmake.AARCH64]
+  C_STD_FLAGS = $(C_STD_FLAGS) -DEFI_BOOTSHELL
diff --git a/type/type.c b/type/type.c
index 129f911..a4cf59d 100644
--- a/type/type.c
+++ b/type/type.c
@@ -59,7 +59,7 @@ BOOLEAN         TypeAscii;
 BOOLEAN         TypeUnicode;
 BOOLEAN         TypeAuto;
 
-EFI_HII_HANDLE  HiiHandle;
+STATIC EFI_HII_HANDLE  HiiHandle;
 EFI_GUID        EfiTypeGuid = EFI_TYPE_GUID;
 SHELL_VAR_CHECK_ITEM    TypeCheckList[] = {
   {
@@ -90,7 +90,7 @@ SHELL_VAR_CHECK_ITEM    TypeCheckList[] = {
     NULL,
     0,
     0,
-    0
+    (SHELL_VAR_CHECK_FLAG_TYPE) 0
   }
 };
 
diff --git a/type/type.h b/type/type.h
index b3c170c..f22e566 100644
--- a/type/type.h
+++ b/type/type.h
@@ -30,3 +30,4 @@ Revision History
   }
 
 #endif
+
diff --git a/type/type.inf b/type/type.inf
index efb0a82..0a8e7eb 100644
--- a/type/type.inf
+++ b/type/type.inf
@@ -40,24 +40,24 @@ COMPONENT_TYPE       = APPLICATION
 
 
 [sources.common]
-   ..\ShCommonStrings.uni   
+   ../ShCommonStrings.uni   
    TypeStrings.uni
    type.c
    type.h 
                                           
 [includes.common]
   .
-  ..\Inc
-  ..\Library
-  $(EDK_SOURCE)\Foundation
-  $(EDK_SOURCE)\Foundation\Include
-  $(EDK_SOURCE)\Foundation\Include\IndustryStandard
-  $(EDK_SOURCE)\Foundation\Efi
-  $(EDK_SOURCE)\Foundation\Efi\Include
-  $(EDK_SOURCE)\Foundation\FrameWork
-  $(EDK_SOURCE)\Foundation\FrameWork\Include
-  $(EDK_SOURCE)\Foundation\Core\Dxe
-  $(DEST_DIR)\
+  ../Inc
+  ../Library
+  $(EDK_SOURCE)/Foundation
+  $(EDK_SOURCE)/Foundation/Include
+  $(EDK_SOURCE)/Foundation/Include/IndustryStandard
+  $(EDK_SOURCE)/Foundation/Efi
+  $(EDK_SOURCE)/Foundation/Efi/Include
+  $(EDK_SOURCE)/Foundation/FrameWork
+  $(EDK_SOURCE)/Foundation/FrameWork/Include
+  $(EDK_SOURCE)/Foundation/Core/Dxe
+  $(DEST_DIR./
 
 [libraries.common]  
   EfiShellLib
@@ -72,7 +72,11 @@ COMPONENT_TYPE       = APPLICATION
 
 [nmake.common]
   IMAGE_ENTRY_POINT=InitializeType
+
+[nmake.IA32, nmake.EBC, nmake.X64, nmake.IPF]
   C_STD_FLAGS = $(C_STD_FLAGS) /DSTRING_ARRAY_NAME=$(BASE_NAME)Strings 
   C_STD_FLAGS = $(C_STD_FLAGS) /DSTRING_DEFINES_FILE=\"$(BASE_NAME)StrDefs.h\"
   C_STD_FLAGS = $(C_STD_FLAGS) /DEFI_BOOTSHELL
 
+[nmake.ARM, nmake.AARCH64]
+  C_STD_FLAGS = $(C_STD_FLAGS) -DEFI_BOOTSHELL
diff --git a/tzone/timezone.inf b/tzone/timezone.inf
index 57834c6..f0e8c1d 100644
--- a/tzone/timezone.inf
+++ b/tzone/timezone.inf
@@ -25,24 +25,24 @@ FILE_GUID            = E27B12B9-2647-4af3-ADBC-B5AB5FB50421
 COMPONENT_TYPE       = APPLICATION
 
 [sources.common]
-  ..\ShCommonStrings.uni
+  ../ShCommonStrings.uni
   TZoneStrings.uni
   tzone.c
   tzone.h
 
 [includes.common]
   .
-  ..\Inc
-  ..\Library
-  $(EDK_SOURCE)\Foundation
-  $(EDK_SOURCE)\Foundation\Include
-  $(EDK_SOURCE)\Foundation\Include\IndustryStandard
-  $(EDK_SOURCE)\Foundation\Efi
-  $(EDK_SOURCE)\Foundation\Efi\Include
-  $(EDK_SOURCE)\Foundation\FrameWork
-  $(EDK_SOURCE)\Foundation\FrameWork\Include
-  $(EDK_SOURCE)\Foundation\Core\Dxe
-  $(DEST_DIR)\
+  ../Inc
+  ../Library
+  $(EDK_SOURCE)/Foundation
+  $(EDK_SOURCE)/Foundation/Include
+  $(EDK_SOURCE)/Foundation/Include/IndustryStandard
+  $(EDK_SOURCE)/Foundation/Efi
+  $(EDK_SOURCE)/Foundation/Efi/Include
+  $(EDK_SOURCE)/Foundation/FrameWork
+  $(EDK_SOURCE)/Foundation/FrameWork/Include
+  $(EDK_SOURCE)/Foundation/Core/Dxe
+  $(DEST_DIR./
 
 [libraries.common]  
   EfiShellLib
@@ -62,11 +62,13 @@ COMPONENT_TYPE       = APPLICATION
 # we will specify some additional DEFINEs on the compile command line.
 #
 [nmake.common]
-  C_PROJ_FLAGS = $(C_PROJ_FLAGS) /Zm500
   IMAGE_ENTRY_POINT=InitializeTZone
+
+[nmake.IA32, nmake.EBC, nmake.X64, nmake.IPF]
+  C_PROJ_FLAGS = $(C_PROJ_FLAGS) /Zm500
   C_STD_FLAGS = $(C_STD_FLAGS) /DSTRING_ARRAY_NAME=$(BASE_NAME)Strings 
   C_STD_FLAGS = $(C_STD_FLAGS) /DSTRING_DEFINES_FILE=\"$(BASE_NAME)StrDefs.h\"
   C_STD_FLAGS = $(C_STD_FLAGS) /DEFI_BOOTSHELL
 
-
- 
\ No newline at end of file
+[nmake.ARM, nmake.AARCH64]
+  C_STD_FLAGS = $(C_STD_FLAGS) -DEFI_BOOTSHELL
diff --git a/tzone/tzone.c b/tzone/tzone.c
index 30cc513..2b6ccdd 100644
--- a/tzone/tzone.c
+++ b/tzone/tzone.c
@@ -65,7 +65,7 @@ SHELL_VAR_CHECK_ITEM    TzoneCheckList[] = {
     NULL,
     0,
     0,
-    0
+    (SHELL_VAR_CHECK_FLAG_TYPE) 0
   }
 };
 
@@ -258,7 +258,6 @@ InitializeTZone (
   BOOLEAN                 bList;
   BOOLEAN                 bSet;
   INT16                   nValue;
-  UINTN                   uValueSize;
   SHELL_VAR_CHECK_CODE    RetCode;
   CHAR16                  *Useful;
   SHELL_VAR_CHECK_PACKAGE ChkPck;
@@ -269,7 +268,6 @@ InitializeTZone (
   bList         = FALSE;
   bSet          = FALSE;
   nValue        = 0;
-  uValueSize    = sizeof (INTN);
   ZeroMem (&ChkPck, sizeof (SHELL_VAR_CHECK_PACKAGE));
   ZeroMem (&Time, sizeof (EFI_TIME));
   //
diff --git a/tzone/tzone.h b/tzone/tzone.h
index 08e049f..1cc0c2b 100644
--- a/tzone/tzone.h
+++ b/tzone/tzone.h
@@ -35,3 +35,4 @@ Revision History
   }
 
 #endif
+
diff --git a/unload/unload.c b/unload/unload.c
index 100f16b..5aee387 100644
--- a/unload/unload.c
+++ b/unload/unload.c
@@ -66,7 +66,7 @@ SHELL_VAR_CHECK_ITEM      UnloadCheckList[] = {
     NULL,
     0,
     0,
-    0
+    (SHELL_VAR_CHECK_FLAG_TYPE) 0
   }
 };
 
@@ -110,7 +110,7 @@ _UnloadGetDriverName (
       *DriverName = LibDevicePathToStr (Image->FilePath);
     }
   } else {
-    LibGetDriverName(DriverBindingHandle, Language, DriverName);
+    LibGetDriverName(DriverBindingHandle, (CHAR8*)Language, DriverName);
   }
 
   return EFI_SUCCESS;
@@ -184,7 +184,7 @@ Returns:
 
     DevicePath      = NULL;
     BestDeviceName  = NULL;
-    Status          = BS->HandleProtocol (Handle, &gEfiDevicePathProtocolGuid, &DevicePath);
+    Status          = BS->HandleProtocol (Handle, &gEfiDevicePathProtocolGuid, (VOID**)&DevicePath);
 
     Print (L"\n");
     PrintToken (STRING_TOKEN (STR_UNLOAD_CONTROLLER_NAME), HiiUnloadHandle);
@@ -242,14 +242,14 @@ Returns:
         Image = FALSE;
         Status = _UnloadGetDriverName (
                   DriverBindingHandleBuffer[Index],
-                  Language,
+                  (UINT8*)Language,
                   FALSE,
                   &DriverName
                   );
         if (DriverName == NULL) {
           Status = _UnloadGetDriverName (
                     DriverBindingHandleBuffer[Index],
-                    Language,
+                    (UINT8*)Language,
                     TRUE,
                     &DriverName
                     );
@@ -436,7 +436,7 @@ Returns:
 
   Status = _UnloadGetDriverName (
             Handle,
-            Language,
+            (UINT8*)Language,
             FALSE,
             &DriverName
             );
@@ -450,7 +450,7 @@ Returns:
 
   Status = _UnloadGetDriverName (
             Handle,
-            Language,
+            (UINT8*)Language,
             TRUE,
             &DriverName
             );
@@ -628,7 +628,7 @@ Returns:
 
       if (Prot->Handles[Index] == Handle) {
         Dump    = Verbose ? Prot->DumpInfo : Prot->DumpToken;
-        Status  = BS->HandleProtocol (Handle, &Prot->ProtocolId, &Interface);
+        Status  = BS->HandleProtocol (Handle, &Prot->ProtocolId, (VOID**)&Interface);
         if (!EFI_ERROR (Status)) {
           if (Verbose) {
             for (Index1 = 0; Index1 < ProtocolBufferCount; Index1++) {
@@ -676,7 +676,7 @@ Returns:
           goto Done;
         }
 
-        Status = BS->HandleProtocol (Handle, ProtocolBuffer[Index1], &Interface);
+        Status = BS->HandleProtocol (Handle, ProtocolBuffer[Index1], (VOID**)&Interface);
         if (!EFI_ERROR (Status)) {
           PrintToken (STRING_TOKEN (STR_UNLOAD_TWO_VARS_HG_NEW), HiiUnloadHandle, ProtocolBuffer[Index1], Interface);
         }
diff --git a/unload/unload.h b/unload/unload.h
index d6da802..4c99c85 100644
--- a/unload/unload.h
+++ b/unload/unload.h
@@ -36,3 +36,4 @@ Revision History
   }
 
 #endif
+
diff --git a/unload/unload.inf b/unload/unload.inf
index e91869e..fbc0fb3 100644
--- a/unload/unload.inf
+++ b/unload/unload.inf
@@ -39,23 +39,23 @@ FILE_GUID            = 409060F4-3E7B-44cc-9DFD-A8E807474888
 COMPONENT_TYPE       = APPLICATION
 
 [sources.common]
-  ..\ShCommonStrings.uni
+  ../ShCommonStrings.uni
   UnloadStrings.uni
   unload.c
     
 [includes.common]
   .
-  ..\Inc
-  ..\Library
-  $(EDK_SOURCE)\Foundation
-  $(EDK_SOURCE)\Foundation\Include
-  $(EDK_SOURCE)\Foundation\Include\IndustryStandard
-  $(EDK_SOURCE)\Foundation\Efi
-  $(EDK_SOURCE)\Foundation\Efi\Include
-  $(EDK_SOURCE)\Foundation\FrameWork
-  $(EDK_SOURCE)\Foundation\FrameWork\Include
-  $(EDK_SOURCE)\Foundation\Core\Dxe
-  $(DEST_DIR)\
+  ../Inc
+  ../Library
+  $(EDK_SOURCE)/Foundation
+  $(EDK_SOURCE)/Foundation/Include
+  $(EDK_SOURCE)/Foundation/Include/IndustryStandard
+  $(EDK_SOURCE)/Foundation/Efi
+  $(EDK_SOURCE)/Foundation/Efi/Include
+  $(EDK_SOURCE)/Foundation/FrameWork
+  $(EDK_SOURCE)/Foundation/FrameWork/Include
+  $(EDK_SOURCE)/Foundation/Core/Dxe
+  $(DEST_DIR./
 
 [libraries.common]  
   EfiShellLib
@@ -70,6 +70,11 @@ COMPONENT_TYPE       = APPLICATION
 
 [nmake.common]
   IMAGE_ENTRY_POINT=InitializeUnload
+
+[nmake.IA32, nmake.EBC, nmake.X64, nmake.IPF]
   C_STD_FLAGS = $(C_STD_FLAGS) /DSTRING_ARRAY_NAME=$(BASE_NAME)Strings 
   C_STD_FLAGS = $(C_STD_FLAGS) /DSTRING_DEFINES_FILE=\"$(BASE_NAME)StrDefs.h\"
   C_STD_FLAGS = $(C_STD_FLAGS) /DEFI_BOOTSHELL
+
+[nmake.ARM, nmake.AARCH64]
+  C_STD_FLAGS = $(C_STD_FLAGS) -DEFI_BOOTSHELL
diff --git a/ver/Ebc/verEbc.c b/ver/Ebc/verEbc.c
index 1d7368d..9518e14 100644
--- a/ver/Ebc/verEbc.c
+++ b/ver/Ebc/verEbc.c
@@ -45,7 +45,7 @@ DisplayExtendedVersionInfo (
   Status = BS->LocateProtocol (
                  &gEfiEbcProtocolGuid,
                  NULL,
-                 &Ebc
+                 (VOID**)&Ebc
                  );
   if (EFI_ERROR (Status)) {
     return ;
diff --git a/ver/Ver.inf b/ver/Ver.inf
index 56a135d..12ec23e 100644
--- a/ver/Ver.inf
+++ b/ver/Ver.inf
@@ -40,33 +40,33 @@ COMPONENT_TYPE       = APPLICATION
 
 
 [sources.common]
-   ..\ShCommonStrings.uni   
+   ../ShCommonStrings.uni   
    VerStrings.uni
    Ver.c
    Ver.h 
    
-[sources.ia32,sources.x64]
-   ia32\ver32.c
+[sources.ia32,sources.x64,sources.ARM,sources.AARCH64]
+   ia32/ver32.c
 
 [sources.ipf]
-   ipf\ver64.c
+   IPF/ver64.c
 
 [sources.ebc]
-   ebc\verEbc.c
+   eb./verEbc.c
                                           
 [includes.common]
   .
-  ..\Inc
-  ..\Library
-  $(EDK_SOURCE)\Foundation
-  $(EDK_SOURCE)\Foundation\Include
-  $(EDK_SOURCE)\Foundation\Include\IndustryStandard
-  $(EDK_SOURCE)\Foundation\Efi
-  $(EDK_SOURCE)\Foundation\Efi\Include
-  $(EDK_SOURCE)\Foundation\FrameWork
-  $(EDK_SOURCE)\Foundation\FrameWork\Include
-  $(EDK_SOURCE)\Foundation\Core\Dxe
-  $(DEST_DIR)\
+  ../Inc
+  ../Library
+  $(EDK_SOURCE)/Foundation
+  $(EDK_SOURCE)/Foundation/Include
+  $(EDK_SOURCE)/Foundation/Include/IndustryStandard
+  $(EDK_SOURCE)/Foundation/Efi
+  $(EDK_SOURCE)/Foundation/Efi/Include
+  $(EDK_SOURCE)/Foundation/FrameWork
+  $(EDK_SOURCE)/Foundation/FrameWork/Include
+  $(EDK_SOURCE)/Foundation/Core/Dxe
+  $(DEST_DIR./
 
 [libraries.common]  
   EfiShellLib
@@ -82,7 +82,11 @@ COMPONENT_TYPE       = APPLICATION
 
 [nmake.common]
   IMAGE_ENTRY_POINT=InitializeVer
+
+[nmake.IA32, nmake.EBC, nmake.X64, nmake.IPF]
   C_STD_FLAGS = $(C_STD_FLAGS) /DSTRING_ARRAY_NAME=$(BASE_NAME)Strings 
   C_STD_FLAGS = $(C_STD_FLAGS) /DSTRING_DEFINES_FILE=\"$(BASE_NAME)StrDefs.h\"
   C_STD_FLAGS = $(C_STD_FLAGS) /DEFI_BOOTSHELL
 
+[nmake.ARM, nmake.AARCH64]
+  C_STD_FLAGS = $(C_STD_FLAGS) -DEFI_BOOTSHELL
diff --git a/ver/ver.c b/ver/ver.c
index 76d50ca..56b95d4 100644
--- a/ver/ver.c
+++ b/ver/ver.c
@@ -57,7 +57,7 @@ SHELL_VAR_CHECK_ITEM    VerCheckList[] = {
     NULL,
     0,
     0,
-    0
+    (SHELL_VAR_CHECK_FLAG_TYPE) 0
   }
 };
 
diff --git a/ver/ver.h b/ver/ver.h
index 770e82f..c6adc30 100644
--- a/ver/ver.h
+++ b/ver/ver.h
@@ -37,3 +37,4 @@ DisplayExtendedVersionInfo (
   IN EFI_SYSTEM_TABLE   *SystemTable
   );
 #endif
+
diff --git a/vol/Vol.inf b/vol/Vol.inf
index 71d2cb5..cef8462 100644
--- a/vol/Vol.inf
+++ b/vol/Vol.inf
@@ -40,24 +40,24 @@ COMPONENT_TYPE       = APPLICATION
 
 
 [sources.common]
-   ..\ShCommonStrings.uni   
+   ../ShCommonStrings.uni   
    VolStrings.uni
    Vol.c
    Vol.h 
                                           
 [includes.common]
   .
-  ..\Inc
-  ..\Library
-  $(EDK_SOURCE)\Foundation
-  $(EDK_SOURCE)\Foundation\Include
-  $(EDK_SOURCE)\Foundation\Include\IndustryStandard
-  $(EDK_SOURCE)\Foundation\Efi
-  $(EDK_SOURCE)\Foundation\Efi\Include
-  $(EDK_SOURCE)\Foundation\FrameWork
-  $(EDK_SOURCE)\Foundation\FrameWork\Include
-  $(EDK_SOURCE)\Foundation\Core\Dxe
-  $(DEST_DIR)\
+  ../Inc
+  ../Library
+  $(EDK_SOURCE)/Foundation
+  $(EDK_SOURCE)/Foundation/Include
+  $(EDK_SOURCE)/Foundation/Include/IndustryStandard
+  $(EDK_SOURCE)/Foundation/Efi
+  $(EDK_SOURCE)/Foundation/Efi/Include
+  $(EDK_SOURCE)/Foundation/FrameWork
+  $(EDK_SOURCE)/Foundation/FrameWork/Include
+  $(EDK_SOURCE)/Foundation/Core/Dxe
+  $(DEST_DIR./
 
 [libraries.common]  
   EfiShellLib
@@ -72,7 +72,11 @@ COMPONENT_TYPE       = APPLICATION
 
 [nmake.common]
   IMAGE_ENTRY_POINT=InitializeVol
+
+[nmake.IA32, nmake.EBC, nmake.X64, nmake.IPF]
   C_STD_FLAGS = $(C_STD_FLAGS) /DSTRING_ARRAY_NAME=$(BASE_NAME)Strings 
   C_STD_FLAGS = $(C_STD_FLAGS) /DSTRING_DEFINES_FILE=\"$(BASE_NAME)StrDefs.h\"
   C_STD_FLAGS = $(C_STD_FLAGS) /DEFI_BOOTSHELL
 
+[nmake.ARM, nmake.AARCH64]
+  C_STD_FLAGS = $(C_STD_FLAGS) -DEFI_BOOTSHELL
diff --git a/vol/vol.c b/vol/vol.c
index 47a4de0..e86b298 100644
--- a/vol/vol.c
+++ b/vol/vol.c
@@ -32,7 +32,7 @@ extern UINT8    STRING_ARRAY_NAME[];
 //
 #include STRING_DEFINES_FILE
 
-EFI_HII_HANDLE  HiiHandle;
+STATIC EFI_HII_HANDLE  HiiHandle;
 EFI_GUID        EfiVolGuid = EFI_VOL_GUID;
 SHELL_VAR_CHECK_ITEM    VolCheckList[] = {
   {
@@ -63,7 +63,7 @@ SHELL_VAR_CHECK_ITEM    VolCheckList[] = {
     NULL,
     0,
     0,
-    0
+    (SHELL_VAR_CHECK_FLAG_TYPE) 0
   }
 };
 
diff --git a/vol/vol.h b/vol/vol.h
index 0d345dd..a9fe6d7 100644
--- a/vol/vol.h
+++ b/vol/vol.h
@@ -32,3 +32,4 @@ Revision History
   }
 
 #endif
+
-- 
1.8.5