/**
  ******************************************************************************
  * @file    partition_stm32l562xx.h
  * @author  MCD Application Team
  * @brief   CMSIS STM32L562xx Device Initial Setup for Secure / Non-Secure Zones
  *          for ARMCM33 based on CMSIS CORE V5.3.1 partition_ARMCM33.h Template.
  *
  *          This file contains:
  *           - Initialize Security Attribution Unit (SAU) CTRL register
  *           - Setup behavior of Sleep and Exception Handling
  *           - Setup behavior of Floating Point Unit
  *           - Setup Interrupt Target
  *
  ******************************************************************************/
/*
 * Copyright (c) 2009-2016 ARM Limited. All rights reserved.
 * Portions Copyright (c) 2019 STMicroelectronics, all rights reserved
 *
 * SPDX-License-Identifier: Apache-2.0
 *
 * Licensed under the Apache License, Version 2.0 (the License); you may
 * not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an AS IS BASIS, WITHOUT
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#ifndef PARTITION_STM32L562XX_H
#define PARTITION_STM32L562XX_H

/*
//-------- <<< Use Configuration Wizard in Context Menu >>> -----------------
*/

/*
// <e>Initialize Security Attribution Unit (SAU) CTRL register
*/
#define SAU_INIT_CTRL          1

/*
//   <q> Enable SAU
//   <i> Value for SAU->CTRL register bit ENABLE
*/
#define SAU_INIT_CTRL_ENABLE   1

/*
//   <o> When SAU is disabled
//     <0=> All Memory is Secure
//     <1=> All Memory is Non-Secure
//   <i> Value for SAU->CTRL register bit ALLNS
//   <i> When all Memory is Non-Secure (ALLNS is 1), IDAU can override memory map configuration.
*/
#define SAU_INIT_CTRL_ALLNS  0

/*
// </e>
*/

/*
// <h>Initialize Security Attribution Unit (SAU) Address Regions
// <i>SAU configuration specifies regions to be one of:
// <i> - Secure and Non-Secure Callable
// <i> - Non-Secure
// <i>Note: All memory regions not configured by SAU are Secure
*/
#define SAU_REGIONS_MAX   8                 /* Max. number of SAU regions */

/*
//   <e>Initialize SAU Region 0
//   <i> Setup SAU Region 0 memory attributes
*/
#define SAU_INIT_REGION0    1

/*
//     <o>Start Address <0-0xFFFFFFE0>
*/
#define SAU_INIT_START0     0x0C03E000      /* start address of SAU region 0 */

/*
//     <o>End Address <0x1F-0xFFFFFFFF>
*/
#define SAU_INIT_END0       0x0C03FFFF      /* end address of SAU region 0 */

/*
//     <o>Region is
//         <0=>Non-Secure
//         <1=>Secure, Non-Secure Callable
*/
#define SAU_INIT_NSC0       1
/*
//   </e>
*/

/*
//   <e>Initialize SAU Region 1
//   <i> Setup SAU Region 1 memory attributes
*/
#define SAU_INIT_REGION1    1

/*
//     <o>Start Address <0-0xFFFFFFE0>
*/
#define SAU_INIT_START1     0x08040000      /* start address of SAU region 1 */

/*
//     <o>End Address <0x1F-0xFFFFFFFF>
*/
#define SAU_INIT_END1       0x0807FFFF      /* end address of SAU region 1 */

/*
//     <o>Region is
//         <0=>Non-Secure
//         <1=>Secure, Non-Secure Callable
*/
#define SAU_INIT_NSC1       0
/*
//   </e>
*/

/*
//   <e>Initialize SAU Region 2
//   <i> Setup SAU Region 2 memory attributes
*/
#define SAU_INIT_REGION2    1

/*
//     <o>Start Address <0-0xFFFFFFE0>
*/
#define SAU_INIT_START2     0x20018000      /* start address of SAU region 2 */

/*
//     <o>End Address <0x1F-0xFFFFFFFF>
*/
#define SAU_INIT_END2       0x2003FFFF      /* end address of SAU region 2 */

