diff --git a/boards/mulle/Makefile.include b/boards/mulle/Makefile.include
index bd2c87111d25cb828c97980577f4f867f23ec8ae..8c8511c091d3453979ff0c6c8cac4c428fb64d39 100644
--- a/boards/mulle/Makefile.include
+++ b/boards/mulle/Makefile.include
@@ -17,7 +17,7 @@ endif
 # The linker script needs to know the flash and RAM sizes of the device.
 
 ifeq ($(CPU_MODEL),)
-  CPU_MODEL = K60DN512VLL10
+  CPU_MODEL = mk60dn512vll10
 endif
 
 export CPU_MODEL
diff --git a/cpu/k60/include/cpu_conf.h b/cpu/k60/include/cpu_conf.h
index 42d158363952b91ce5bcbcb61daaff3cff95afb7..76664982cc38d5977d5e2016a92769d5cdfa8f9d 100644
--- a/cpu/k60/include/cpu_conf.h
+++ b/cpu/k60/include/cpu_conf.h
@@ -30,7 +30,7 @@ extern "C"
 
 #include <stdint.h>
 
-#if defined(CPU_MODEL_K60DN512VLL10) || defined(CPU_MODEL_K60DN256VLL10)
+#if defined(CPU_MODEL_MK60DN512VLL10) || defined(CPU_MODEL_MK60DN256VLL10)
 #include "vendor/MK60D10.h"
 
 /** The expected CPUID value, can be used to implement a check that we are
diff --git a/cpu/k60/ldscripts/mk60dn256vll10.ld b/cpu/k60/ldscripts/mk60dn256vll10.ld
new file mode 120000
index 0000000000000000000000000000000000000000..50d00315ee37f5c456b92f169f03086c11161c9a
--- /dev/null
+++ b/cpu/k60/ldscripts/mk60dn256vll10.ld
@@ -0,0 +1 @@
+../../kinetis_common/ldscripts/kinetis_f256l32u32.ld
\ No newline at end of file
diff --git a/cpu/k60/ldscripts/mk60dn512vll10.ld b/cpu/k60/ldscripts/mk60dn512vll10.ld
new file mode 120000
index 0000000000000000000000000000000000000000..1bdedcfa902b7d166705d1f0401f0b707c120dbf
--- /dev/null
+++ b/cpu/k60/ldscripts/mk60dn512vll10.ld
@@ -0,0 +1 @@
+../../kinetis_common/ldscripts/kinetis_f512l64u64.ld
\ No newline at end of file
diff --git a/cpu/k64f/ldscripts/mk64fn1m0vll12.ld b/cpu/k64f/ldscripts/mk64fn1m0vll12.ld
deleted file mode 100644
index cc1ca52fe761c4f2327d3fcbbeae569a370916b2..0000000000000000000000000000000000000000
--- a/cpu/k64f/ldscripts/mk64fn1m0vll12.ld
+++ /dev/null
@@ -1,12 +0,0 @@
-OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
-OUTPUT_ARCH(arm)
-
-MEMORY
-{
-    vectors (rx) : ORIGIN = 0x00000000, LENGTH = 0x400
-    flashsec (rx): ORIGIN = 0x00000400, LENGTH = 0x10
-    rom (rx)     : ORIGIN = 0x00000410, LENGTH = 1024K - 0x410
-    ram (rwx)    : ORIGIN = 0x1fff0198, LENGTH = 256K-0x198
-}
-
-INCLUDE kinetis.ld
diff --git a/cpu/k64f/ldscripts/mk64fn1m0vll12.ld b/cpu/k64f/ldscripts/mk64fn1m0vll12.ld
new file mode 120000
index 0000000000000000000000000000000000000000..15a9009f46928bc3aaface7ff6ce8567d0fd1177
--- /dev/null
+++ b/cpu/k64f/ldscripts/mk64fn1m0vll12.ld
@@ -0,0 +1 @@
+../../kinetis_common/ldscripts/kinetis_f1024l64u192.ld
\ No newline at end of file
diff --git a/cpu/kinetis_common/ldscripts/kinetis_f1024l64u192.ld b/cpu/kinetis_common/ldscripts/kinetis_f1024l64u192.ld
new file mode 100644
index 0000000000000000000000000000000000000000..dd6b9e75c5e8580f1c8edead5c0f84d4fd2b7b69
--- /dev/null
+++ b/cpu/kinetis_common/ldscripts/kinetis_f1024l64u192.ld
@@ -0,0 +1,18 @@
+/*
+ * NXP Kinetis CPU with the following memory layout:
+ * 1024 kB flash @ 0x00000000
+ * 256 kB RAM, split into two banks: 64 kB SRAM_L, 192 kB SRAM_U.
+ * SRAM_L ends at 0x1fffffff, SRAM_U begins at 0x20000000
+ */
+OUTPUT_FORMAT ("elf32-littlearm", "elf32-bigarm", "elf32-littlearm")
+OUTPUT_ARCH(arm)
+
+MEMORY
+{
+    vectors (rx)   : ORIGIN = 0x00000000,       LENGTH = 0x400
+    flashsec (rx)  : ORIGIN = 0x00000400,       LENGTH = 0x10
+    rom (rx)       : ORIGIN = 0x00000410,       LENGTH = 1024K - 0x410
+    ram (rwx)      : ORIGIN = 0x20000000 - 64K, LENGTH = 256K
+}
+
+INCLUDE kinetis.ld
diff --git a/cpu/kinetis_common/ldscripts/kinetis_f256l16u16.ld b/cpu/kinetis_common/ldscripts/kinetis_f256l16u16.ld
new file mode 100644
index 0000000000000000000000000000000000000000..04ca2817188b26f482314050a456bfd8be4cda3d
--- /dev/null
+++ b/cpu/kinetis_common/ldscripts/kinetis_f256l16u16.ld
@@ -0,0 +1,18 @@
+/*
+ * NXP Kinetis CPU with the following memory layout:
+ * 256 kB flash @ 0x00000000
+ * 32 kB RAM, split into two banks: 16 kB SRAM_L, 16 kB SRAM_U.
+ * SRAM_L ends at 0x1fffffff, SRAM_U begins at 0x20000000
+ */
+OUTPUT_FORMAT ("elf32-littlearm", "elf32-bigarm", "elf32-littlearm")
+OUTPUT_ARCH(arm)
+
+MEMORY
+{
+    vectors (rx)   : ORIGIN = 0x00000000,       LENGTH = 0x400
+    flashsec (rx)  : ORIGIN = 0x00000400,       LENGTH = 0x10
+    rom (rx)       : ORIGIN = 0x00000410,       LENGTH = 256K - 0x410
+    ram (rwx)      : ORIGIN = 0x20000000 - 16K, LENGTH = 32K
+}
+
+INCLUDE kinetis.ld
diff --git a/cpu/k60/ldscripts/K60DN256VLL10.ld b/cpu/kinetis_common/ldscripts/kinetis_f256l32u32.ld
similarity index 63%
rename from cpu/k60/ldscripts/K60DN256VLL10.ld
rename to cpu/kinetis_common/ldscripts/kinetis_f256l32u32.ld
index 0112ddc388b97fffed06193e655e2ace0d3e0e96..b05470c1242995b650df9e4bddef8b9722d17151 100644
--- a/cpu/k60/ldscripts/K60DN256VLL10.ld
+++ b/cpu/kinetis_common/ldscripts/kinetis_f256l32u32.ld
@@ -1,3 +1,9 @@
+/*
+ * NXP Kinetis CPU with the following memory layout:
+ * 256 kB flash @ 0x00000000
+ * 64 kB RAM, split into two banks: 32 kB SRAM_L, 32 kB SRAM_U.
+ * SRAM_L ends at 0x1fffffff, SRAM_U begins at 0x20000000
+ */
 OUTPUT_FORMAT ("elf32-littlearm", "elf32-bigarm", "elf32-littlearm")
 OUTPUT_ARCH(arm)
 
