1 /* 2 * Copyright (c) 2022-2024, Arm Limited. All rights reserved. 3 * 4 * SPDX-License-Identifier: BSD-3-Clause 5 * 6 */ 7 8 #include "tfm_hal_device_header.h" 9 tfm_hal_get_reset_syndrome(void)10uint32_t tfm_hal_get_reset_syndrome(void) 11 { 12 struct rse_sysctrl_t *sysctrl = (struct rse_sysctrl_t *)RSE_SYSCTRL_BASE_S; 13 14 return sysctrl->reset_syndrome; 15 } 16 tfm_hal_clear_reset_syndrome_bit(uint8_t bit_pos)17void tfm_hal_clear_reset_syndrome_bit(uint8_t bit_pos) 18 { 19 struct rse_sysctrl_t *sysctrl = (struct rse_sysctrl_t *)RSE_SYSCTRL_BASE_S; 20 21 sysctrl->reset_syndrome &= ~(1 << bit_pos); 22 } 23 tfm_hal_system_reset(void)24__NO_RETURN void tfm_hal_system_reset(void) 25 { 26 struct rse_sysctrl_t *rse_sysctrl = (void *)RSE_SYSCTRL_BASE_S; 27 28 __DSB(); 29 rse_sysctrl->swreset = 0x1u << 5; 30 __DSB(); 31 32 while(1) { 33 __NOP(); 34 } 35 } 36 tfm_hal_system_halt(void)37__NO_RETURN void tfm_hal_system_halt(void) 38 { 39 /* 40 * Disable IRQs to stop all threads, not just the thread that 41 * halted the system. 42 */ 43 __disable_irq(); 44 45 /* 46 * Enter sleep to reduce power consumption and do it in a loop in 47 * case a signal wakes up the CPU. 48 */ 49 while (1) { 50 __WFE(); 51 } 52 } 53