/*
//     <o>Region is
//         <0=>Non-Secure
//         <1=>Secure, Non-Secure Callable
*/
#define SAU_INIT_NSC2       0
/*
//   </e>
*/

/*
//   <e>Initialize SAU Region 3
//   <i> Setup SAU Region 3 memory attributes
*/
#define SAU_INIT_REGION3    1

/*
//     <o>Start Address <0-0xFFFFFFE0>
*/
#define SAU_INIT_START3     0x40000000      /* start address of SAU region 3 */

/*
//     <o>End Address <0x1F-0xFFFFFFFF>
*/
#define SAU_INIT_END3       0x4FFFFFFF      /* end address of SAU region 3 */

/*
//     <o>Region is
//         <0=>Non-Secure
//         <1=>Secure, Non-Secure Callable
*/
#define SAU_INIT_NSC3       0
/*
//   </e>
*/

/*
//   <e>Initialize SAU Region 4
//   <i> Setup SAU Region 4 memory attributes
*/
#define SAU_INIT_REGION4    1

/*
//     <o>Start Address <0-0xFFFFFFE0>
*/
#define SAU_INIT_START4     0x60000000      /* start address of SAU region 4 */

/*
//     <o>End Address <0x1F-0xFFFFFFFF>
*/
#define SAU_INIT_END4       0x9FFFFFFF      /* end address of SAU region 4 */

/*
//     <o>Region is
//         <0=>Non-Secure
//         <1=>Secure, Non-Secure Callable
*/
#define SAU_INIT_NSC4       0
/*
//   </e>
*/

/*
//   <e>Initialize SAU Region 5
//   <i> Setup SAU Region 5 memory attributes
*/
#define SAU_INIT_REGION5    1

/*
//     <o>Start Address <0-0xFFFFFFE0>
*/
#define SAU_INIT_START5     0x0BF90000      /* start address of SAU region 5 */

/*
//     <o>End Address <0x1F-0xFFFFFFFF>
*/
#define SAU_INIT_END5       0x0BFA8FFF      /* end address of SAU region 5 */

/*
//     <o>Region is
//         <0=>Non-Secure
//         <1=>Secure, Non-Secure Callable
*/
#define SAU_INIT_NSC5       0
/*
//   </e>
*/

/*
//   <e>Initialize SAU Region 6
//   <i> Setup SAU Region 6 memory attributes
*/
#define SAU_INIT_REGION6    0

/*
//     <o>Start Address <0-0xFFFFFFE0>
*/
#define SAU_INIT_START6     0x00000000      /* start address of SAU region 6 */

/*
//     <o>End Address <0x1F-0xFFFFFFFF>
*/
#define SAU_INIT_END6       0x00000000      /* end address of SAU region 6 */

/*
//     <o>Region is
//         <0=>Non-Secure
//         <1=>Secure, Non-Secure Callable
*/
#define SAU_INIT_NSC6       0
/*
//   </e>
*/

/*
//   <e>Initialize SAU Region 7
//   <i> Setup SAU Region 7 memory attributes
*/
#define SAU_INIT_REGION7    0

/*
//     <o>Start Address <0-0xFFFFFFE0>
*/
#define SAU_INIT_START7     0x00000000      /* start address of SAU region 7 */

/*
//     <o>End Address <0x1F-0xFFFFFFFF>
*/
#define SAU_INIT_END7       0x00000000      /* end address of SAU region 7 */

/*
//     <o>Region is
//         <0=>Non-Secure
//         <1=>Secure, Non-Secure Callable
*/
#define SAU_INIT_NSC7       0
/*
//   </e>
*/

/*
// </h>
*/

/*
// <e>Setup behaviour of Sleep and Exception Handling
*/
#define SCB_CSR_AIRCR_INIT  0

/*
//   <o> Deep Sleep can be enabled by
//     <0=>Secure and Non-Secure state
//     <1=>Secure state only
//   <i> Value for SCB->CSR register bit DEEPSLEEPS
*/
#define SCB_CSR_DEEPSLEEPS_VAL  0

