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

