Mistake on this page?
Report an issue in GitHub or email us
fault_functions.h
1 /* Copyright (c) 2017-2018 ARM Limited
2  *
3  * SPDX-License-Identifier: Apache-2.0
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  */
17 
18 #ifndef __MBED_HAL_SPM_FAULT_FUNCTIONS__
19 #define __MBED_HAL_SPM_FAULT_FUNCTIONS__
20 
21 #include "cmsis_compiler.h"
22 
23 #ifdef __cplusplus
24 extern "C" {
25 #endif
26 
27 // Retruns the value of the LR register
28 // Used to determine which stack the exception happend in
29 __STATIC_FORCEINLINE uint32_t __get_LR(void);
30 
31 // This function is required as we need a symbol/address
32 // to jump to from fault handler.
33 void do_nothing(void);
34 
35 // Test exception handler
36 static void hard_fault_handler_test();
37 
38 // Using naked function as it will not be executed from beginning to the end.
39 // The execution flow expected to be interrupted by exception and we will
40 // return to other function.
41 // compiler will not produce prolog and epilog code for naked function
42 // and thus will preserve stack in un-corrupted state
43 __attribute__((naked)) void call_mem(uint32_t addr);
44 
45 #ifdef __cplusplus
46 }
47 #endif
48 
49 #endif // __MBED_HAL_SPM_FAULT_FUNCTIONS__
Important Information for this Arm website

This site uses cookies to store information on your computer. By continuing to use our site, you consent to our cookies. If you are not happy with the use of these cookies, please review our Cookie Policy to learn how they can be disabled. By disabling cookies, some features of the site will not work.