diff --git a/BaseTools/BuildEnv b/BaseTools/BuildEnv
index ca8a578..b145603 100755
--- a/BaseTools/BuildEnv
+++ b/BaseTools/BuildEnv
@@ -141,6 +141,7 @@ GetBaseToolsBinSubDir() {
   UNAME_DIRNAME=`uname -sm`
   UNAME_DIRNAME=${UNAME_DIRNAME// /-}
   UNAME_DIRNAME=${UNAME_DIRNAME//\//-}
+  UNAME_DIRNAME=${UNAME_DIRNAME//Linux-i?86/Linux-i686}
   echo $UNAME_DIRNAME
 }
 
diff --git a/BaseTools/Source/C/GNUmakefile b/BaseTools/Source/C/GNUmakefile
index ad034be..77c726a 100644
--- a/BaseTools/Source/C/GNUmakefile
+++ b/BaseTools/Source/C/GNUmakefile
@@ -25,9 +25,18 @@ ifndef ARCH
   ifeq ($(uname_m),i386)
     ARCH=IA32
   endif
+  ifeq ($(uname_m),i486)
+    ARCH=IA32
+  endif
+  ifeq ($(uname_m),i586)
+    ARCH=IA32
+  endif
   ifeq ($(uname_m),i686)
     ARCH=IA32
   endif
+  ifeq ($(uname_m),i786)
+    ARCH=IA32
+  endif
   ifndef ARCH
     $(info Could not detected ARCH from uname results)
     $(error ARCH is not defined!)
diff --git a/EmulatorPkg/build.sh b/EmulatorPkg/build.sh
index 111619f..7d4bfb5 100755
--- a/EmulatorPkg/build.sh
+++ b/EmulatorPkg/build.sh
@@ -74,9 +74,18 @@ case `uname` in
       i386)
         HOST_PROCESSOR=IA32
         ;;
+      i486)
+        HOST_PROCESSOR=IA32
+        ;;
+      i586)
+        HOST_PROCESSOR=IA32
+        ;;
       i686)
         HOST_PROCESSOR=IA32
         ;;
+      i786)
+        HOST_PROCESSOR=IA32
+        ;;
       x86_64)
         HOST_PROCESSOR=X64
         ;;
