/******************************************************************************
 * AVR32 AT32UC3B0128 XLINK command file for AVR32 IAR C/C++ Compiler.
 *
 * The assumed memory layout is the one of the AT32UC3B0128:
 *
 *   Start       Stop        Name     Type
 *   ----------  ----------  -----    --------------
 *   0x00000000  0x00007FFF  SRAM     RAM
 *   0x80000000  0x8001FFFF  FLASH    FLASH
 *
 * Usage:  xlink  your_file(s)  -f xcl-file  libraries
 *
 * - Compiler:           IAR EWAVR32
 * - Supported devices:  AVR32 AT32UC3B0128
 *
 * - 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-8001FFFF

/************************************************************************/
/*      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-8001FFFF
-Z@(CODE)EV100=80004100-8001FFFF
-P(CODE)EVSEG=80004000-8001FFFF

/************************************************************************/
/*      Allocate code and const segments.                               */
/************************************************************************/

-P(CODE)CODE32=80000000-8001FFFF
-P(CONST)DATA32_C=80000000-8001FFFF

// Initializers
-Z(CONST)INITTAB,DIFUNCT=80000000-8001FFFF
-Z(CONST)CHECKSUM,SWITCH=80000000-8001FFFF
-Z(CONST)DATA21_ID,DATA32_ID=80000000-8001FFFF

-Z(CONST)ACTAB,HTAB=80000000-8001FFFF

/************************************************************************/
/*      Allocate the read/write segments that are mapped to RAM.        */
/************************************************************************/

-Z(DATA)DATA21_I,DATA21_Z,DATA21_N=00000004-00007FFF
-Z(DATA)DATA32_I,DATA32_Z,DATA32_N=00000004-00007FFF
-Z(DATA)TRACEBUFFER=00000004-00007FFF

-Z(DATA)SSTACK+_SSTACK_SIZE#00000004-00007FFF
-Z(DATA)CSTACK+_CSTACK_SIZE#00000004-00007FFF
-Z(DATA)HEAP+_HEAP_SIZE=00000004-00007FFF

/************************************************************************/
/*      End of File                                                     */
/************************************************************************/