/*
//   <o>System reset request accessible from
//     <0=> Secure and Non-Secure state
//     <1=> Secure state only
//   <i> Value for SCB->AIRCR register bit SYSRESETREQS
*/
#define SCB_AIRCR_SYSRESETREQS_VAL  0

/*
//   <o>Priority of Non-Secure exceptions is
//     <0=> Not altered
//     <1=> Lowered to 0x04-0x07
//   <i> Value for SCB->AIRCR register bit PRIS
*/
#define SCB_AIRCR_PRIS_VAL      0

/*
//   <o>BusFault, HardFault, and NMI target
//     <0=> Secure state
//     <1=> Non-Secure state
//   <i> Value for SCB->AIRCR register bit BFHFNMINS
*/
#define SCB_AIRCR_BFHFNMINS_VAL 0

/*
// </e>
*/

/*
// <e>Setup behaviour of Floating Point Unit
*/
#define TZ_FPU_NS_USAGE 1

/*
// <o>Floating Point Unit usage
//     <0=> Secure state only
//     <3=> Secure and Non-Secure state
//   <i> Value for SCB->NSACR register bits CP10, CP11
*/
#define SCB_NSACR_CP10_11_VAL       3

/*
// <o>Treat floating-point registers as Secure
//     <0=> Disabled
//     <1=> Enabled
//   <i> Value for FPU->FPCCR register bit TS
*/
#define FPU_FPCCR_TS_VAL            0

/*
// <o>Clear on return (CLRONRET) accessibility
//     <0=> Secure and Non-Secure state
//     <1=> Secure state only
//   <i> Value for FPU->FPCCR register bit CLRONRETS
*/
#define FPU_FPCCR_CLRONRETS_VAL     0

/*
// <o>Clear floating-point caller saved registers on exception return
//     <0=> Disabled
//     <1=> Enabled
//   <i> Value for FPU->FPCCR register bit CLRONRET
*/
#define FPU_FPCCR_CLRONRET_VAL      1

/*
// </e>
*/

/*
// <h>Setup Interrupt Target
*/

/*
//   <e>Initialize ITNS 0 (Interrupts 0..31)
*/
#define NVIC_INIT_ITNS0    1

/*
// Interrupts 0..31
//   <o.0>  WWDG_IRQn           <0=> Secure state <1=> Non-Secure state
//   <o.1>  PVD_PVM_IRQn        <0=> Secure state <1=> Non-Secure state
//   <o.2>  RTC_IRQn            <0=> Secure state <1=> Non-Secure state
//   <o.3>  RTC_S_IRQn          <0=> Secure state <1=> Non-Secure state
//   <o.4>  TAMP_IRQn           <0=> Secure state <1=> Non-Secure state
//   <o.5>  TAMP_S_IRQn         <0=> Secure state <1=> Non-Secure state
//   <o.6>  FLASH_IRQn          <0=> Secure state <1=> Non-Secure state
//   <o.7>  FLASH_S_IRQn        <0=> Secure state <1=> Non-Secure state
//   <o.8>  GTZC_IRQn           <0=> Secure state <1=> Non-Secure state
//   <o.9>  RCC_IRQn            <0=> Secure state <1=> Non-Secure state
//   <o.10> RCC_S_IRQn          <0=> Secure state <1=> Non-Secure state
//   <o.11> EXTI0_IRQn          <0=> Secure state <1=> Non-Secure state
//   <o.12> EXTI1_IRQn          <0=> Secure state <1=> Non-Secure state
//   <o.13> EXTI2_IRQn          <0=> Secure state <1=> Non-Secure state
//   <o.14> EXTI3_IRQn          <0=> Secure state <1=> Non-Secure state
//   <o.15> EXTI4_IRQn          <0=> Secure state <1=> Non-Secure state
//   <o.16> EXTI5_IRQn          <0=> Secure state <1=> Non-Secure state
//   <o.17> EXTI6_IRQn          <0=> Secure state <1=> Non-Secure state
//   <o.18> EXTI7_IRQn          <0=> Secure state <1=> Non-Secure state
//   <o.19> EXTI8_IRQn          <0=> Secure state <1=> Non-Secure state
//   <o.20> EXTI9_IRQn          <0=> Secure state <1=> Non-Secure state
//   <o.21> EXTI10_IRQn         <0=> Secure state <1=> Non-Secure state
//   <o.22> EXTI11_IRQn         <0=> Secure state <1=> Non-Secure state
//   <o.23> EXTI12_IRQn         <0=> Secure state <1=> Non-Secure state
//   <o.24> EXTI13_IRQn         <0=> Secure state <1=> Non-Secure state
//   <o.25> EXTI14_IRQn         <0=> Secure state <1=> Non-Secure state
//   <o.26> EXTI15_IRQn         <0=> Secure state <1=> Non-Secure state
//   <o.27> DMAMUX1_IRQn        <0=> Secure state <1=> Non-Secure state
//   <o.28> DMAMUX1_S_IRQn      <0=> Secure state <1=> Non-Secure state
//   <o.29> DMA1_Channel1_IRQn  <0=> Secure state <1=> Non-Secure state
//   <o.30> DMA1_Channel2_IRQn  <0=> Secure state <1=> Non-Secure state
//   <o.31> DMA1_Channel3_IRQn  <0=> Secure state <1=> Non-Secure state
*/
#define NVIC_INIT_ITNS0_VAL      0x00000000