diff --git a/cpu/kinetis_common/ldscripts/kinetis_f512l32u32.ld b/cpu/kinetis_common/ldscripts/kinetis_f512l32u32.ld
new file mode 100644
index 0000000000000000000000000000000000000000..db40a5ac30a57eb1e553c2a1a55ec8972f000468
--- /dev/null
+++ b/cpu/kinetis_common/ldscripts/kinetis_f512l32u32.ld
@@ -0,0 +1,18 @@
+/*
+ * NXP Kinetis CPU with the following memory layout:
+ * 512 kB flash @ 0x00000000
+ * 64 kB RAM, split into two banks: 32 kB SRAM_L, 32 kB SRAM_U.
+ * SRAM_L ends at 0x1fffffff, SRAM_U begins at 0x20000000
+ */
+OUTPUT_FORMAT ("elf32-littlearm", "elf32-bigarm", "elf32-littlearm")
+OUTPUT_ARCH(arm)
+
+MEMORY
+{
+    vectors (rx)   : ORIGIN = 0x00000000,       LENGTH = 0x400
+    flashsec (rx)  : ORIGIN = 0x00000400,       LENGTH = 0x10
+    rom (rx)       : ORIGIN = 0x00000410,       LENGTH = 512K - 0x410
+    ram (rwx)      : ORIGIN = 0x20000000 - 32K, LENGTH = 64K
+}
+
+INCLUDE kinetis.ld
diff --git a/cpu/k60/ldscripts/K60DN512VLL10.ld b/cpu/kinetis_common/ldscripts/kinetis_f512l64u64.ld
similarity index 63%
rename from cpu/k60/ldscripts/K60DN512VLL10.ld
rename to cpu/kinetis_common/ldscripts/kinetis_f512l64u64.ld
index 84b7808a0d86156b259eb3b44a3d02a827506ab2..d32dc70299b413e95030fc0cc110633ed9608ba1 100644
--- a/cpu/k60/ldscripts/K60DN512VLL10.ld
+++ b/cpu/kinetis_common/ldscripts/kinetis_f512l64u64.ld
@@ -1,3 +1,9 @@
+/*
+ * NXP Kinetis CPU with the following memory layout:
+ * 512 kB flash @ 0x00000000
+ * 128 kB RAM, split into two banks: 64 kB SRAM_L, 64 kB SRAM_U.
+ * SRAM_L ends at 0x1fffffff, SRAM_U begins at 0x20000000
+ */
 OUTPUT_FORMAT ("elf32-littlearm", "elf32-bigarm", "elf32-littlearm")
 OUTPUT_ARCH(arm)
 
