/******************************************************************************
 * AVR32 AT32UC3B164 XLINK command file for AVR32 IAR C/C++ Compiler.
 *
 * The assumed memory layout is the one of the AT32UC3B164:
 *
 *   Start       Stop        Name     Type
 *   ----------  ----------  -----    --------------
 *   0x00000000  0x00003FFF  SRAM     RAM
 *   0x80000000  0x8000FFFF  FLASH    FLASH
 *
 * Usage:  xlink  your_file(s)  -f xcl-file  libraries
 *
 * - Compiler:           IAR EWAVR32
 * - Supported devices:  AVR32 AT32UC3B164
 *
 * - author              Atmel Corporation: http://www.atmel.com \n
 *                       Support and FAQ: http://support.atmel.no/
 *
 ******************************************************************************/

/* Copyright (c) 2007, Atmel Corporation All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are met:
 *
 * 1. Redistributions of source code must retain the above copyright notice,
 * this list of conditions and the following disclaimer.
 *
 * 2. Redistributions in binary form must reproduce the above copyright notice,
 * this list of conditions and the following disclaimer in the documentation
 * and/or other materials provided with the distribution.
 *
 * 3. The name of ATMEL may not be used to endorse or promote products derived
 * from this software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY ATMEL ``AS IS'' AND ANY EXPRESS OR IMPLIED
 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE EXPRESSLY AND
 * SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT,
 * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */


/************************************************************************/
/*      The following segments are defined in this link file:           */
/*                                                                      */
/*      Code segments                                                   */
/*      CODE32    -- Program code used by __code32 functions.           */
/*      RESET     -- Reset code.                                        */
/*      EVSEG     -- Exception vector handlers.                         */
/*                                                                      */
/*      Constant segments                                               */
/*      INITTAB   -- Segment initializer table.                         */
/*      DIFUNCT   -- Dynamic initialization vector used by C++.         */
/*      SWITCH    -- Switch tables.                                     */
/*      ACTAB     -- Table of pointers to acall functions.              */
/*                                                                      */
/*      DATA21_ID -- Initialization data for DATA21_I.                  */
/*      DATA32_ID -- Initialization data for DATA32_I.                  */
/*      DATA32_C  -- Constant __data32 data.                            */
/*                                                                      */
/*      CHECKSUM  -- Checksum segment.                                  */
/*                                                                      */
/*      Data segments                                                   */
/*      DATA21_I  -- Initialized __data21 data with non-zero            */
/*                   initial value.                                     */
/*      DATA32_I  -- Initialized __data32 data with non-zero            */
/*                   initial value.                                     */
/*      DATA21_Z  -- Initialized __data21 data with zero initial value. */
/*      DATA32_Z  -- Initialized __data32 data with zero initial value. */
/*      DATA21_N  -- Non-initialized __data21.                          */
/*      DATA32_N  -- Non-initialized __data32.                          */
/*      SSTACK    -- The system stack.                                  */
/*      CSTACK    -- The application stack.                             */
/*      HEAP      -- The heap used by malloc and free.                  */
/*                                                                      */
/************************************************************************/

/************************************************************************/
/*      Define CPU                                                      */
/************************************************************************/

-cavr32

// Declare the IPR0 memory location
-DIPR0=FFFF0800

/************************************************************************/
/*      Reset code is located at address 0x80000000 and up.             */
/************************************************************************/

-Z(CODE)RESET=80000000-8000FFFF

/************************************************************************/
/*      The exception handler code is located at address 0x80000000     */
/*      and up. Make sure that the exception table gets properly        */
/*      allocated. By using the special -Z@ allocation primitive, the   */
/*      placement is guaranteed to be at _EVBASE and onwards.           */
/************************************************************************/

-Z@(CODE)EVTAB=80004000-8000FFFF
-Z@(CODE)EV100=80004100-8000FFFF
-P(CODE)EVSEG=80004000-8000FFFF

/************************************************************************/
/*      Allocate code and const segments.                               */
/************************************************************************/

-P(CODE)CODE32=80000000-8000FFFF
-P(CONST)DATA32_C=80000000-8000FFFF

// Initializers
-Z(CONST)INITTAB,DIFUNCT=80000000-8000FFFF
-Z(CONST)CHECKSUM,SWITCH=80000000-8000FFFF
-Z(CONST)DATA21_ID,DATA32_ID=80000000-8000FFFF

-Z(CONST)ACTAB,HTAB=80000000-8000FFFF

/************************************************************************/
/*      Allocate the read/write segments that are mapped to RAM.        */
/************************************************************************/

-Z(DATA)DATA21_I,DATA21_Z,DATA21_N=00000004-00003FFF
-Z(DATA)DATA32_I,DATA32_Z,DATA32_N=00000004-00003FFF
-Z(DATA)TRACEBUFFER=00000004-00003FFF

-Z(DATA)SSTACK+_SSTACK_SIZE#00000004-00003FFF
-Z(DATA)CSTACK+_CSTACK_SIZE#00000004-00003FFF
-Z(DATA)HEAP+_HEAP_SIZE=00000004-00003FFF

/************************************************************************/
/*      End of File                                                     */
/************************************************************************/