/*
//   </e>
*/

/*
//   <e>Initialize ITNS 1 (Interrupts 32..63)
*/
#define NVIC_INIT_ITNS1    1

/*
// Interrupts 32..63
//   <o.0>  DMA1_Channel4_IRQn  <0=> Secure state <1=> Non-Secure state
//   <o.1>  DMA1_Channel5_IRQn  <0=> Secure state <1=> Non-Secure state
//   <o.2>  DMA1_Channel6_IRQn  <0=> Secure state <1=> Non-Secure state
//   <o.3>  DMA1_Channel7_IRQn  <0=> Secure state <1=> Non-Secure state
//   <o.4>  DMA1_Channel8_IRQn  <0=> Secure state <1=> Non-Secure state
//   <o.5>  ADC1_2_IRQn         <0=> Secure state <1=> Non-Secure state
//   <o.6>  DAC_IRQn            <0=> Secure state <1=> Non-Secure state
//   <o.7>  FDCAN1_IT0_IRQn     <0=> Secure state <1=> Non-Secure state
//   <o.8>  FDCAN1_IT1_IRQn     <0=> Secure state <1=> Non-Secure state
//   <o.9>  TIM1_BRK_IRQn       <0=> Secure state <1=> Non-Secure state
//   <o.10> TIM1_UP_IRQn        <0=> Secure state <1=> Non-Secure state
//   <o.11> TIM1_TRG_COM_IRQn   <0=> Secure state <1=> Non-Secure state
//   <o.12> TIM1_CC_IRQn        <0=> Secure state <1=> Non-Secure state
//   <o.13> TIM2_IRQn           <0=> Secure state <1=> Non-Secure state
//   <o.14> TIM3_IRQn           <0=> Secure state <1=> Non-Secure state
//   <o.15> TIM4_IRQn           <0=> Secure state <1=> Non-Secure state
//   <o.16> TIM5_IRQn           <0=> Secure state <1=> Non-Secure state
//   <o.17> TIM6_IRQn           <0=> Secure state <1=> Non-Secure state
//   <o.18> TIM7_IRQn           <0=> Secure state <1=> Non-Secure state
//   <o.19> TIM8_BRK_IRQn       <0=> Secure state <1=> Non-Secure state
//   <o.20> TIM8_UP_IRQn        <0=> Secure state <1=> Non-Secure state
//   <o.21> TIM8_TRG_COM_IRQn   <0=> Secure state <1=> Non-Secure state
//   <o.22> TIM8_CC_IRQn        <0=> Secure state <1=> Non-Secure state
//   <o.23> I2C1_EV_IRQn        <0=> Secure state <1=> Non-Secure state
//   <o.24> I2C1_ER_IRQn        <0=> Secure state <1=> Non-Secure state
//   <o.25> I2C2_EV_IRQn        <0=> Secure state <1=> Non-Secure state
//   <o.26> I2C2_ER_IRQn        <0=> Secure state <1=> Non-Secure state
//   <o.27> SPI1_IRQn           <0=> Secure state <1=> Non-Secure state
//   <o.28> SPI2_IRQn           <0=> Secure state <1=> Non-Secure state
//   <o.29> USART1_IRQn         <0=> Secure state <1=> Non-Secure state
//   <o.30> USART2_IRQn         <0=> Secure state <1=> Non-Secure state
//   <o.31> USART3_IRQn         <0=> Secure state <1=> Non-Secure state
*/
#define NVIC_INIT_ITNS1_VAL      0x00000000