diff --git a/cpu/kw2xd/ldscripts/kw21d256.ld b/cpu/kw2xd/ldscripts/kw21d256.ld
deleted file mode 100644
index 550b8d7bbf2123cfb55bf1ca78ce7f7f0e588bba..0000000000000000000000000000000000000000
--- a/cpu/kw2xd/ldscripts/kw21d256.ld
+++ /dev/null
@@ -1,12 +0,0 @@
-OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
-OUTPUT_ARCH(arm)
-
-MEMORY
-{
-    vectors (rx) : ORIGIN = 0x00000000, LENGTH = 0x400
-    flashsec (rx): ORIGIN = 0x00000400, LENGTH = 0x10
-    rom (rx)     : ORIGIN = 0x00000410, LENGTH = 256K - 0x410
-    ram (rwx)    : ORIGIN = 0x1fffc000, LENGTH = 32K
-}
-
-INCLUDE kinetis.ld
diff --git a/cpu/kw2xd/ldscripts/kw21d256.ld b/cpu/kw2xd/ldscripts/kw21d256.ld
new file mode 120000
index 0000000000000000000000000000000000000000..e09262189b1e91b2342f7daa03ea0603802e9459
--- /dev/null
+++ b/cpu/kw2xd/ldscripts/kw21d256.ld
@@ -0,0 +1 @@
+../../kinetis_common/ldscripts/kinetis_f256l16u16.ld
\ No newline at end of file
diff --git a/cpu/kw2xd/ldscripts/kw21d512.ld b/cpu/kw2xd/ldscripts/kw21d512.ld
deleted file mode 100644
index f5c8e86eb58d8bd185c38218bb496c20f70ec84d..0000000000000000000000000000000000000000
--- a/cpu/kw2xd/ldscripts/kw21d512.ld
+++ /dev/null
@@ -1,12 +0,0 @@
-OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
-OUTPUT_ARCH(arm)
-
-MEMORY
-{
-    vectors (rx) : ORIGIN = 0x00000000, LENGTH = 0x400
-    flashsec (rx): ORIGIN = 0x00000400, LENGTH = 0x10
-    rom (rx)     : ORIGIN = 0x00000410, LENGTH = 512K - 0x410
-    ram (rwx)    : ORIGIN = 0x1fff8000, LENGTH = 64K
-}
-
-INCLUDE kinetis.ld
diff --git a/cpu/kw2xd/ldscripts/kw21d512.ld b/cpu/kw2xd/ldscripts/kw21d512.ld
new file mode 120000
index 0000000000000000000000000000000000000000..857dfdafa8ce5da5d270ec9e83173b40af13d8c0
--- /dev/null
+++ b/cpu/kw2xd/ldscripts/kw21d512.ld
@@ -0,0 +1 @@
+../../kinetis_common/ldscripts/kinetis_f512l32u32.ld
\ No newline at end of file
diff --git a/cpu/kw2xd/ldscripts/kw22d512.ld b/cpu/kw2xd/ldscripts/kw22d512.ld
deleted file mode 100644
index f5c8e86eb58d8bd185c38218bb496c20f70ec84d..0000000000000000000000000000000000000000
--- a/cpu/kw2xd/ldscripts/kw22d512.ld
+++ /dev/null
@@ -1,12 +0,0 @@
-OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
-OUTPUT_ARCH(arm)
-
-MEMORY
-{
-    vectors (rx) : ORIGIN = 0x00000000, LENGTH = 0x400
-    flashsec (rx): ORIGIN = 0x00000400, LENGTH = 0x10
-    rom (rx)     : ORIGIN = 0x00000410, LENGTH = 512K - 0x410
-    ram (rwx)    : ORIGIN = 0x1fff8000, LENGTH = 64K
-}
-
-INCLUDE kinetis.ld
diff --git a/cpu/kw2xd/ldscripts/kw22d512.ld b/cpu/kw2xd/ldscripts/kw22d512.ld
new file mode 120000
index 0000000000000000000000000000000000000000..857dfdafa8ce5da5d270ec9e83173b40af13d8c0
--- /dev/null
+++ b/cpu/kw2xd/ldscripts/kw22d512.ld
@@ -0,0 +1 @@
+../../kinetis_common/ldscripts/kinetis_f512l32u32.ld
\ No newline at end of file