Index: trunk/src/VBox/Frontends/VirtualBox/src/settings/UIAdvancedSettingsDialogSpecific.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/settings/UIAdvancedSettingsDialogSpecific.cpp	(revision 101723)
+++ trunk/src/VBox/Frontends/VirtualBox/src/settings/UIAdvancedSettingsDialogSpecific.cpp	(revision 101724)
@@ -622,4 +622,17 @@
 }
 
+void UIAdvancedSettingsDialogMachine::sltHandlePlatformArchitectureChanged(KPlatformArchitecture enmArch)
+{
+    /* Update optional flags accordingly: */
+    QMap<QString, QVariant> optFlags = optionalFlags();
+    /* For x86 we no need the flag at all, removing if present: */
+    if (enmArch == KPlatformArchitecture_x86)
+        optFlags.remove("arch");
+    /* For ARM (and potentially rest) we need the flag: */
+    else if (enmArch == KPlatformArchitecture_ARM)
+        optFlags["arch"] = QVariant::fromValue(enmArch);
+    setOptionalFlags(optFlags);
+}
+
 void UIAdvancedSettingsDialogMachine::prepare()
 {
@@ -660,8 +673,10 @@
                 case MachineSettingsPageType_General:
                 {
-                    pSettingsPage = new UIMachineSettingsGeneral;
+                    UIMachineSettingsGeneral *pSettingsPageGeneral = new UIMachineSettingsGeneral;
                     addItem(":/machine_32px.png", ":/machine_24px.png", ":/machine_16px.png",
-                            iPageIndex, "#general", pSettingsPage);
+                            iPageIndex, "#general", pSettingsPageGeneral);
                     addPageHelpKeyword(iPageIndex, "generalsettings");
+                    connect(pSettingsPageGeneral, &UIMachineSettingsGeneral::sigPlatformArchitectureChanged,
+                            this, &UIAdvancedSettingsDialogMachine::sltHandlePlatformArchitectureChanged);
                     break;
                 }
Index: trunk/src/VBox/Frontends/VirtualBox/src/settings/UIAdvancedSettingsDialogSpecific.h
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/settings/UIAdvancedSettingsDialogSpecific.h	(revision 101723)
+++ trunk/src/VBox/Frontends/VirtualBox/src/settings/UIAdvancedSettingsDialogSpecific.h	(revision 101724)
@@ -144,4 +144,7 @@
     void sltMachineDataChanged(const QUuid &uMachineId);
 
+    /** Handles platform @a enmArch change. */
+    void sltHandlePlatformArchitectureChanged(KPlatformArchitecture enmArch);
+
 private:
 
Index: trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsGeneral.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsGeneral.cpp	(revision 101723)
+++ trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsGeneral.cpp	(revision 101724)
@@ -503,4 +503,20 @@
 }
 
+void UIMachineSettingsGeneral::sltHandleOsTypeChanged()
+{
+    /* Compose new guest OS type: */
+    const CGuestOSType comNewType = uiCommon().virtualBox().GetGuestOSType(guestOSTypeId());
+    /* Notify listeners about new platform architecture: */
+    if (comNewType.isNotNull())
+    {
+        const KPlatformArchitecture enmArch = comNewType.GetPlatformArchitecture();
+        if (comNewType.isOk() && enmArch != KPlatformArchitecture_None)
+            emit sigPlatformArchitectureChanged(enmArch);
+    }
+
+    /* Revalidate the usual way as well: */
+    revalidate();
+}
+
 void UIMachineSettingsGeneral::sltHandleEncryptionCipherChanged()
 {
@@ -702,5 +718,5 @@
     /* Configure 'Basic' connections: */
     connect(m_pEditorNameAndSystem, &UINameAndSystemEditor::sigOsTypeChanged,
-            this, &UIMachineSettingsGeneral::revalidate);
+            this, &UIMachineSettingsGeneral::sltHandleOsTypeChanged);
     connect(m_pEditorNameAndSystem, &UINameAndSystemEditor::sigNameChanged,
             this, &UIMachineSettingsGeneral::revalidate);
Index: trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsGeneral.h
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsGeneral.h	(revision 101723)
+++ trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsGeneral.h	(revision 101724)
@@ -51,4 +51,9 @@
     Q_OBJECT;
 
+signals:
+
+    /** Notifies listeners about platform @a enmArch changed. */
+    void sigPlatformArchitectureChanged(KPlatformArchitecture enmArch);
+
 public:
 
@@ -96,4 +101,7 @@
 
 private slots:
+
+    /** Handles OS type change. */
+    void sltHandleOsTypeChanged();
 
     /** Handles encryption cipher change. */
