diff --git a/targets/TARGET_RDA/TARGET_UNO_91H/device/TOOLCHAIN_ARM_STD/TARGET_UNO_91H/RDA5981C.sct b/targets/TARGET_RDA/TARGET_UNO_91H/device/TOOLCHAIN_ARM_STD/TARGET_UNO_91H/RDA5981C.sct
index 18794c8177..5303aa1ce0 100644
--- a/targets/TARGET_RDA/TARGET_UNO_91H/device/TOOLCHAIN_ARM_STD/TARGET_UNO_91H/RDA5981C.sct
+++ b/targets/TARGET_RDA/TARGET_UNO_91H/device/TOOLCHAIN_ARM_STD/TARGET_UNO_91H/RDA5981C.sct
@@ -27,6 +27,12 @@
 #define RDA_AHB1_BASE         (0x40100000)
 #define RDA_MEMC_BASE         (RDA_AHB1_BASE + 0x00000)
 
+#if !defined(MBED_BOOT_STACK_SIZE)
+  #define MBED_BOOT_STACK_SIZE 0x400
+#endif
+
+#define Stack_Size MBED_BOOT_STACK_SIZE
+
 ; max code size: RDA_CODE_SIZE
 LR_IROM1 RDA_CODE_BASE RDA_CODE_SIZE  {               ; load region size_region
   ER_IROM0 RDA_CODE_BASE RDA_CODE_SIZE  {             ; load address = execution address
@@ -37,11 +43,11 @@ LR_IROM1 RDA_CODE_BASE RDA_CODE_SIZE  {               ; load region size_region
   ; 8_byte_aligned(31 vect * 4 bytes) =  8_byte_aligned(0x7C) = 0x80
   ER_IRAMVEC RDA_IRAM_BASE EMPTY 0x80  {        ; Reserved for vectors
   }
-  ; IRAM Size: Total(128KB) - Vector(128B) - Stack(2KB)
-  RW_IRAM1 AlignExpr(+0, 8) (0x20000 - 0x80 - 0x800)  {
+  ; IRAM Size: Total(128KB) - Vector(128B) - Stack(1KB)
+  RW_IRAM1 AlignExpr(+0, 8) (0x20000 - 0x80 - Stack_Size)  {
    .ANY (+RW +ZI)
   }
-  ARM_LIB_STACK AlignExpr(+0, 8) EMPTY (RDA_IRAM_BASE + RDA_IRAM_SIZE - AlignExpr(ImageLimit(RW_IRAM1), 8))  {
+  ARM_LIB_STACK AlignExpr(+0, 8) EMPTY Stack_Size  {
   }
   ARM_LIB_HEAP RDA_DRAM_BASE EMPTY RDA_DRAM_SIZE  {
   }
diff --git a/targets/TARGET_RDA/TARGET_UNO_91H/device/TOOLCHAIN_GCC_ARM/TARGET_UNO_91H/RDA5981C.ld b/targets/TARGET_RDA/TARGET_UNO_91H/device/TOOLCHAIN_GCC_ARM/TARGET_UNO_91H/RDA5981C.ld
index 0b482f8138..a0fc5b9035 100644
--- a/targets/TARGET_RDA/TARGET_UNO_91H/device/TOOLCHAIN_GCC_ARM/TARGET_UNO_91H/RDA5981C.ld
+++ b/targets/TARGET_RDA/TARGET_UNO_91H/device/TOOLCHAIN_GCC_ARM/TARGET_UNO_91H/RDA5981C.ld
@@ -1,5 +1,11 @@
 /* Linker script for mbed RDA5981C */
 
+#if !defined(MBED_BOOT_STACK_SIZE)
+    #define MBED_BOOT_STACK_SIZE 0x400
+#endif
+
+STACK_SIZE = MBED_BOOT_STACK_SIZE;
+
 /* Linker script to configure memory regions. */
 MEMORY
 {
@@ -148,7 +154,7 @@ SECTIONS
     /* Set stack top to end of IRAM, and stack limit move down by
      * size of stack_dummy section */
     __StackTop = ORIGIN(IRAM) + LENGTH(IRAM);
-    __StackLimit = __StackTop - SIZEOF(.stack_dummy);
+    __StackLimit = __StackTop - STACK_SIZE;
     PROVIDE(__stack = __StackTop);
 
     /* Check if data + stack exceeds RAM limit */
diff --git a/targets/TARGET_RDA/TARGET_UNO_91H/device/TOOLCHAIN_IAR/TARGET_UNO_91H/RDA5981C.icf b/targets/TARGET_RDA/TARGET_UNO_91H/device/TOOLCHAIN_IAR/TARGET_UNO_91H/RDA5981C.icf
index 6972d29b3c..7ab0fe887c 100644
--- a/targets/TARGET_RDA/TARGET_UNO_91H/device/TOOLCHAIN_IAR/TARGET_UNO_91H/RDA5981C.icf
+++ b/targets/TARGET_RDA/TARGET_UNO_91H/device/TOOLCHAIN_IAR/TARGET_UNO_91H/RDA5981C.icf
@@ -36,7 +36,11 @@ define symbol WLAN_BASE         = RDA_MEMC_BASE + 0x19800;
 define symbol WLAN_END          = RDA_MEMC_END;
 
 /* Stack Size & Heap Size*/
-define symbol CSTACK_SIZE   = 0x00400;
+if (!isdefinedsymbol(MBED_BOOT_STACK_SIZE)) {
+    define symbol MBED_BOOT_STACK_SIZE = 0x400;
+}
+
+define symbol CSTACK_SIZE   = MBED_BOOT_STACK_SIZE;
 define symbol HEAP_SIZE     = RDA_DRAM_END - RDA_DRAM_BASE + 1;
 
 /*Memory regions*/