mirror of
https://github.com/zephyrproject-rtos/zephyr
synced 2025-09-11 07:52:39 +00:00
Update reserved function names starting with one underscore, replacing them as follows: '_k_' with 'z_' '_K_' with 'Z_' '_handler_' with 'z_handl_' '_Cstart' with 'z_cstart' '_Swap' with 'z_swap' This renaming is done on both global and those static function names in kernel/include and include/. Other static function names in kernel/ are renamed by removing the leading underscore. Other function names not starting with any prefix listed above are renamed starting with a 'z_' or 'Z_' prefix. Function names starting with two or three leading underscores are not automatcally renamed since these names will collide with the variants with two or three leading underscores. Various generator scripts have also been updated as well as perf, linker and usb files. These are drivers/serial/uart_handlers.c include/linker/kobject-text.ld kernel/include/syscall_handler.h scripts/gen_kobject_list.py scripts/gen_syscall_header.py Signed-off-by: Patrik Flykt <patrik.flykt@intel.com>
93 lines
2.3 KiB
C
93 lines
2.3 KiB
C
/*
|
|
* Copyright (c) 2014 Wind River Systems, Inc.
|
|
*
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
|
|
/**
|
|
* @file
|
|
* @brief Fatal fault handling
|
|
*
|
|
* This module implements the routines necessary for handling fatal faults on
|
|
* ARCv2 CPUs.
|
|
*/
|
|
|
|
#include <kernel_structs.h>
|
|
#include <offsets_short.h>
|
|
#include <toolchain.h>
|
|
#include <arch/cpu.h>
|
|
#include <misc/printk.h>
|
|
#include <logging/log_ctrl.h>
|
|
|
|
/**
|
|
*
|
|
* @brief Kernel fatal error handler
|
|
*
|
|
* This routine is called when fatal error conditions are detected by software
|
|
* and is responsible only for reporting the error. Once reported, it then
|
|
* invokes the user provided routine z_SysFatalErrorHandler() which is
|
|
* responsible for implementing the error handling policy.
|
|
*
|
|
* The caller is expected to always provide a usable ESF. In the event that the
|
|
* fatal error does not have a hardware generated ESF, the caller should either
|
|
* create its own or use a pointer to the global default ESF <_default_esf>.
|
|
*
|
|
* @return This function does not return.
|
|
*/
|
|
void z_NanoFatalErrorHandler(unsigned int reason, const NANO_ESF *pEsf)
|
|
{
|
|
LOG_PANIC();
|
|
|
|
switch (reason) {
|
|
case _NANO_ERR_HW_EXCEPTION:
|
|
break;
|
|
|
|
#if defined(CONFIG_STACK_CANARIES) || defined(CONFIG_ARC_STACK_CHECKING) \
|
|
|| defined(CONFIG_STACK_SENTINEL)
|
|
case _NANO_ERR_STACK_CHK_FAIL:
|
|
printk("***** Stack Check Fail! *****\n");
|
|
break;
|
|
#endif
|
|
|
|
case _NANO_ERR_ALLOCATION_FAIL:
|
|
printk("**** Kernel Allocation Failure! ****\n");
|
|
break;
|
|
|
|
case _NANO_ERR_KERNEL_OOPS:
|
|
printk("***** Kernel OOPS! *****\n");
|
|
break;
|
|
|
|
case _NANO_ERR_KERNEL_PANIC:
|
|
printk("***** Kernel Panic! *****\n");
|
|
break;
|
|
|
|
default:
|
|
printk("**** Unknown Fatal Error %d! ****\n", reason);
|
|
break;
|
|
}
|
|
|
|
printk("Current thread ID = %p\n", k_current_get());
|
|
|
|
if (reason == _NANO_ERR_HW_EXCEPTION) {
|
|
printk("Faulting instruction address = 0x%lx\n",
|
|
z_arc_v2_aux_reg_read(_ARC_V2_ERET));
|
|
}
|
|
|
|
/*
|
|
* Now that the error has been reported, call the user implemented
|
|
* policy
|
|
* to respond to the error. The decisions as to what responses are
|
|
* appropriate to the various errors are something the customer must
|
|
* decide.
|
|
*/
|
|
|
|
z_SysFatalErrorHandler(reason, pEsf);
|
|
}
|
|
|
|
FUNC_NORETURN void z_arch_syscall_oops(void *ssf_ptr)
|
|
{
|
|
LOG_PANIC();
|
|
z_SysFatalErrorHandler(_NANO_ERR_KERNEL_OOPS, ssf_ptr);
|
|
CODE_UNREACHABLE;
|
|
}
|