/******************************************************************************
  Target Script for ATMEL AT91SAM7.

  Copyright (c) 2004 Rowley Associates Limited.

  This file may be distributed under the terms of the License Agreement
  provided with this software.

  THIS FILE IS PROVIDED AS IS WITH NO WARRANTY OF ANY KIND, INCLUDING THE
  WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
 ******************************************************************************/

function Reset()
{
  /* Reset and stop target */
  TargetInterface.pokeWord(0xFFFFFD00, 0xA500000D); // RSTC_CR
  TargetInterface.waitForDebugState(1000);
  /* Configure Clock */
  TargetInterface.pokeWord(0xFFFFFC20, 0x00000601); // CKGR_MOR
  TargetInterface.delay(10);
  TargetInterface.pokeWord(0xFFFFFC2C, 0x00191C05); // CKGR_PLLR
  TargetInterface.delay(10);
  TargetInterface.pokeWord(0xFFFFFC30, 0x00000007); // CKGR_MCKR
  TargetInterface.delay(10);
}

function RAMReset()
{
  Reset();
  /* Remap SRAM to 0x00000000 */
  TargetInterface.pokeWord(0xFFFFFF00, 1); // MC_RCR 
}

function FLASHReset()
{
  Reset();

// Mask All interrupt pAic->AIC_IDCR = 0xFFFFFFFF;
	
    TargetInterface.pokeWord(0xffffffff,0xFFFFF124);
    TargetInterface.pokeWord(0xffffffff,0xFFFFF128);
// disable peripheral clock  Peripheral Clock Disable Register
    TargetInterface.pokeWord(0xffffffff,0xFFFFFC14);

// #define AT91C_TC0_SR    ((AT91_REG *) 	0xFFFA0020) // (TC0) Status Register
// #define AT91C_TC1_SR    ((AT91_REG *) 	0xFFFA0060) // (TC1) Status Register
// #define AT91C_TC2_SR    ((AT91_REG *) 	0xFFFA00A0) // (TC2) Status Register
    TargetInterface.peekWord(0xFFFA0020);
    TargetInterface.peekWord(0xFFFA0060);
    TargetInterface.peekWord(0xFFFA00A0);

//    for (__mac_i=0;__mac_i < 8; __mac_i++)
//    {
      // AT91C_BASE_AIC->AIC_EOICR
//      __mac_pt  =  TargetInterface.peekWord(0xFFFFF130);
    
//    }
//   __message "------------------------------- AIC 2 INIT ---------------------------------------------";  

}

