diff --git a/arch/cpu/arm/cortex-m/Makefile.cortex-m b/arch/cpu/arm/cortex-m/Makefile.cortex-m
index 444df05cd2307bcd36987c45ab58f81c4bd45fcf..aebcf2bddbcbcaa241049ff4d72ebc0f9d713cca 100644
--- a/arch/cpu/arm/cortex-m/Makefile.cortex-m
+++ b/arch/cpu/arm/cortex-m/Makefile.cortex-m
@@ -1,3 +1,14 @@
 CONTIKI_ARM_DIRS += cortex-m cortex-m/CMSIS
 
+### Build syscalls for newlib
+MODULES += os/lib/newlib
+
+CUSTOM_RULE_LINK = 1
+
+.SECONDEXPANSION:
+
+%.elf: $(CPU_STARTFILES) $$(CONTIKI_OBJECTFILES) %.o $(PROJECT_OBJECTFILES) $(PROJECT_LIBRARIES) $(LDSCRIPT) $(TARGET_LIBS)
+	$(TRACE_LD)
+	$(Q)$(LD) $(LDFLAGS) ${filter-out $(LDSCRIPT) %.a,$^} ${filter %.a,$^} $(TARGET_LIBFLAGS) -o $@
+
 include $(CONTIKI)/arch/cpu/arm/Makefile.arm
diff --git a/arch/cpu/arm/cortex-m/cm3/Makefile.cm3 b/arch/cpu/arm/cortex-m/cm3/Makefile.cm3
index 6bd76135cb254a69e1f2450b06ef64ac94ed31e5..3cf216bfbaa452c9542e8e5db6ed8392c3e670a4 100644
--- a/arch/cpu/arm/cortex-m/cm3/Makefile.cm3
+++ b/arch/cpu/arm/cortex-m/cm3/Makefile.cm3
@@ -9,22 +9,10 @@ LDFLAGS += -Wl,-Map=$(CONTIKI_NG_PROJECT_MAP),--cref,--no-warn-mismatch
 
 OBJCOPY_FLAGS += --gap-fill 0xff
 
-### Build syscalls for newlib
-MODULES += os/lib/newlib
-
 CPU_STARTFILES = ${addprefix $(OBJECTDIR)/,${call oname, $(CPU_START_SOURCEFILES)}}
 
-### Compilation rules
-CUSTOM_RULE_LINK = 1
-
 ### Resolve any potential circular dependencies between the linked libraries
 ### See: https://stackoverflow.com/questions/5651869/gcc-what-are-the-start-group-and-end-group-command-line-options/5651895
 TARGET_LIBFLAGS := -Wl,--start-group $(TARGET_LIBFILES) -lm -Wl,--end-group
 
-.SECONDEXPANSION:
-
-%.elf: $(CPU_STARTFILES) $$(CONTIKI_OBJECTFILES) %.o $(PROJECT_OBJECTFILES) $(PROJECT_LIBRARIES) $(LDSCRIPT)
-	$(TRACE_LD)
-	$(Q)$(LD) $(LDFLAGS) ${filter-out $(LDSCRIPT) %.a,$^} ${filter %.a,$^} $(TARGET_LIBFLAGS) -o $@
-
 include $(CONTIKI)/arch/cpu/arm/cortex-m/Makefile.cortex-m
diff --git a/arch/cpu/arm/cortex-m/cm4/Makefile.cm4 b/arch/cpu/arm/cortex-m/cm4/Makefile.cm4
index 110e0697b34dd9bfd5ae377275b24351de1e59ed..b0b592e43eed38208dd3adb797d95f695704153e 100644
--- a/arch/cpu/arm/cortex-m/cm4/Makefile.cm4
+++ b/arch/cpu/arm/cortex-m/cm4/Makefile.cm4
@@ -9,20 +9,10 @@ LDFLAGS += -Wl,-Map=$(CONTIKI_NG_PROJECT_MAP),--cref,--no-warn-mismatch
 
 OBJCOPY_FLAGS += --gap-fill 0xff
 
-### Build syscalls for newlib
-MODULES += os/lib/newlib
-
 CPU_STARTFILES = ${addprefix $(OBJECTDIR)/,${call oname, $(CPU_START_SOURCEFILES)}}
 