/*
//   </e>
*/

/*
//   <e>Initialize ITNS 2 (Interrupts 64..95)
*/
#define NVIC_INIT_ITNS2    1

/*
// Interrupts 64..95
//   <o.0>  UART4_IRQn          <0=> Secure state <1=> Non-Secure state
//   <o.1>  UART5_IRQn          <0=> Secure state <1=> Non-Secure state
//   <o.2>  LPUART1_IRQn        <0=> Secure state <1=> Non-Secure state
//   <o.3>  LPTIM1_IRQn         <0=> Secure state <1=> Non-Secure state
//   <o.4>  LPTIM2_IRQn         <0=> Secure state <1=> Non-Secure state
//   <o.5>  TIM15_IRQn          <0=> Secure state <1=> Non-Secure state
//   <o.6>  TIM16_IRQn          <0=> Secure state <1=> Non-Secure state
//   <o.7>  TIM17_IRQn          <0=> Secure state <1=> Non-Secure state
//   <o.8>  COMP_IRQn           <0=> Secure state <1=> Non-Secure state
//   <o.9>  USB_FS_IRQn         <0=> Secure state <1=> Non-Secure state
//   <o.10> CRS_IRQn            <0=> Secure state <1=> Non-Secure state
//   <o.11> FMC_IRQn            <0=> Secure state <1=> Non-Secure state
//   <o.12> OCTOSPI1_IRQn       <0=> Secure state <1=> Non-Secure state
//   <o.13> Reserved            <0=> Secure state <1=> Non-Secure state
//   <o.14> SDMMC1_IRQn         <0=> Secure state <1=> Non-Secure state
//   <o.15> Reserved            <0=> Secure state <1=> Non-Secure state
//   <o.16> DMA2_Channel1_IRQn  <0=> Secure state <1=> Non-Secure state
//   <o.17> DMA2_Channel2_IRQn  <0=> Secure state <1=> Non-Secure state
//   <o.18> DMA2_Channel3_IRQn  <0=> Secure state <1=> Non-Secure state
//   <o.19> DMA2_Channel4_IRQn  <0=> Secure state <1=> Non-Secure state
//   <o.20> DMA2_Channel5_IRQn  <0=> Secure state <1=> Non-Secure state
//   <o.21> DMA2_Channel6_IRQn  <0=> Secure state <1=> Non-Secure state
//   <o.22> DMA2_Channel7_IRQn  <0=> Secure state <1=> Non-Secure state
//   <o.23> DMA2_Channel8_IRQn  <0=> Secure state <1=> Non-Secure state
//   <o.24> I2C3_EV_IRQn        <0=> Secure state <1=> Non-Secure state
//   <o.25> I2C3_ER_IRQn        <0=> Secure state <1=> Non-Secure state
//   <o.26> SAI1_IRQn           <0=> Secure state <1=> Non-Secure state
//   <o.27> SAI2_IRQn           <0=> Secure state <1=> Non-Secure state
//   <o.28> TSC_IRQn            <0=> Secure state <1=> Non-Secure state
//   <o.29> AES_IRQn            <0=> Secure state <1=> Non-Secure state
//   <o.30> RNG_IRQn            <0=> Secure state <1=> Non-Secure state
//   <o.31> FPU_IRQn            <0=> Secure state <1=> Non-Secure state
*/
#define NVIC_INIT_ITNS2_VAL      0x00000000

