diff --git a/common/Makefile.inc b/common/Makefile.inc
index ba48f85..7c5403b 100644
--- a/common/Makefile.inc
+++ b/common/Makefile.inc
@@ -79,6 +79,7 @@
 	    -e's/<\(ilk\|hsw\|skl\)\(...\)\?var>/$(_GEN_CONST_TARGET)/' \
 	    -e's/\(.*: *<cpufunc>.*:=\) *\(.*\);/\1\n     (\2);/' \
 	    -e's/\([^ ]\+\) *: *<cpufunc> \+\([^ ]*\) *:=/function \1 return \2 is/' \
+	    -e's/<cpunull>//' \
 	    $< >$@
 else
 $(hw-gfx-gma-config-ads): $(dir)/hw-gfx-gma-config.ads.template $(cnf)
@@ -93,18 +94,20 @@
 	    -e'/Dyn_CPU\(_Var\)\?/d' \
 	    -e's/<\(gen\|\(ilk\|hsw\|skl\)\(...\)\?\)bool>/constant Boolean/' \
 	    -e's/<\(\(ilk\|hsw\|skl\)\(...\)\?\)var>/constant/' \
+	    -e's/<cpunull>/ is null/' \
 	    $< >$@
 endif
 gfxinit-gen-y += $(hw-gfx-gma-config-ads)
+gfxinit-$(CONFIG_GFX_GMA_DYN_CPU) += dyncpu/hw-gfx-gma-config.adb
 
-ifneq ($(filter G45,$(CONFIG_GFX_GMA_CPU)),)
+ifneq ($(filter G45,$(CONFIG_GFX_GMA_GENERATION)),)
 subdirs-y += g45
-else ifneq ($(filter Ironlake Sandybridge Ivybridge,$(CONFIG_GFX_GMA_CPU)),)
+else ifneq ($(filter Ironlake,$(CONFIG_GFX_GMA_GENERATION)),)
 subdirs-y += ironlake
-else ifneq ($(filter Haswell Broadwell,$(CONFIG_GFX_GMA_CPU)),)
+else ifneq ($(filter Haswell,$(CONFIG_GFX_GMA_GENERATION)),)
 subdirs-y += haswell_shared haswell
-else ifneq ($(filter Broxton,$(CONFIG_GFX_GMA_CPU)),)
+else ifneq ($(filter Broxton,$(CONFIG_GFX_GMA_GENERATION)),)
 subdirs-y += haswell_shared broxton
-else ifneq ($(filter Skylake,$(CONFIG_GFX_GMA_CPU)),)
+else ifneq ($(filter Skylake,$(CONFIG_GFX_GMA_GENERATION)),)
 subdirs-y += haswell_shared skylake
 endif
diff --git a/common/dyncpu/hw-gfx-gma-config.adb b/common/dyncpu/hw-gfx-gma-config.adb
new file mode 100644
index 0000000..762ff6f
--- /dev/null
+++ b/common/dyncpu/hw-gfx-gma-config.adb
@@ -0,0 +1,31 @@
+--
+-- Copyright (C) 2018 Nico Huber <nico.h@gmx.de>
+--
+-- This program is free software; you can redistribute it and/or modify
+-- it under the terms of the GNU General Public License as published by
+-- the Free Software Foundation; either version 2 of the License, or
+-- (at your option) any later version.
+--
+-- This program is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+-- GNU General Public License for more details.
+--
+
+package body HW.GFX.GMA.Config
+is
+
+   procedure Detect_CPU (Device : Word16) is
+   begin
+      for CPU in Gen_CPU_Type loop
+         for CPU_Var in Gen_CPU_Variant loop
+            if Is_GPU (Device, CPU, CPU_Var) then
+               Config.CPU := CPU;
+               Config.CPU_Var := CPU_Var;
+               exit;
+            end if;
+         end loop;
+      end loop;
+   end Detect_CPU;
+
+end HW.GFX.GMA.Config;
diff --git a/common/hw-gfx-gma-config.ads.template b/common/hw-gfx-gma-config.ads.template
index 044036e..721252b 100644
--- a/common/hw-gfx-gma-config.ads.template
+++ b/common/hw-gfx-gma-config.ads.template
@@ -361,4 +361,8 @@
    function Compatible_GPU (Device_Id : Word16) return Boolean is
      (Is_GPU (Device_Id, CPU, CPU_Var));
 
+   pragma Warnings (GNATprove, Off, "subprogram ""Detect_CPU"" has no effect",
+                    Reason => "only effective in dynamic cpu config");
+   procedure Detect_CPU (Device : Word16)<cpunull>;
+
 end HW.GFX.GMA.Config;
diff --git a/common/hw-gfx-gma.adb b/common/hw-gfx-gma.adb
index 885072c..171d224 100644
--- a/common/hw-gfx-gma.adb
+++ b/common/hw-gfx-gma.adb
@@ -425,6 +425,7 @@
          Dev.Read16 (Vendor, PCI.Vendor_Id);
          Dev.Read16 (Device, PCI.Device_Id);
 
+         Config.Detect_CPU (Device);
          Success := Vendor = 16#8086# and Config.Compatible_GPU (Device);
       end Check_Platform_PCI;
    begin
@@ -443,29 +444,27 @@
             Cursor      => Default_Cursor,
             Mode        => HW.GFX.Invalid_Mode));
       Config.Variable := Config.Initial_Settings;
+      Registers.Set_Register_Base (Config.Default_MMIO_Base);
       PLLs.Initialize;
 
       Dev.Initialize (Success);
 
       if Success then
-         Dev.Map (PCI_MMIO_Base, PCI.Res0, Length => MMIO_GTT_Offset);
-         Dev.Map (PCI_GTT_Base, PCI.Res0, Offset => MMIO_GTT_Offset);
-         if PCI_MMIO_Base /= 0 and PCI_GTT_Base /= 0 then
-            Registers.Set_Register_Base (PCI_MMIO_Base, PCI_GTT_Base);
-         else
-            pragma Debug (Debug.Put_Line
-              ("ERROR: Couldn't map resoure0."));
-            Registers.Set_Register_Base (Config.Default_MMIO_Base);
-            Success := Config.Default_MMIO_Base_Set;
-         end if;
-
+         Check_Platform_PCI (Success);
          if Success then
-            Check_Platform_PCI (Success);
+            Dev.Map (PCI_MMIO_Base, PCI.Res0, Length => MMIO_GTT_Offset);
+            Dev.Map (PCI_GTT_Base, PCI.Res0, Offset => MMIO_GTT_Offset);
+            if PCI_MMIO_Base /= 0 and PCI_GTT_Base /= 0 then
+               Registers.Set_Register_Base (PCI_MMIO_Base, PCI_GTT_Base);
+            else
+               pragma Debug (Debug.Put_Line
+                 ("ERROR: Couldn't map resoure0."));
+               Success := Config.Default_MMIO_Base_Set;
+            end if;
          end if;
       else
          pragma Debug (Debug.Put_Line
            ("WARNING: Couldn't initialize PCI dev."));
-         Registers.Set_Register_Base (Config.Default_MMIO_Base);
          Success := Config.Default_MMIO_Base_Set;
 
          if Success then
