1/* 2 * Copyright (c) 2022-2023 Arm Limited. All rights reserved. 3 * 4 * SPDX-License-Identifier: Apache-2.0 5 * 6 * Licensed under the Apache License, Version 2.0 (the License); you may 7 * not use this file except in compliance with the License. 8 * You may obtain a copy of the License at 9 * 10 * www.apache.org/licenses/LICENSE-2.0 11 * 12 * Unless required by applicable law or agreed to in writing, software 13 * distributed under the License is distributed on an AS IS BASIS, WITHOUT 14 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 * See the License for the specific language governing permissions and 16 * limitations under the License. 17 */ 18 19/* 20 * This file is derivative of CMSIS V5.9.0 startup_ARMCM55.c 21 * Git SHA: 2b7495b8535bdcb306dac29b9ded4cfb679d7e5c 22 */ 23 24#include "SSE300MPS3.h" 25 26/*---------------------------------------------------------------------------- 27 External References 28 *----------------------------------------------------------------------------*/ 29extern uint32_t __INITIAL_SP; 30extern uint32_t __STACK_LIMIT; 31#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) 32extern uint64_t __STACK_SEAL; 33#endif 34 35extern void __PROGRAM_START(void) __NO_RETURN; 36 37/*---------------------------------------------------------------------------- 38 Internal References 39 *----------------------------------------------------------------------------*/ 40void Reset_Handler (void) __NO_RETURN; 41 42/*---------------------------------------------------------------------------- 43 Exception / Interrupt Handler 44 *----------------------------------------------------------------------------*/ 45#define DEFAULT_IRQ_HANDLER(handler_name) \ 46void __WEAK handler_name(void) __NO_RETURN; \ 47void handler_name(void) { \ 48 while(1); \ 49} 50 51/* Exceptions */ 52DEFAULT_IRQ_HANDLER(NMI_Handler) 53DEFAULT_IRQ_HANDLER(HardFault_Handler) 54DEFAULT_IRQ_HANDLER(MemManage_Handler) 55DEFAULT_IRQ_HANDLER(BusFault_Handler) 56DEFAULT_IRQ_HANDLER(UsageFault_Handler) 57DEFAULT_IRQ_HANDLER(SecureFault_Handler) 58DEFAULT_IRQ_HANDLER(SVC_Handler) 59DEFAULT_IRQ_HANDLER(DebugMon_Handler) 60DEFAULT_IRQ_HANDLER(PendSV_Handler) 61DEFAULT_IRQ_HANDLER(SysTick_Handler) 62 63DEFAULT_IRQ_HANDLER(NONSEC_WATCHDOG_RESET_REQ_Handler) 64DEFAULT_IRQ_HANDLER(NONSEC_WATCHDOG_Handler) 65DEFAULT_IRQ_HANDLER(SLOWCLK_Timer_Handler) 66DEFAULT_IRQ_HANDLER(TFM_TIMER0_IRQ_Handler) 67DEFAULT_IRQ_HANDLER(TIMER1_Handler) 68DEFAULT_IRQ_HANDLER(TIMER2_Handler) 69DEFAULT_IRQ_HANDLER(MPC_Handler) 70DEFAULT_IRQ_HANDLER(PPC_Handler) 71DEFAULT_IRQ_HANDLER(MSC_Handler) 72DEFAULT_IRQ_HANDLER(BRIDGE_ERROR_Handler) 73DEFAULT_IRQ_HANDLER(MGMT_PPU_Handler) 74DEFAULT_IRQ_HANDLER(SYS_PPU_Handler) 75DEFAULT_IRQ_HANDLER(CPU0_PPU_Handler) 76DEFAULT_IRQ_HANDLER(DEBUG_PPU_Handler) 77DEFAULT_IRQ_HANDLER(TIMER3_AON_Handler) 78DEFAULT_IRQ_HANDLER(CPU0_CTI_0_Handler) 79DEFAULT_IRQ_HANDLER(CPU0_CTI_1_Handler) 80 81DEFAULT_IRQ_HANDLER(System_Timestamp_Counter_Handler) 82DEFAULT_IRQ_HANDLER(UARTRX0_Handler) 83DEFAULT_IRQ_HANDLER(UARTTX0_Handler) 84DEFAULT_IRQ_HANDLER(UARTRX1_Handler) 85DEFAULT_IRQ_HANDLER(UARTTX1_Handler) 86DEFAULT_IRQ_HANDLER(UARTRX2_Handler) 87DEFAULT_IRQ_HANDLER(UARTTX2_Handler) 88DEFAULT_IRQ_HANDLER(UARTRX3_Handler) 89DEFAULT_IRQ_HANDLER(UARTTX3_Handler) 90DEFAULT_IRQ_HANDLER(UARTRX4_Handler) 91DEFAULT_IRQ_HANDLER(UARTTX4_Handler) 92DEFAULT_IRQ_HANDLER(UART0_Combined_Handler) 93DEFAULT_IRQ_HANDLER(UART1_Combined_Handler) 94DEFAULT_IRQ_HANDLER(UART2_Combined_Handler) 95DEFAULT_IRQ_HANDLER(UART3_Combined_Handler) 96DEFAULT_IRQ_HANDLER(UART4_Combined_Handler) 97DEFAULT_IRQ_HANDLER(UARTOVF_Handler) 98DEFAULT_IRQ_HANDLER(ETHERNET_Handler) 99DEFAULT_IRQ_HANDLER(I2S_Handler) 100DEFAULT_IRQ_HANDLER(TOUCH_SCREEN_Handler) 101DEFAULT_IRQ_HANDLER(USB_Handler) 102DEFAULT_IRQ_HANDLER(SPI_ADC_Handler) 103DEFAULT_IRQ_HANDLER(SPI_SHIELD0_Handler) 104DEFAULT_IRQ_HANDLER(SPI_SHIELD1_Handler) 105DEFAULT_IRQ_HANDLER(ETHOS_U55_Handler) 106#ifdef CORSTONE300_AN547 107DEFAULT_IRQ_HANDLER(DMA_Ch_1_Error_Handler) 108DEFAULT_IRQ_HANDLER(DMA_Ch_1_Terminal_Count_Handler) 109DEFAULT_IRQ_HANDLER(DMA_Ch_1_Combined_Handler) 110DEFAULT_IRQ_HANDLER(DMA_Ch_2_Error_Handler) 111DEFAULT_IRQ_HANDLER(DMA_Ch_2_Terminal_Count_Handler) 112DEFAULT_IRQ_HANDLER(DMA_Ch_2_Combined_Handler) 113DEFAULT_IRQ_HANDLER(DMA_Ch_3_Error_Handler) 114DEFAULT_IRQ_HANDLER(DMA_Ch_3_Terminal_Count_Handler) 115DEFAULT_IRQ_HANDLER(DMA_Ch_3_Combined_Handler) 116#endif 117DEFAULT_IRQ_HANDLER(GPIO0_Combined_Handler) 118DEFAULT_IRQ_HANDLER(GPIO1_Combined_Handler) 119DEFAULT_IRQ_HANDLER(GPIO2_Combined_Handler) 120DEFAULT_IRQ_HANDLER(GPIO3_Combined_Handler) 121DEFAULT_IRQ_HANDLER(GPIO0_0_Handler) 122DEFAULT_IRQ_HANDLER(GPIO0_1_Handler) 123DEFAULT_IRQ_HANDLER(GPIO0_2_Handler) 124DEFAULT_IRQ_HANDLER(GPIO0_3_Handler) 125DEFAULT_IRQ_HANDLER(GPIO0_4_Handler) 126DEFAULT_IRQ_HANDLER(GPIO0_5_Handler) 127DEFAULT_IRQ_HANDLER(GPIO0_6_Handler) 128DEFAULT_IRQ_HANDLER(GPIO0_7_Handler) 129DEFAULT_IRQ_HANDLER(GPIO0_8_Handler) 130DEFAULT_IRQ_HANDLER(GPIO0_9_Handler) 131DEFAULT_IRQ_HANDLER(GPIO0_10_Handler) 132DEFAULT_IRQ_HANDLER(GPIO0_11_Handler) 133DEFAULT_IRQ_HANDLER(GPIO0_12_Handler) 134DEFAULT_IRQ_HANDLER(GPIO0_13_Handler) 135DEFAULT_IRQ_HANDLER(GPIO0_14_Handler) 136DEFAULT_IRQ_HANDLER(GPIO0_15_Handler) 137DEFAULT_IRQ_HANDLER(GPIO1_0_Handler) 138DEFAULT_IRQ_HANDLER(GPIO1_1_Handler) 139DEFAULT_IRQ_HANDLER(GPIO1_2_Handler) 140DEFAULT_IRQ_HANDLER(GPIO1_3_Handler) 141DEFAULT_IRQ_HANDLER(GPIO1_4_Handler) 142DEFAULT_IRQ_HANDLER(GPIO1_5_Handler) 143DEFAULT_IRQ_HANDLER(GPIO1_6_Handler) 144DEFAULT_IRQ_HANDLER(GPIO1_7_Handler) 145DEFAULT_IRQ_HANDLER(GPIO1_8_Handler) 146DEFAULT_IRQ_HANDLER(GPIO1_9_Handler) 147DEFAULT_IRQ_HANDLER(GPIO1_10_Handler) 148DEFAULT_IRQ_HANDLER(GPIO1_11_Handler) 149DEFAULT_IRQ_HANDLER(GPIO1_12_Handler) 150DEFAULT_IRQ_HANDLER(GPIO1_13_Handler) 151DEFAULT_IRQ_HANDLER(GPIO1_14_Handler) 152DEFAULT_IRQ_HANDLER(GPIO1_15_Handler) 153DEFAULT_IRQ_HANDLER(GPIO2_0_Handler) 154DEFAULT_IRQ_HANDLER(GPIO2_1_Handler) 155DEFAULT_IRQ_HANDLER(GPIO2_2_Handler) 156DEFAULT_IRQ_HANDLER(GPIO2_3_Handler) 157DEFAULT_IRQ_HANDLER(GPIO2_4_Handler) 158DEFAULT_IRQ_HANDLER(GPIO2_5_Handler) 159DEFAULT_IRQ_HANDLER(GPIO2_6_Handler) 160DEFAULT_IRQ_HANDLER(GPIO2_7_Handler) 161DEFAULT_IRQ_HANDLER(GPIO2_8_Handler) 162DEFAULT_IRQ_HANDLER(GPIO2_9_Handler) 163DEFAULT_IRQ_HANDLER(GPIO2_10_Handler) 164DEFAULT_IRQ_HANDLER(GPIO2_11_Handler) 165DEFAULT_IRQ_HANDLER(GPIO2_12_Handler) 166DEFAULT_IRQ_HANDLER(GPIO2_13_Handler) 167DEFAULT_IRQ_HANDLER(GPIO2_14_Handler) 168DEFAULT_IRQ_HANDLER(GPIO2_15_Handler) 169DEFAULT_IRQ_HANDLER(GPIO3_0_Handler) 170DEFAULT_IRQ_HANDLER(GPIO3_1_Handler) 171DEFAULT_IRQ_HANDLER(GPIO3_2_Handler) 172DEFAULT_IRQ_HANDLER(GPIO3_3_Handler) 173DEFAULT_IRQ_HANDLER(UARTRX5_Handler) 174DEFAULT_IRQ_HANDLER(UARTTX5_Handler) 175DEFAULT_IRQ_HANDLER(UART5_Handler) 176 177/*---------------------------------------------------------------------------- 178 Exception / Interrupt Vector table 179 *----------------------------------------------------------------------------*/ 180 181#if defined ( __GNUC__ ) 182#pragma GCC diagnostic push 183#pragma GCC diagnostic ignored "-Wpedantic" 184#endif 185 186extern const VECTOR_TABLE_Type __VECTOR_TABLE[]; 187 const VECTOR_TABLE_Type __VECTOR_TABLE[] __VECTOR_TABLE_ATTRIBUTE = { 188 (VECTOR_TABLE_Type)(&__INITIAL_SP), /* Initial Stack Pointer */ 189 Reset_Handler, /* Reset Handler */ 190 NMI_Handler, /* -14: NMI Handler */ 191 HardFault_Handler, /* -13: Hard Fault Handler */ 192 MemManage_Handler, /* -12: MPU Fault Handler */ 193 BusFault_Handler, /* -11: Bus Fault Handler */ 194 UsageFault_Handler, /* -10: Usage Fault Handler */ 195 SecureFault_Handler, /* -9: Secure Fault Handler */ 196 0, /* Reserved */ 197 0, /* Reserved */ 198 0, /* Reserved */ 199 SVC_Handler, /* -5: SVCall Handler */ 200 DebugMon_Handler, /* -4: Debug Monitor Handler */ 201 0, /* Reserved */ 202 PendSV_Handler, /* -2: PendSV Handler */ 203 SysTick_Handler, /* -1: SysTick Handler */ 204 205 NONSEC_WATCHDOG_RESET_REQ_Handler, /* 0: Non-Secure Watchdog Reset Request Handler */ 206 NONSEC_WATCHDOG_Handler, /* 1: Non-Secure Watchdog Handler */ 207 SLOWCLK_Timer_Handler, /* 2: SLOWCLK Timer Handler */ 208 TFM_TIMER0_IRQ_Handler, /* 3: TIMER 0 Handler */ 209 TIMER1_Handler, /* 4: TIMER 1 Handler */ 210 TIMER2_Handler, /* 5: TIMER 2 Handler */ 211 0, /* 6: Reserved */ 212 0, /* 7: Reserved */ 213 0, /* 8: Reserved */ 214 MPC_Handler, /* 9: MPC Combined (Secure) Handler */ 215 PPC_Handler, /* 10: PPC Combined (Secure) Handler */ 216 MSC_Handler, /* 11: MSC Combined (Secure) Handler */ 217 BRIDGE_ERROR_Handler, /* 12: Bridge Error (Secure) Handler */ 218 0, /* 13: Reserved */ 219 MGMT_PPU_Handler, /* 14: MGMT PPU Handler */ 220 SYS_PPU_Handler, /* 15: SYS PPU Handler */ 221 CPU0_PPU_Handler, /* 16: CPU0 PPU Handler */ 222 0, /* 17: Reserved */ 223 0, /* 18: Reserved */ 224 0, /* 19: Reserved */ 225 0, /* 20: Reserved */ 226 0, /* 21: Reserved */ 227 0, /* 22: Reserved */ 228 0, /* 23: Reserved */ 229 0, /* 24: Reserved */ 230 0, /* 25: Reserved */ 231 DEBUG_PPU_Handler, /* 26: DEBUG PPU Handler */ 232 TIMER3_AON_Handler, /* 27: TIMER 3 AON Handler */ 233 CPU0_CTI_0_Handler, /* 28: CPU0 CTI IRQ 0 Handler */ 234 CPU0_CTI_1_Handler, /* 29: CPU0 CTI IRQ 1 Handler */ 235 0, /* 30: Reserved */ 236 0, /* 31: Reserved */ 237 238 /* External interrupts */ 239 System_Timestamp_Counter_Handler, /* 32: System timestamp counter Handler */ 240 UARTRX0_Handler, /* 33: UART 0 RX Handler */ 241 UARTTX0_Handler, /* 34: UART 0 TX Handler */ 242 UARTRX1_Handler, /* 35: UART 1 RX Handler */ 243 UARTTX1_Handler, /* 36: UART 1 TX Handler */ 244 UARTRX2_Handler, /* 37: UART 2 RX Handler */ 245 UARTTX2_Handler, /* 38: UART 2 TX Handler */ 246 UARTRX3_Handler, /* 39: UART 3 RX Handler */ 247 UARTTX3_Handler, /* 40: UART 3 TX Handler */ 248 UARTRX4_Handler, /* 41: UART 4 RX Handler */ 249 UARTTX4_Handler, /* 42: UART 4 TX Handler */ 250 UART0_Combined_Handler, /* 43: UART 0 Combined Handler */ 251 UART1_Combined_Handler, /* 44: UART 1 Combined Handler */ 252 UART2_Combined_Handler, /* 45: UART 2 Combined Handler */ 253 UART3_Combined_Handler, /* 46: UART 3 Combined Handler */ 254 UART4_Combined_Handler, /* 47: UART 4 Combined Handler */ 255 UARTOVF_Handler, /* 48: UART 0, 1, 2, 3, 4 & 5 Overflow Handler */ 256 ETHERNET_Handler, /* 49: Ethernet Handler */ 257 I2S_Handler, /* 50: Audio I2S Handler */ 258 TOUCH_SCREEN_Handler, /* 51: Touch Screen Handler */ 259 USB_Handler, /* 52: USB Handler */ 260 SPI_ADC_Handler, /* 53: SPI ADC Handler */ 261 SPI_SHIELD0_Handler, /* 54: SPI (Shield 0) Handler */ 262 SPI_SHIELD1_Handler, /* 55: SPI (Shield 0) Handler */ 263 ETHOS_U55_Handler, /* 56: Ethos-U55 Handler */ 264#ifdef CORSTONE300_AN547 265 0, /* 57: Reserved */ 266 0, /* 58: Reserved */ 267 0, /* 59: Reserved */ 268 DMA_Ch_1_Error_Handler, /* 60: DMA Ch1 Error Handler */ 269 DMA_Ch_1_Terminal_Count_Handler, /* 61: DMA Ch1 Terminal Count Handler */ 270 DMA_Ch_1_Combined_Handler, /* 62: DMA Ch1 Combined Handler */ 271 DMA_Ch_2_Error_Handler, /* 63: DMA Ch2 Error Handler */ 272 DMA_Ch_2_Terminal_Count_Handler, /* 64: DMA Ch2 Terminal Count Handler */ 273 DMA_Ch_2_Combined_Handler, /* 65: DMA Ch2 Combined Handler */ 274 DMA_Ch_3_Error_Handler, /* 66: DMA Ch3 Error Handler */ 275 DMA_Ch_3_Terminal_Count_Handler, /* 67: DMA Ch3 Terminal Count Handler */ 276 DMA_Ch_3_Combined_Handler, /* 68: DMA Ch3 Combined Handler */ 277#else 278 0, /* 57: Reserved */ 279 0, /* 58: Reserved */ 280 0, /* 59: Reserved */ 281 0, /* 60: Reserved */ 282 0, /* 61: Reserved */ 283 0, /* 62: Reserved */ 284 0, /* 63: Reserved */ 285 0, /* 64: Reserved */ 286 0, /* 65: Reserved */ 287 0, /* 66: Reserved */ 288 0, /* 67: Reserved */ 289 0, /* 68: Reserved */ 290#endif 291 GPIO0_Combined_Handler, /* 69: GPIO 0 Combined Handler */ 292 GPIO1_Combined_Handler, /* 70: GPIO 1 Combined Handler */ 293 GPIO2_Combined_Handler, /* 71: GPIO 2 Combined Handler */ 294 GPIO3_Combined_Handler, /* 72: GPIO 3 Combined Handler */ 295 GPIO0_0_Handler, /* 73: GPIO0 Pin 0 Handler */ 296 GPIO0_1_Handler, /* 74: GPIO0 Pin 1 Handler */ 297 GPIO0_2_Handler, /* 75: GPIO0 Pin 2 Handler */ 298 GPIO0_3_Handler, /* 76: GPIO0 Pin 3 Handler */ 299 GPIO0_4_Handler, /* 77: GPIO0 Pin 4 Handler */ 300 GPIO0_5_Handler, /* 78: GPIO0 Pin 5 Handler */ 301 GPIO0_6_Handler, /* 79: GPIO0 Pin 6 Handler */ 302 GPIO0_7_Handler, /* 80: GPIO0 Pin 7 Handler */ 303 GPIO0_8_Handler, /* 81: GPIO0 Pin 8 Handler */ 304 GPIO0_9_Handler, /* 82: GPIO0 Pin 9 Handler */ 305 GPIO0_10_Handler, /* 83: GPIO0 Pin 10 Handler */ 306 GPIO0_11_Handler, /* 84: GPIO0 Pin 11 Handler */ 307 GPIO0_12_Handler, /* 85: GPIO0 Pin 12 Handler */ 308 GPIO0_13_Handler, /* 86: GPIO0 Pin 13 Handler */ 309 GPIO0_14_Handler, /* 87: GPIO0 Pin 14 Handler */ 310 GPIO0_15_Handler, /* 88: GPIO0 Pin 15 Handler */ 311 GPIO1_0_Handler, /* 89: GPIO1 Pin 0 Handler */ 312 GPIO1_1_Handler, /* 90: GPIO1 Pin 1 Handler */ 313 GPIO1_2_Handler, /* 91: GPIO1 Pin 2 Handler */ 314 GPIO1_3_Handler, /* 92: GPIO1 Pin 3 Handler */ 315 GPIO1_4_Handler, /* 93: GPIO1 Pin 4 Handler */ 316 GPIO1_5_Handler, /* 94: GPIO1 Pin 5 Handler */ 317 GPIO1_6_Handler, /* 95: GPIO1 Pin 6 Handler */ 318 GPIO1_7_Handler, /* 96: GPIO1 Pin 7 Handler */ 319 GPIO1_8_Handler, /* 97: GPIO1 Pin 8 Handler */ 320 GPIO1_9_Handler, /* 98: GPIO1 Pin 9 Handler */ 321 GPIO1_10_Handler, /* 99: GPIO1 Pin 10 Handler */ 322 GPIO1_11_Handler, /* 100: GPIO1 Pin 11 Handler */ 323 GPIO1_12_Handler, /* 101: GPIO1 Pin 12 Handler */ 324 GPIO1_13_Handler, /* 102: GPIO1 Pin 13 Handler */ 325 GPIO1_14_Handler, /* 103: GPIO1 Pin 14 Handler */ 326 GPIO1_15_Handler, /* 104: GPIO1 Pin 15 Handler */ 327 GPIO2_0_Handler, /* 105: GPIO2 Pin 0 Handler */ 328 GPIO2_1_Handler, /* 106: GPIO2 Pin 1 Handler */ 329 GPIO2_2_Handler, /* 107: GPIO2 Pin 2 Handler */ 330 GPIO2_3_Handler, /* 108: GPIO2 Pin 3 Handler */ 331 GPIO2_4_Handler, /* 109: GPIO2 Pin 4 Handler */ 332 GPIO2_5_Handler, /* 110: GPIO2 Pin 5 Handler */ 333 GPIO2_6_Handler, /* 111: GPIO2 Pin 6 Handler */ 334 GPIO2_7_Handler, /* 112: GPIO2 Pin 7 Handler */ 335 GPIO2_8_Handler, /* 113: GPIO2 Pin 8 Handler */ 336 GPIO2_9_Handler, /* 114: GPIO2 Pin 9 Handler */ 337 GPIO2_10_Handler, /* 115: GPIO2 Pin 10 Handler */ 338 GPIO2_11_Handler, /* 116: GPIO2 Pin 11 Handler */ 339 GPIO2_12_Handler, /* 117: GPIO2 Pin 12 Handler */ 340 GPIO2_13_Handler, /* 118: GPIO2 Pin 13 Handler */ 341 GPIO2_14_Handler, /* 119: GPIO2 Pin 14 Handler */ 342 GPIO2_15_Handler, /* 120: GPIO2 Pin 15 Handler */ 343 GPIO3_0_Handler, /* 121: GPIO3 Pin 0 Handler */ 344 GPIO3_1_Handler, /* 122: GPIO3 Pin 1 Handler */ 345 GPIO3_2_Handler, /* 123: GPIO3 Pin 2 Handler */ 346 GPIO3_3_Handler, /* 124: GPIO3 Pin 3 Handler */ 347 UARTRX5_Handler, /* 125: UART 5 RX Interrupt */ 348 UARTTX5_Handler, /* 126: UART 5 TX Interrupt */ 349 UART5_Handler, /* 127: UART 5 combined Interrupt */ 350 0, /* 128: Reserved */ 351 0, /* 129: Reserved */ 352 0, /* 130: Reserved */ 353}; 354 355#if defined ( __GNUC__ ) 356#pragma GCC diagnostic pop 357#endif 358 359/*---------------------------------------------------------------------------- 360 Reset Handler called on controller reset 361 *----------------------------------------------------------------------------*/ 362void Reset_Handler(void) 363{ 364 __set_PSP((uint32_t)(&__INITIAL_SP)); 365 366 __set_MSPLIM((uint32_t)(&__STACK_LIMIT)); 367 __set_PSPLIM((uint32_t)(&__STACK_LIMIT)); 368 369#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) 370 __TZ_set_STACKSEAL_S((uint32_t *)(&__STACK_SEAL)); 371#endif 372 373 SystemInit(); /* CMSIS System Initialization */ 374 __PROGRAM_START(); /* Enter PreMain (C library entry point) */ 375} 376