blob: 5389e3758b3b41b53059e5d056160c35ad5588fc [file] [log] [blame]
/*****************************************************************************
* (c) 2014 Microchip Technology Inc. and its subsidiaries.
* You may use this software and any derivatives exclusively with
* Microchip products.
* THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS".
* NO WARRANTIES, WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE,
* INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY,
* AND FITNESS FOR A PARTICULAR PURPOSE, OR ITS INTERACTION WITH MICROCHIP
* PRODUCTS, COMBINATION WITH ANY OTHER PRODUCTS, OR USE IN ANY APPLICATION.
* IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE,
* INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND
* WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS
* BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE.
* TO THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL
* CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF
* FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE.
* MICROCHIP PROVIDES THIS SOFTWARE CONDITIONALLY UPON YOUR ACCEPTANCE
* OF THESE TERMS.
*****************************************************************************/
/** @file on_reset.c
*MEC14xx XC32 M14K Startup code _on_reset handler
*/
/** @defgroup MEC14xx Startup
* @{
*/
#include "appcfg.h"
#include "platform.h"
#include "MEC14xx/mec14xx.h"
#include "MEC14xx/mec14xx_pcr.h"
/*
* From linker command file
*/
extern uint32_t _ebase_address[];
/** _on_reset - Very early HW initialization.
* @note XC32 startup code has initialized SP & GP. No other
* C features have been initialized (before .bss clear and
* global data init.) NOTE: MIPS M14K is still in Boot-Strap
* mode and EBASE has not been programmed. Any exception or
* interrupts will vector to the BEV Exception handler!
*/
void
__attribute__((nomips16)) _on_reset (void)
{
/* Enable JTAG */
ECS_REG->JTAG_ENABLE |= 1u;
/* Disable WDT */
WDT->CONTROL = 0u;
/* Set CPU clock divider specified in appcfg.h */
PCR->PROC_CLOCK_CNTRL = ( PCR_CLOCK_DIVIDER );
__EHB();
CPU_NOP();
}