You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
53 lines
1.1 KiB
53 lines
1.1 KiB
/* |
|
* Copyright (c) 2014 Wind River Systems, Inc. |
|
* |
|
* SPDX-License-Identifier: Apache-2.0 |
|
*/ |
|
|
|
/** |
|
* @file |
|
* @brief Full C support initialization |
|
* |
|
* |
|
* Initialization of full C support: zero the .bss, copy the .data if XIP, |
|
* call _Cstart(). |
|
* |
|
* Stack is available in this module, but not the global data/bss until their |
|
* initialization is performed. |
|
*/ |
|
|
|
#include <zephyr/types.h> |
|
#include <toolchain.h> |
|
#include <linker/linker-defs.h> |
|
#include <kernel_structs.h> |
|
#include <nano_internal.h> |
|
|
|
/** |
|
* |
|
* @brief Prepare to and run C code |
|
* |
|
* This routine prepares for the execution of and runs C code. |
|
* |
|
* @return N/A |
|
*/ |
|
|
|
void _PrepC(void) |
|
{ |
|
_bss_zero(); |
|
#ifdef CONFIG_XIP |
|
_data_copy(); |
|
/* In most XIP scenarios we copy the exception code into RAM, so need |
|
* to flush instruction cache. |
|
*/ |
|
_nios2_icache_flush_all(); |
|
#if ALT_CPU_ICACHE_SIZE > 0 |
|
/* Only need to flush the data cache here if there actually is an |
|
* instruction cache, so that the cached instruction data written is |
|
* actually committed. |
|
*/ |
|
_nios2_dcache_flush_all(); |
|
#endif |
|
#endif |
|
_Cstart(); |
|
CODE_UNREACHABLE; |
|
}
|
|
|