/*
//   </e>
*/

/*
//   <e>Initialize ITNS 3 (Interrupts 96..108)
*/
#define NVIC_INIT_ITNS3    1

/*
// Interrupts 96..108
//   <o.0>  HASH_IRQn           <0=> Secure state <1=> Non-Secure state
//   <o.1>  PKA_IRQn            <0=> Secure state <1=> Non-Secure state
//   <o.2>  LPTIM3_IRQn         <0=> Secure state <1=> Non-Secure state
//   <o.3>  SPI3_IRQn           <0=> Secure state <1=> Non-Secure state
//   <o.4>  I2C4_EV_IRQn        <0=> Secure state <1=> Non-Secure state
//   <o.5>  I2C4_ER_IRQn        <0=> Secure state <1=> Non-Secure state
//   <o.6>  DFSDM1_FLT0_IRQn    <0=> Secure state <1=> Non-Secure state
//   <o.7>  DFSDM1_FLT1_IRQn    <0=> Secure state <1=> Non-Secure state
//   <o.8>  DFSDM1_FLT2_IRQn    <0=> Secure state <1=> Non-Secure state
//   <o.9>  DFSDM1_FLT3_IRQn    <0=> Secure state <1=> Non-Secure state
//   <o.10> UCPD1_IRQn          <0=> Secure state <1=> Non-Secure state
//   <o.11> ICACHE_IRQn         <0=> Secure state <1=> Non-Secure state
//   <o.12> OTFDEC1_IRQn        <0=> Secure state <1=> Non-Secure state
*/
#define NVIC_INIT_ITNS3_VAL      0x00000000

/*
//   </e>
*/

/*
// </h>
*/



/*
    max 8 SAU regions.
    SAU regions are defined in partition.h
 */