-### Compilation rules
-CUSTOM_RULE_LINK = 1
-
 ### Resolve any potential circular dependencies between the linked libraries
 ### See: https://stackoverflow.com/questions/5651869/gcc-what-are-the-start-group-and-end-group-command-line-options/5651895
 TARGET_LIBFLAGS := -Wl,--start-group $(TARGET_LIBFILES) -Wl,--end-group
 
-%.elf: $(CPU_STARTFILES) %.o $(PROJECT_OBJECTFILES) $(PROJECT_LIBRARIES) $(CONTIKI_NG_TARGET_LIB) $(TARGET_LIBS)
-	$(TRACE_LD)
-	$(Q)$(LD) $(LDFLAGS) ${filter %.o %.a,$^} $(TARGET_LIBFLAGS) -o $@
-
 include $(CONTIKI)/arch/cpu/arm/cortex-m/Makefile.cortex-m
diff --git a/arch/cpu/cc26xx-cc13xx/cc26xx.ld b/arch/cpu/cc26xx-cc13xx/cc26xx.ld
index 649da32cfcb45ca8bb3a851832e6e31cc82f58ef..4ea422558bcbc4ecbb17c7bf883748e40965a889 100644
--- a/arch/cpu/cc26xx-cc13xx/cc26xx.ld
+++ b/arch/cpu/cc26xx-cc13xx/cc26xx.ld
@@ -96,6 +96,8 @@ SECTIONS
     /* These symbols are used by the stack check library. */
     _stack = .;
     _stack_origin = ORIGIN(SRAM) + LENGTH(SRAM);
+    _heap = _stack;
+    _eheap = _stack_origin;
 
     .ccfg :
     {
diff --git a/arch/cpu/nrf52832/ld/nrf52-pca10036-sd.ld b/arch/cpu/nrf52832/ld/nrf52-pca10036-sd.ld
index f3bc5bc4369e5f882fc1c16c659b637950623d0a..2afa9e6e206dba17adfc73a5fe84a82d47c6098e 100644
--- a/arch/cpu/nrf52832/ld/nrf52-pca10036-sd.ld
+++ b/arch/cpu/nrf52832/ld/nrf52-pca10036-sd.ld
@@ -14,3 +14,5 @@ INCLUDE "nrf5x_common.ld"
 /* These symbols are used by the stack check library. */
 _stack = end;
 _stack_origin = ORIGIN(RAM) + LENGTH(RAM);
+_heap = _stack;
+_eheap = _stack_origin;
diff --git a/arch/cpu/nrf52832/ld/nrf52-pca10040-sd.ld b/arch/cpu/nrf52832/ld/nrf52-pca10040-sd.ld
index 0bc7349e39d1a0bf419d5a1e8008fdf663ee9fdc..b2c747f0a8bd0ae6448b38aa5a72f4e244c77158 100644
--- a/arch/cpu/nrf52832/ld/nrf52-pca10040-sd.ld
+++ b/arch/cpu/nrf52832/ld/nrf52-pca10040-sd.ld
@@ -14,3 +14,5 @@ INCLUDE "nrf5x_common.ld"
 /* These symbols are used by the stack check library. */
 _stack = end;
 _stack_origin = ORIGIN(RAM) + LENGTH(RAM);
+_heap = _stack;
+_eheap = _stack_origin;
diff --git a/arch/cpu/nrf52832/ld/nrf52.ld b/arch/cpu/nrf52832/ld/nrf52.ld
index 87fc9152d5297d731584e7b7079472e5827d2aa5..3fead12502dbe05da3b0ccd1aafc74b9f0acd59d 100644
--- a/arch/cpu/nrf52832/ld/nrf52.ld
+++ b/arch/cpu/nrf52832/ld/nrf52.ld
@@ -14,3 +14,5 @@ INCLUDE "nrf5x_common.ld"
 /* These symbols are used by the stack check library. */
 _stack = end;
 _stack_origin = ORIGIN(RAM) + LENGTH(RAM);
+_heap = _stack;
+_eheap = _stack_origin;