// ----------------------------------------------------------------------------
//         ATMEL Microcontroller Software Support
// ----------------------------------------------------------------------------
// Copyright (c) 2011, 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:
//
// - Redistributions of source code must retain the above copyright notice,
// this list of conditions and the disclaimer below.
//
// Atmel's name may not be used to endorse or promote products derived from
// this software without specific prior written permission.
//
// DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR
// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
// 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.
// ----------------------------------------------------------------------------

/*********************************************************************
*
*       execUserReset()
*/
execUserReset()
{
    __message "------------------------------ execUserReset ---------------------------------";

    // Hardware Reset: CPU is automatically halted after the reset
    __hwReset(0);

    // peripheral reset RSTC_CR
    __writeMemory32(0xA5000004,0x400E1400,"Memory");
}

/*********************************************************************
*
*       execUserPreload()
*/
execUserPreload()
{
    __message "------------------------------ execUserPreload ---------------------------------";

	// Hardware Reset: CPU is automatically halted after the reset
    __hwReset(0);

    // peripheral reset RSTC_CR
    __writeMemory32(0xA5000004,0x400E1400,"Memory");
}

/*********************************************************************
*
*       execUserFlashInit()
*/
execUserFlashInit()
{
    __message "------------------------------ execUserFlashInit ---------------------------------";

   // perpheral reset RSTC_CR
   __writeMemory32(0xA5000004,0x400E1400,"Memory");

   //Watch dog disable
   __writeMemory32(0x000008000,0x400E1454,"Memory");

   // Set 6 WS for Embedded Flash Access
   __writeMemory32(0x0000600,0x400E0A00,"Memory");
}

/*********************************************************************
*
*       execUserFlashExit()
*/
execUserFlashExit()
{
    __message "------------------------------ execUserFlashExit ---------------------------------";
}