#define SAU_INIT_REGION(n) \
    SAU->RNR  =  (n                                     & SAU_RNR_REGION_Msk); \
    SAU->RBAR =  (SAU_INIT_START##n                     & SAU_RBAR_BADDR_Msk); \
    SAU->RLAR =  (SAU_INIT_END##n                       & SAU_RLAR_LADDR_Msk) | \
                ((SAU_INIT_NSC##n << SAU_RLAR_NSC_Pos)  & SAU_RLAR_NSC_Msk)   | 1U

/**
  \brief   Setup a SAU Region
  \details Writes the region information contained in SAU_Region to the
           registers SAU_RNR, SAU_RBAR, and SAU_RLAR
 */
__STATIC_INLINE void TZ_SAU_Setup (void)
{

#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U)

  #if defined (SAU_INIT_REGION0) && (SAU_INIT_REGION0 == 1U)
    SAU_INIT_REGION(0);
  #endif

  #if defined (SAU_INIT_REGION1) && (SAU_INIT_REGION1 == 1U)
    SAU_INIT_REGION(1);
  #endif

  #if defined (SAU_INIT_REGION2) && (SAU_INIT_REGION2 == 1U)
    SAU_INIT_REGION(2);
  #endif

  #if defined (SAU_INIT_REGION3) && (SAU_INIT_REGION3 == 1U)
    SAU_INIT_REGION(3);
  #endif

  #if defined (SAU_INIT_REGION4) && (SAU_INIT_REGION4 == 1U)
    SAU_INIT_REGION(4);
  #endif

  #if defined (SAU_INIT_REGION5) && (SAU_INIT_REGION5 == 1U)
    SAU_INIT_REGION(5);
  #endif

  #if defined (SAU_INIT_REGION6) && (SAU_INIT_REGION6 == 1U)
    SAU_INIT_REGION(6);
  #endif

  #if defined (SAU_INIT_REGION7) && (SAU_INIT_REGION7 == 1U)
    SAU_INIT_REGION(7);
  #endif

  /* repeat this for all possible SAU regions */

#endif /* defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) */


  #if defined (SAU_INIT_CTRL) && (SAU_INIT_CTRL == 1U)
    SAU->CTRL = ((SAU_INIT_CTRL_ENABLE << SAU_CTRL_ENABLE_Pos) & SAU_CTRL_ENABLE_Msk) |
                ((SAU_INIT_CTRL_ALLNS  << SAU_CTRL_ALLNS_Pos)  & SAU_CTRL_ALLNS_Msk)   ;
  #endif

  #if defined (SCB_CSR_AIRCR_INIT) && (SCB_CSR_AIRCR_INIT == 1U)
    SCB->SCR   = (SCB->SCR   & ~(SCB_SCR_SLEEPDEEPS_Msk    )) |
                   ((SCB_CSR_DEEPSLEEPS_VAL     << SCB_SCR_SLEEPDEEPS_Pos)     & SCB_SCR_SLEEPDEEPS_Msk);

    SCB->AIRCR = (SCB->AIRCR & ~(SCB_AIRCR_VECTKEY_Msk   | SCB_AIRCR_SYSRESETREQS_Msk |
                                 SCB_AIRCR_BFHFNMINS_Msk | SCB_AIRCR_PRIS_Msk)        )                     |
                   ((0x05FAU                    << SCB_AIRCR_VECTKEY_Pos)      & SCB_AIRCR_VECTKEY_Msk)      |
                   ((SCB_AIRCR_SYSRESETREQS_VAL << SCB_AIRCR_SYSRESETREQS_Pos) & SCB_AIRCR_SYSRESETREQS_Msk) |
                   ((SCB_AIRCR_PRIS_VAL         << SCB_AIRCR_PRIS_Pos)         & SCB_AIRCR_PRIS_Msk)         |
                   ((SCB_AIRCR_BFHFNMINS_VAL    << SCB_AIRCR_BFHFNMINS_Pos)    & SCB_AIRCR_BFHFNMINS_Msk);
  #endif /* defined (SCB_CSR_AIRCR_INIT) && (SCB_CSR_AIRCR_INIT == 1U) */

  #if defined (__FPU_USED) && (__FPU_USED == 1U) && \
      defined (TZ_FPU_NS_USAGE) && (TZ_FPU_NS_USAGE == 1U)

    SCB->NSACR = (SCB->NSACR & ~(SCB_NSACR_CP10_Msk | SCB_NSACR_CP11_Msk)) |
                   ((SCB_NSACR_CP10_11_VAL << SCB_NSACR_CP10_Pos) & (SCB_NSACR_CP10_Msk | SCB_NSACR_CP11_Msk));

    FPU->FPCCR = (FPU->FPCCR & ~(FPU_FPCCR_TS_Msk | FPU_FPCCR_CLRONRETS_Msk | FPU_FPCCR_CLRONRET_Msk)) |
                   ((FPU_FPCCR_TS_VAL        << FPU_FPCCR_TS_Pos       ) & FPU_FPCCR_TS_Msk       ) |
                   ((FPU_FPCCR_CLRONRETS_VAL << FPU_FPCCR_CLRONRETS_Pos) & FPU_FPCCR_CLRONRETS_Msk) |
                   ((FPU_FPCCR_CLRONRET_VAL  << FPU_FPCCR_CLRONRET_Pos ) & FPU_FPCCR_CLRONRET_Msk );
  #endif

  #if defined (NVIC_INIT_ITNS0) && (NVIC_INIT_ITNS0 == 1U)
    NVIC->ITNS[0] = NVIC_INIT_ITNS0_VAL;
  #endif

  #if defined (NVIC_INIT_ITNS1) && (NVIC_INIT_ITNS1 == 1U)
    NVIC->ITNS[1] = NVIC_INIT_ITNS1_VAL;
  #endif

  #if defined (NVIC_INIT_ITNS2) && (NVIC_INIT_ITNS2 == 1U)
    NVIC->ITNS[2] = NVIC_INIT_ITNS2_VAL;
  #endif

  #if defined (NVIC_INIT_ITNS3) && (NVIC_INIT_ITNS3 == 1U)
    NVIC->ITNS[3] = NVIC_INIT_ITNS3_VAL;
  #endif

}

#endif  /* PARTITION_STM32L562XX_H */
