#! armcc -E
/*
** ###################################################################
**     Processors:          LPC51U68JBD48
**                          LPC51U68JBD64
**
**     Compiler:            Keil ARM C/C++ Compiler
**     Reference manual:    LPC51U68 User manual User manual Rev. 1.0 13 Dec 2017
**     Version:             rev. 1.0, 2017-12-15
**     Build:               b180801
**
**     Abstract:
**         Linker file for the Keil ARM C/C++ Compiler
**
**     Copyright 2016 Freescale Semiconductor, Inc.
**     Copyright 2016-2018 NXP
**
**     SPDX-License-Identifier: BSD-3-Clause
**
**     http:                 www.nxp.com
**     mail:                 support@nxp.com
**
** ###################################################################
*/


/* Sizes */
#if (defined(__stack_size__))
  #define Stack_Size                   __stack_size__
#else
  #define Stack_Size                   0x0400
#endif

#if (defined(__heap_size__))
  #define Heap_Size                    __heap_size__
#else
  #define Heap_Size                    0x0400
#endif

#define  m_text_start                  0x00000000
#define  m_text_size                   0x00040000

#define  m_sramx_start                  0x04000000
#define  m_sramx_size                   0x00008000

#define  m_data_start                  0x20000000
#define  m_data_size                   0x00010000

LR_m_text m_text_start m_text_size {   ; load region size_region
  ER_m_text m_text_start FIXED m_text_size { ; load address = execution address
    * (RESET,+FIRST)
    * (InRoot$$Sections)
    .ANY (+RO)
  }

  RW_m_data m_sramx_start m_sramx_size { ; RW data
    .ANY (+RW +ZI)
  }
  RW_m_data_2 m_data_start m_data_size-Stack_Size-Heap_Size { ; RW data
    .ANY (+RW +ZI)
  }
  ARM_LIB_HEAP ((ImageLimit(RW_m_data_2) == m_data_start) ? m_data_start : +0) EMPTY Heap_Size {    ; Heap region growing up
  }
  ARM_LIB_STACK m_data_start+m_data_size EMPTY -Stack_Size { ; Stack region growing down
  }
}
